media: i2c: imx290: Simplify imx290_set_data_lanes()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 16 Jan 2023 14:44:53 +0000 (15:44 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 3 Feb 2023 14:05:50 +0000 (15:05 +0100)
There's no need to check for an incorrect number of data lanes in
imx290_set_data_lanes() as the value is validated at probe() time. Drop
the check.

The PHY_LANE_NUM and CSI_LANE_MODE registers are programmed with a value
equal to the number of lanes minus one. Compute it instead of handling
it in the switch/case.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/i2c/imx290.c

index 34278d0..bb87138 100644 (file)
@@ -512,28 +512,21 @@ static int imx290_set_register_array(struct imx290 *imx290,
 
 static int imx290_set_data_lanes(struct imx290 *imx290)
 {
-       int ret = 0, laneval, frsel;
+       int ret = 0;
+       u32 frsel;
 
        switch (imx290->nlanes) {
        case 2:
-               laneval = 0x01;
+       default:
                frsel = 0x02;
                break;
        case 4:
-               laneval = 0x03;
                frsel = 0x01;
                break;
-       default:
-               /*
-                * We should never hit this since the data lane count is
-                * validated in probe itself
-                */
-               dev_err(imx290->dev, "Lane configuration not supported\n");
-               return -EINVAL;
        }
 
-       imx290_write(imx290, IMX290_PHY_LANE_NUM, laneval, &ret);
-       imx290_write(imx290, IMX290_CSI_LANE_MODE, laneval, &ret);
+       imx290_write(imx290, IMX290_PHY_LANE_NUM, imx290->nlanes - 1, &ret);
+       imx290_write(imx290, IMX290_CSI_LANE_MODE, imx290->nlanes - 1, &ret);
        imx290_write(imx290, IMX290_FR_FDG_SEL, frsel, &ret);
 
        return ret;