diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 0cf541651d83..f461e7a15c57 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -2028,13 +2028,11 @@ static int rkcif_csi_channel_init(struct rkcif_stream *stream, * needs aligned with :ALIGN(bits_per_pixel * width * 2, 8), to optimize reading and * writing of ddr, aliged with 256 */ - if (fmt->fmt_type == CIF_FMT_TYPE_RAW && stream->is_compact) { + if (fmt->fmt_type == CIF_FMT_TYPE_RAW && stream->is_compact && + fmt->csi_fmt_val != CSI_WRDDR_TYPE_RGB888) { channel->virtual_width = ALIGN(channel->width * fmt->raw_bpp / 8, 256); } else { - if (fmt->fmt_type == CIF_FMT_TYPE_RAW && fmt->csi_fmt_val != CSI_WRDDR_TYPE_RAW8) - channel->virtual_width = ALIGN(channel->width * 2, 8); - else - channel->virtual_width = ALIGN(channel->width * fmt->bpp[0] / 8, 8); + channel->virtual_width = ALIGN(channel->width * fmt->bpp[0] / 8, 8); } if (channel->fmt_val == CSI_WRDDR_TYPE_RGB888) @@ -4320,10 +4318,12 @@ int rkcif_set_fmt(struct rkcif_stream *stream, if (fmt->fmt_type == CIF_FMT_TYPE_RAW && stream->is_compact && (dev->active_sensor->mbus.type == V4L2_MBUS_CSI2_DPHY || dev->active_sensor->mbus.type == V4L2_MBUS_CSI2_CPHY || - dev->active_sensor->mbus.type == V4L2_MBUS_CCP2)) { + dev->active_sensor->mbus.type == V4L2_MBUS_CCP2) && + fmt->csi_fmt_val != CSI_WRDDR_TYPE_RGB888) { bpl = ALIGN(width * fmt->raw_bpp / 8, 256); } else { if (fmt->fmt_type == CIF_FMT_TYPE_RAW && stream->is_compact && + fmt->csi_fmt_val != CSI_WRDDR_TYPE_RGB888 && dev->chip_id >= CHIP_RK3588_CIF) { bpl = ALIGN(width * fmt->raw_bpp / 8, 256); } else { @@ -5842,13 +5842,11 @@ static void rkcif_cal_csi_crop_width_vwidth(struct rkcif_stream *stream, * needs aligned with :ALIGN(bits_per_pixel * width * 2, 8), to optimize reading and * writing of ddr, aliged with 256 */ - if (fmt->fmt_type == CIF_FMT_TYPE_RAW && stream->is_compact) { + if (fmt->fmt_type == CIF_FMT_TYPE_RAW && stream->is_compact && + fmt->csi_fmt_val != CSI_WRDDR_TYPE_RGB888) { *crop_vwidth = ALIGN(raw_width * fmt->raw_bpp / 8, 256); } else { - if (fmt->fmt_type == CIF_FMT_TYPE_RAW) - *crop_vwidth = ALIGN(raw_width * 2, 8); - else - *crop_vwidth = ALIGN(raw_width * fmt->bpp[0] / 8, 8); + *crop_vwidth = ALIGN(raw_width * fmt->bpp[0] / 8, 8); } if (channel->fmt_val == CSI_WRDDR_TYPE_RGB888)