media: rockchip: isp: Solve the cmsk problem

Change-Id: I25fe5245b3ea2b757cfca43aca38275e3c9b0c19
Signed-off-by: Lian Xu <xu.lian@rock-chips.com>
This commit is contained in:
Lian Xu
2022-03-31 21:02:35 +08:00
committed by Tao Huang
parent 259b3cda10
commit 9b24b183d5
2 changed files with 16 additions and 0 deletions

View File

@@ -1811,6 +1811,12 @@
#define ISP3X_SW_CMSK_EN_SP BIT(2)
#define ISP3X_SW_CMSK_EN_BP BIT(3)
#define ISP3X_SW_CMSK_BLKSIZE(x) (((x) & 3) << 4)
#define ISP32_SW_CMSK_EN_PATH GENMASK(3, 0)
#define ISP32_SW_CMSK_EN_PATH_SHD GENMASK(11, 8)
#define ISP3X_SW_CMSK_FORCE_UPD BIT(31)
#define ISP3X_SW_CMSK_ORDER_MODE BIT(1)
#define ISP3X_SW_CMSK_YUV(x, y, z) (((x) & 0xff) | ((y) & 0xff) << 8 | ((z) & 0xff) << 16)

View File

@@ -1238,6 +1238,11 @@ static void rkisp_config_cmsk_single(struct rkisp_device *dev,
ctrl |= ISP3X_SW_CMSK_EN | ISP3X_SW_CMSK_ORDER_MODE;
}
rkisp_write(dev, ISP3X_CMSK_CTRL0, ctrl, false);
val = rkisp_read(dev, ISP3X_CMSK_CTRL0, true);
if (dev->hw_dev->is_single &&
((val & ISP32_SW_CMSK_EN_PATH) != (val & ISP32_SW_CMSK_EN_PATH_SHD)))
rkisp_write(dev, ISP3X_CMSK_CTRL0, val | ISP3X_SW_CMSK_FORCE_UPD, true);
}
static void rkisp_config_cmsk_dual(struct rkisp_device *dev,
@@ -1348,6 +1353,11 @@ static void rkisp_config_cmsk_dual(struct rkisp_device *dev,
ctrl |= ISP3X_SW_CMSK_EN | ISP3X_SW_CMSK_ORDER_MODE;
}
rkisp_next_write(dev, ISP3X_CMSK_CTRL0, ctrl, false);
val = rkisp_next_read(dev, ISP3X_CMSK_CTRL0, true);
if (dev->hw_dev->is_single &&
((val & ISP32_SW_CMSK_EN_PATH) != (val & ISP32_SW_CMSK_EN_PATH_SHD)))
rkisp_next_write(dev, ISP3X_CMSK_CTRL0, val | ISP3X_SW_CMSK_FORCE_UPD, false);
}
static void rkisp_config_cmsk(struct rkisp_device *dev)