media: i2c: adv748x: Implement get_mbus_config
authorJacopo Mondi <jacopo+renesas@jmondi.org>
Fri, 17 Jul 2020 14:53:23 +0000 (16:53 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 18 Aug 2020 13:52:34 +0000 (15:52 +0200)
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: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/adv748x/adv748x-csi2.c

index 2091cda..99bb63d 100644 (file)
@@ -214,9 +214,40 @@ unlock:
        return ret;
 }
 
+static int adv748x_csi2_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad,
+                                       struct v4l2_mbus_config *config)
+{
+       struct adv748x_csi2 *tx = adv748x_sd_to_csi2(sd);
+
+       if (pad != ADV748X_CSI2_SOURCE)
+               return -EINVAL;
+
+       config->type = V4L2_MBUS_CSI2_DPHY;
+       switch (tx->active_lanes) {
+       case 1:
+               config->flags = V4L2_MBUS_CSI2_1_LANE;
+               break;
+
+       case 2:
+               config->flags = V4L2_MBUS_CSI2_2_LANE;
+               break;
+
+       case 3:
+               config->flags = V4L2_MBUS_CSI2_3_LANE;
+               break;
+
+       case 4:
+               config->flags = V4L2_MBUS_CSI2_4_LANE;
+               break;
+       }
+
+       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,
 };
 
 /* -----------------------------------------------------------------------------