[PATCH v2 3/5] media: rockchip: rkcif: add a callback for the MIPI ID_CTRL1 register
Michael Riesch
michael.riesch at collabora.com
Thu Oct 1 08:27:10 PDT 2026
Hi Amin,
Thanks for the patch!
On 9/21/26 17:29, Amin Gattout wrote:
> The contents of the MIPI ID_CTRL1 register differ between variants. The
> RK3568 and RK3588 hold the capture size there, while the RK3576 uses it
> for the virtual channel and data type filter.
>
> Let each variant provide a callback that builds the register value, in
> preparation for the RK3576 support. Variants that do not provide one
> keep writing the capture size, so their behavior is unchanged.
>
> Signed-off-by: Amin Gattout <amin.gattout at gmail.com>
Reviewed-by: Michael Riesch <michael.riesch at collabora.com>
Best regards,
Michael
> ---
> drivers/media/platform/rockchip/rkcif/rkcif-capture-mipi.c | 5 ++++-
> drivers/media/platform/rockchip/rkcif/rkcif-common.h | 2 ++
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/rockchip/rkcif/rkcif-capture-mipi.c b/drivers/media/platform/rockchip/rkcif/rkcif-capture-mipi.c
> index e0acb9049ca1..432f47a1fc23 100644
> --- a/drivers/media/platform/rockchip/rkcif/rkcif-capture-mipi.c
> +++ b/drivers/media/platform/rockchip/rkcif/rkcif-capture-mipi.c
> @@ -749,7 +749,10 @@ static int rkcif_mipi_start_streaming(struct rkcif_stream *stream)
> if (match_data->mipi_ctrl0)
> ctrl0 = match_data->mipi_ctrl0(stream, active_out_fmt);
>
> - ctrl1 = RKCIF_XY_COORD(width, height);
> + if (match_data->mipi_ctrl1)
> + ctrl1 = match_data->mipi_ctrl1(stream, active_out_fmt);
> + else
> + ctrl1 = RKCIF_XY_COORD(width, height);
>
> int_mask |= RKCIF_MIPI_INT_FRAME0_END(stream->id);
> int_mask |= RKCIF_MIPI_INT_FRAME1_END(stream->id);
> diff --git a/drivers/media/platform/rockchip/rkcif/rkcif-common.h b/drivers/media/platform/rockchip/rkcif/rkcif-common.h
> index 4d9211ba9bda..f83c8099b78e 100644
> --- a/drivers/media/platform/rockchip/rkcif/rkcif-common.h
> +++ b/drivers/media/platform/rockchip/rkcif/rkcif-common.h
> @@ -207,6 +207,8 @@ struct rkcif_mipi_match_data {
> unsigned int regs_id[RKCIF_ID_MAX][RKCIF_MIPI_ID_REGISTER_MAX];
> u32 (*mipi_ctrl0)(struct rkcif_stream *stream,
> const struct rkcif_output_fmt *active_out_fmt);
> + u32 (*mipi_ctrl1)(struct rkcif_stream *stream,
> + const struct rkcif_output_fmt *active_out_fmt);
> struct {
> unsigned int offset;
> } blocks[RKCIF_MIPI_MAX - RKCIF_MIPI_BASE];
>
More information about the Linux-rockchip
mailing list