From 14a361a75bbfe196c1fcd57dae6bdf02d87a9a32 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Tue, 16 Jul 2024 10:41:23 +0800 Subject: [PATCH] media: rockchip: vicap fixes error of clean intr mask when stop stream Signed-off-by: Zefa Chen Change-Id: I5678f52e8a527b38eaa96ad4ae35e94addee525d --- drivers/media/platform/rockchip/cif/capture.c | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 7fd7a509c94b..68a4f21164a5 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -4661,15 +4661,27 @@ static void rkcif_stream_stop(struct rkcif_stream *stream) rkcif_write_register(cif_dev, get_reg_index_of_id_ctrl0(id), val); } - rkcif_write_register_or(cif_dev, CIF_REG_MIPI_LVDS_INTSTAT, - CSI_START_INTSTAT(id) | - CSI_DMA_END_INTSTAT(id) | - CSI_LINE_INTSTAT(id)); + val = CSI_DMA_END_INTSTAT(id); + if (cif_dev->chip_id >= CHIP_RK3576_CIF) + val |= CSI_START_INTSTAT_RK3576(id); + else + val |= CSI_START_INTSTAT(id); + if (cif_dev->chip_id >= CHIP_RK3588_CIF) + val |= CSI_LINE_INTSTAT_V1(id); + else + val |= CSI_LINE_INTSTAT(id); + rkcif_write_register_or(cif_dev, CIF_REG_MIPI_LVDS_INTSTAT, val); - rkcif_write_register_and(cif_dev, CIF_REG_MIPI_LVDS_INTEN, - ~(CSI_START_INTEN(id) | - CSI_DMA_END_INTEN(id) | - CSI_LINE_INTEN(id))); + val = CSI_DMA_END_INTEN(id); + if (cif_dev->chip_id >= CHIP_RK3576_CIF) + val |= CSI_START_INTEN_RK3576(id); + else + val |= CSI_START_INTEN(id); + if (cif_dev->chip_id >= CHIP_RK3588_CIF) + val |= CSI_LINE_INTEN_RK3588(id); + else + val |= CSI_LINE_INTEN(id); + rkcif_write_register_and(cif_dev, CIF_REG_MIPI_LVDS_INTEN, ~val); if (stream->cifdev->chip_id < CHIP_RK3588_CIF) { rkcif_write_register_and(cif_dev, CIF_REG_MIPI_LVDS_INTEN,