Message ID | 20240906173947.282402-2-prabhakar.mahadev-lad.rj@bp.renesas.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Kieran Bingham |
Headers | show |
Series | media: platform: rzg2l-cru: CSI-2 and CRU enhancements | expand |
Hi Prabhakar, Thank you for the patch. On Fri, Sep 06, 2024 at 06:39:45PM +0100, Prabhakar wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > The RZ/G2L CRU requires information about which VCx to process data from, > among the four available VCs. To obtain this information, the > .get_frame_desc() routine is implemented. This routine, in turn, calls > .get_frame_desc() on the remote sensor connected to the CSI2 bridge. > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > --- > .../media/platform/renesas/rzg2l-cru/rzg2l-csi2.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c > index c7fdee347ac8..a7e4a0c109da 100644 > --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c > +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c > @@ -582,6 +582,17 @@ static int rzg2l_csi2_enum_frame_size(struct v4l2_subdev *sd, > return 0; > } > > +static int rzg2l_csi2_get_frame_desc(struct v4l2_subdev *sd, unsigned int pad, > + struct v4l2_mbus_frame_desc *fd) > +{ > + struct rzg2l_csi2 *csi2 = sd_to_csi2(sd); > + > + if (!csi2->remote_source) > + return -EINVAL; Maybe -ENODEV ? > + > + return v4l2_subdev_call(csi2->remote_source, pad, get_frame_desc, pad, fd); > +} > + I wonder if we should implement a wrapper around .get_frame_desc() that would automatically forward the call to the source if .get_frame_desc() isn't implemented by a subdev. That's not a requirement for this series, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > static const struct v4l2_subdev_video_ops rzg2l_csi2_video_ops = { > .s_stream = rzg2l_csi2_s_stream, > .pre_streamon = rzg2l_csi2_pre_streamon, > @@ -593,6 +604,7 @@ static const struct v4l2_subdev_pad_ops rzg2l_csi2_pad_ops = { > .enum_frame_size = rzg2l_csi2_enum_frame_size, > .set_fmt = rzg2l_csi2_set_format, > .get_fmt = v4l2_subdev_get_fmt, > + .get_frame_desc = rzg2l_csi2_get_frame_desc, > }; > > static const struct v4l2_subdev_ops rzg2l_csi2_subdev_ops = {
Hi Laurent, Thank you for the review. On Fri, Sep 6, 2024 at 11:38 PM Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > Hi Prabhakar, > > Thank you for the patch. > > On Fri, Sep 06, 2024 at 06:39:45PM +0100, Prabhakar wrote: > > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > > > The RZ/G2L CRU requires information about which VCx to process data from, > > among the four available VCs. To obtain this information, the > > .get_frame_desc() routine is implemented. This routine, in turn, calls > > .get_frame_desc() on the remote sensor connected to the CSI2 bridge. > > > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > --- > > .../media/platform/renesas/rzg2l-cru/rzg2l-csi2.c | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c > > index c7fdee347ac8..a7e4a0c109da 100644 > > --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c > > +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c > > @@ -582,6 +582,17 @@ static int rzg2l_csi2_enum_frame_size(struct v4l2_subdev *sd, > > return 0; > > } > > > > +static int rzg2l_csi2_get_frame_desc(struct v4l2_subdev *sd, unsigned int pad, > > + struct v4l2_mbus_frame_desc *fd) > > +{ > > + struct rzg2l_csi2 *csi2 = sd_to_csi2(sd); > > + > > + if (!csi2->remote_source) > > + return -EINVAL; > > Maybe -ENODEV ? > Agreed. > > + > > + return v4l2_subdev_call(csi2->remote_source, pad, get_frame_desc, pad, fd); > > +} > > + > > I wonder if we should implement a wrapper around .get_frame_desc() that > would automatically forward the call to the source if .get_frame_desc() > isn't implemented by a subdev. That's not a requirement for this series, > That would be helpful. > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > static const struct v4l2_subdev_video_ops rzg2l_csi2_video_ops = { > > .s_stream = rzg2l_csi2_s_stream, > > .pre_streamon = rzg2l_csi2_pre_streamon, > > @@ -593,6 +604,7 @@ static const struct v4l2_subdev_pad_ops rzg2l_csi2_pad_ops = { > > .enum_frame_size = rzg2l_csi2_enum_frame_size, > > .set_fmt = rzg2l_csi2_set_format, > > .get_fmt = v4l2_subdev_get_fmt, > > + .get_frame_desc = rzg2l_csi2_get_frame_desc, > > }; > > > > static const struct v4l2_subdev_ops rzg2l_csi2_subdev_ops = { > Cheers, Prabhakar
diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c index c7fdee347ac8..a7e4a0c109da 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c @@ -582,6 +582,17 @@ static int rzg2l_csi2_enum_frame_size(struct v4l2_subdev *sd, return 0; } +static int rzg2l_csi2_get_frame_desc(struct v4l2_subdev *sd, unsigned int pad, + struct v4l2_mbus_frame_desc *fd) +{ + struct rzg2l_csi2 *csi2 = sd_to_csi2(sd); + + if (!csi2->remote_source) + return -EINVAL; + + return v4l2_subdev_call(csi2->remote_source, pad, get_frame_desc, pad, fd); +} + static const struct v4l2_subdev_video_ops rzg2l_csi2_video_ops = { .s_stream = rzg2l_csi2_s_stream, .pre_streamon = rzg2l_csi2_pre_streamon, @@ -593,6 +604,7 @@ static const struct v4l2_subdev_pad_ops rzg2l_csi2_pad_ops = { .enum_frame_size = rzg2l_csi2_enum_frame_size, .set_fmt = rzg2l_csi2_set_format, .get_fmt = v4l2_subdev_get_fmt, + .get_frame_desc = rzg2l_csi2_get_frame_desc, }; static const struct v4l2_subdev_ops rzg2l_csi2_subdev_ops = {