From 1c88396a54f832e717b64c6bc27d75d1e357f0c5 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 6 Dec 2021 20:47:47 +0200 Subject: libcamera: media_device: Skip all non-data links during enumeration The MediaDevice::populateLinks() function iterates over data links by skipping interface links. This isn't very future-proof, it will break if the kernel adds new types of links. Fix it by only considering data links instead of blacklisting interface links. Signed-off-by: Laurent Pinchart Tested-by: Jean-Michel Hautbois Reviewed-by: Jean-Michel Hautbois Reviewed-by: Kieran Bingham --- src/libcamera/media_device.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp index 4df0a27f..0b794018 100644 --- a/src/libcamera/media_device.cpp +++ b/src/libcamera/media_device.cpp @@ -695,12 +695,9 @@ bool MediaDevice::populateLinks(const struct media_v2_topology &topology) (topology.ptr_links); for (unsigned int i = 0; i < topology.num_links; ++i) { - /* - * Skip links between entities and interfaces: we only care - * about pad-2-pad links here. - */ - if ((mediaLinks[i].flags & MEDIA_LNK_FL_LINK_TYPE) == - MEDIA_LNK_FL_INTERFACE_LINK) + /* We only care about pad-2-pad links here. */ + if ((mediaLinks[i].flags & MEDIA_LNK_FL_LINK_TYPE) != + MEDIA_LNK_FL_DATA_LINK) continue; /* Store references to source and sink pads in the link. */ -- cgit v1.2.1