diff --git a/drivers/media/spi/rk1608_core.c b/drivers/media/spi/rk1608_core.c index f19188bdc22b..f56283ef6dd0 100644 --- a/drivers/media/spi/rk1608_core.c +++ b/drivers/media/spi/rk1608_core.c @@ -656,7 +656,7 @@ static int rk1608_msg_set_output_size(struct rk1608_state *pdata, msg->head.mipi_clk = 2 * pdata->dphy[id]->link_freqs; msg->head.line_length_pclk = fmt_inf->htotal; msg->head.frame_length_lines = fmt_inf->vtotal; - msg->head.mipi_lane = fmt_inf->mipi_lane; + msg->head.mipi_lane = fmt_inf->mipi_lane_out; msg->head.flip = pdata->flip; return rk1608_send_msg_to_dsp(pdata, &msg->head.msg_head); diff --git a/drivers/media/spi/rk1608_dphy.c b/drivers/media/spi/rk1608_dphy.c index 4d8616317bb2..9b302ba1c522 100644 --- a/drivers/media/spi/rk1608_dphy.c +++ b/drivers/media/spi/rk1608_dphy.c @@ -257,7 +257,7 @@ static int rk1608_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id, struct rk1608_dphy *pdata = to_state(sd); u32 val = 0; - val = 1 << (pdata->fmt_inf[pdata->fmt_inf_idx].mipi_lane - 1) | + val = 1 << (pdata->fmt_inf[pdata->fmt_inf_idx].mipi_lane_out - 1) | V4L2_MBUS_CSI2_CHANNEL_0 | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; @@ -638,6 +638,11 @@ static int rk1608_dphy_dt_property(struct rk1608_dphy *dphy) if (ret) dev_warn(dphy->dev, "Can not get mipi_lane!"); + ret = of_property_read_u32(node, "mipi_lane_out", + &dphy->fmt_inf[idx].mipi_lane_out); + if (ret) + dev_warn(dphy->dev, "Can not get mipi_lane_out!"); + ret = of_property_read_u32(node, "field", &dphy->fmt_inf[idx].mf.field); if (ret) diff --git a/drivers/media/spi/rk1608_dphy.h b/drivers/media/spi/rk1608_dphy.h index 00af9b1127f5..e5dc7d38df9b 100644 --- a/drivers/media/spi/rk1608_dphy.h +++ b/drivers/media/spi/rk1608_dphy.h @@ -16,6 +16,7 @@ struct rk1608_chinf { struct rk1608_fmt_inf { u32 data_type; u32 mipi_lane; + u32 mipi_lane_out; u32 hactive; u32 vactive; u32 htotal;