Commit 76c00128 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

media: i2c: imx290: Simplify imx290_set_data_lanes()



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: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 7d399658
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -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;