Message ID | 20250324-probe_fixes-v1-3-5cd5b9e1cfac@ideasonboard.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | media: ti, cdns: Multiple pixel support and misc fixes | expand |
On 24/03/25 17:31, Jai Luthra wrote: > We don't use OF ports and remote-endpoints to connect the CSI2RX bridge > and this device in the device tree, thus it is wrong to use > v4l2_create_fwnode_links_to_pad() to create the media graph link between > the two. > > It works out on accident, as neither the source nor the sink implement > the .get_fwnode_pad() callback, and the framework helper falls back on > using the first source and sink pads to create the link between them. > > Instead, manually create the media link from the first source pad of the > bridge to the first sink pad of the J721E CSI2RX. > > Fixes: b4a3d877dc92 ("media: ti: Add CSI2RX support for J721E") > Cc: stable@vger.kernel.org > Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com> Reviewed-by: Devarsh Thakkar <devarsht@ti.com> Regards Devarsh > --- > drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c > index 6d406925e092660cb67c04cc2a7e1e10c14e295e..ad51d033b6725426550578bdac1bae8443458f13 100644 > --- a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c > +++ b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c > @@ -53,6 +53,8 @@ > #define DRAIN_TIMEOUT_MS 50 > #define DRAIN_BUFFER_SIZE SZ_32K > > +#define CSI2RX_BRIDGE_SOURCE_PAD 1 > + > struct ti_csi2rx_fmt { > u32 fourcc; /* Four character code. */ > u32 code; /* Mbus code. */ > @@ -427,8 +429,9 @@ static int csi_async_notifier_complete(struct v4l2_async_notifier *notifier) > if (ret) > return ret; > > - ret = v4l2_create_fwnode_links_to_pad(csi->source, &csi->pad, > - MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); > + ret = media_create_pad_link(&csi->source->entity, CSI2RX_BRIDGE_SOURCE_PAD, > + &vdev->entity, csi->pad.index, > + MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); > > if (ret) { > video_unregister_device(vdev); >
diff --git a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c index 6d406925e092660cb67c04cc2a7e1e10c14e295e..ad51d033b6725426550578bdac1bae8443458f13 100644 --- a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c +++ b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c @@ -53,6 +53,8 @@ #define DRAIN_TIMEOUT_MS 50 #define DRAIN_BUFFER_SIZE SZ_32K +#define CSI2RX_BRIDGE_SOURCE_PAD 1 + struct ti_csi2rx_fmt { u32 fourcc; /* Four character code. */ u32 code; /* Mbus code. */ @@ -427,8 +429,9 @@ static int csi_async_notifier_complete(struct v4l2_async_notifier *notifier) if (ret) return ret; - ret = v4l2_create_fwnode_links_to_pad(csi->source, &csi->pad, - MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); + ret = media_create_pad_link(&csi->source->entity, CSI2RX_BRIDGE_SOURCE_PAD, + &vdev->entity, csi->pad.index, + MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); if (ret) { video_unregister_device(vdev);
We don't use OF ports and remote-endpoints to connect the CSI2RX bridge and this device in the device tree, thus it is wrong to use v4l2_create_fwnode_links_to_pad() to create the media graph link between the two. It works out on accident, as neither the source nor the sink implement the .get_fwnode_pad() callback, and the framework helper falls back on using the first source and sink pads to create the link between them. Instead, manually create the media link from the first source pad of the bridge to the first sink pad of the J721E CSI2RX. Fixes: b4a3d877dc92 ("media: ti: Add CSI2RX support for J721E") Cc: stable@vger.kernel.org Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com> --- drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)