From 9bd09ac33f4de6729f0701b8ff20faa0acbf1f68 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Tue, 25 Feb 2025 15:51:57 +0800 Subject: [PATCH] media: rockchip: vicap: fixes error data type of rgb888 for rk3576 Change-Id: I3fe6c6a4a35247494085d70bb2ab7dfdd1f8fc03 Signed-off-by: Zefa Chen --- drivers/media/platform/rockchip/cif/capture.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 991913018228..84fef53a5c57 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -3796,9 +3796,10 @@ static void rkcif_csi_set_lvds_sav_eav(struct rkcif_stream *stream, } } -static unsigned char get_csi_fmt_val(const struct cif_input_fmt *cif_fmt_in, +static unsigned char get_csi_fmt_val(struct rkcif_stream *stream, struct csi_channel_info *csi_info) { + const struct cif_input_fmt *cif_fmt_in = stream->cif_fmt_in; unsigned char csi_fmt_val = 0; if (cif_fmt_in->mbus_code == MEDIA_BUS_FMT_SPD_2X8 || @@ -3817,8 +3818,9 @@ static unsigned char get_csi_fmt_val(const struct cif_input_fmt *cif_fmt_in, csi_fmt_val = CSI_WRDDR_TYPE_RAW12; break; } - } else if (cif_fmt_in->csi_fmt_val == CSI_WRDDR_TYPE_RGB888 || - cif_fmt_in->csi_fmt_val == CSI_WRDDR_TYPE_RGB565) { + } else if (cif_fmt_in->csi_fmt_val == CSI_WRDDR_TYPE_RGB565 || + (stream->cifdev->chip_id < CHIP_RK3576_CIF && + cif_fmt_in->csi_fmt_val == CSI_WRDDR_TYPE_RGB888)) { csi_fmt_val = CSI_WRDDR_TYPE_RAW8; } else { csi_fmt_val = cif_fmt_in->csi_fmt_val; @@ -3954,7 +3956,7 @@ static int rkcif_csi_channel_init(struct rkcif_stream *stream, channel->cmd_mode_en, channel->dsi_input); } - channel->csi_fmt_val = get_csi_fmt_val(stream->cif_fmt_in, + channel->csi_fmt_val = get_csi_fmt_val(stream, &dev->channels[stream->id]); if (dev->hdr.hdr_mode == NO_HDR ||