Message ID | 20200415105004.2497356-6-jacopo+renesas@jmondi.org (mailing list archive) |
---|---|
State | New |
Delegated to: | Kieran Bingham |
Headers | show |
Series | v4l2-subdev: Introduce get_mbus_format pad op | expand |
Hi Jacopo, Thank you for the patch. On Wed, Apr 15, 2020 at 12:50:02PM +0200, Jacopo Mondi wrote: > Implement the newly introduced get_mbus_config operation to report the > number of currently used data lanes on the MIPI CSI-2 interface. > > Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > --- > drivers/media/i2c/adv748x/adv748x-csi2.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/media/i2c/adv748x/adv748x-csi2.c b/drivers/media/i2c/adv748x/adv748x-csi2.c > index 2091cda50935..f13563da3ff3 100644 > --- a/drivers/media/i2c/adv748x/adv748x-csi2.c > +++ b/drivers/media/i2c/adv748x/adv748x-csi2.c > @@ -214,9 +214,24 @@ static int adv748x_csi2_set_format(struct v4l2_subdev *sd, > return ret; > } > > +static int adv748x_csi2_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad, > + struct v4l2_mbus_pad_config *config) > +{ > + struct adv748x_csi2 *tx = adv748x_sd_to_csi2(sd); > + > + if (pad != ADV748X_CSI2_SOURCE) > + return -EINVAL; > + > + config->type = V4L2_MBUS_CSI2_DPHY; > + config->csi2_dphy.data_lanes = tx->active_lanes; > + > + return 0; This looks fine, but raises a few questions whose answers need to be documented in 1/6 I think. - Is the caller expected to zero the config struct ? - What are the allowed returned values for this operation, and under what circumstances ? These are generic questions for the API. For this patch, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > +} > + > static const struct v4l2_subdev_pad_ops adv748x_csi2_pad_ops = { > .get_fmt = adv748x_csi2_get_format, > .set_fmt = adv748x_csi2_set_format, > + .get_mbus_config = adv748x_csi2_get_mbus_config, > }; > > /* -----------------------------------------------------------------------------
diff --git a/drivers/media/i2c/adv748x/adv748x-csi2.c b/drivers/media/i2c/adv748x/adv748x-csi2.c index 2091cda50935..f13563da3ff3 100644 --- a/drivers/media/i2c/adv748x/adv748x-csi2.c +++ b/drivers/media/i2c/adv748x/adv748x-csi2.c @@ -214,9 +214,24 @@ static int adv748x_csi2_set_format(struct v4l2_subdev *sd, return ret; } +static int adv748x_csi2_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad, + struct v4l2_mbus_pad_config *config) +{ + struct adv748x_csi2 *tx = adv748x_sd_to_csi2(sd); + + if (pad != ADV748X_CSI2_SOURCE) + return -EINVAL; + + config->type = V4L2_MBUS_CSI2_DPHY; + config->csi2_dphy.data_lanes = tx->active_lanes; + + return 0; +} + static const struct v4l2_subdev_pad_ops adv748x_csi2_pad_ops = { .get_fmt = adv748x_csi2_get_format, .set_fmt = adv748x_csi2_set_format, + .get_mbus_config = adv748x_csi2_get_mbus_config, }; /* -----------------------------------------------------------------------------