The TC358743 does not support reordering lanes, or more than 4 data lanes. Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> --- drivers/media/i2c/tc358743.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c index a35043cefe128..b7285e45b908a 100644 --- a/drivers/media/i2c/tc358743.c +++ b/drivers/media/i2c/tc358743.c @@ -1743,6 +1743,7 @@ static int tc358743_probe_of(struct tc358743_state *state) struct clk *refclk; u32 bps_pr_lane; int ret = -EINVAL; + int i; refclk = devm_clk_get(dev, "refclk"); if (IS_ERR(refclk)) { @@ -1771,6 +1772,21 @@ static int tc358743_probe_of(struct tc358743_state *state) goto free_endpoint; } + if (endpoint->bus.mipi_csi2.num_data_lanes > 4) { + dev_err(dev, "invalid number of lanes\n"); + goto free_endpoint; + } + + for (i = 0; i < endpoint->bus.mipi_csi2.num_data_lanes; i++) { + if (endpoint->bus.mipi_csi2.data_lanes[i] != i + 1) + break; + } + if (i != endpoint->bus.mipi_csi2.num_data_lanes || + endpoint->bus.mipi_csi2.clock_lane != 0) { + dev_err(dev, "invalid lane order\n"); + goto free_endpoint; + } + state->bus = endpoint->bus.mipi_csi2; ret = clk_prepare_enable(refclk); -- 2.11.0