media: video-mux: Skip dangling endpoints
authorPhilipp Zabel <p.zabel@pengutronix.de>
Mon, 22 Mar 2021 14:44:08 +0000 (15:44 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 28 Jun 2021 13:17:42 +0000 (15:17 +0200)
i.MX6 device tree include files contain dangling endpoints for the
board device tree writers' convenience. These are still included in
many existing device trees.
Treat dangling endpoints as non-existent to support them.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: 612b385efb1e ("media: video-mux: Create media links in bound notifier")
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/video-mux.c

index f7e2a5e..905005e 100644 (file)
@@ -364,7 +364,7 @@ static int video_mux_async_register(struct video_mux *vmux,
 
        for (i = 0; i < num_input_pads; i++) {
                struct v4l2_async_subdev *asd;
-               struct fwnode_handle *ep;
+               struct fwnode_handle *ep, *remote_ep;
 
                ep = fwnode_graph_get_endpoint_by_id(
                        dev_fwnode(vmux->subdev.dev), i, 0,
@@ -372,6 +372,14 @@ static int video_mux_async_register(struct video_mux *vmux,
                if (!ep)
                        continue;
 
+               /* Skip dangling endpoints for backwards compatibility */
+               remote_ep = fwnode_graph_get_remote_endpoint(ep);
+               if (!remote_ep) {
+                       fwnode_handle_put(ep);
+                       continue;
+               }
+               fwnode_handle_put(remote_ep);
+
                asd = v4l2_async_notifier_add_fwnode_remote_subdev(
                        &vmux->notifier, ep, struct v4l2_async_subdev);