From 03b7f09e8faeb620a8bb6b11d0003739ef7922ce Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Thu, 2 Apr 2020 18:22:03 +0800 Subject: [PATCH] media: rockchip: ispp: fix gain and sharp config Increase gain size. Disable sharp dma output if no using. Change-Id: I0f5bd581bf39b88051b947a34f4ba90cdb789019 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/ispp/ispp.c | 2 ++ drivers/media/platform/rockchip/ispp/stream.c | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/rockchip/ispp/ispp.c b/drivers/media/platform/rockchip/ispp/ispp.c index cc54fe08b169..57fffbfa9fe9 100644 --- a/drivers/media/platform/rockchip/ispp/ispp.c +++ b/drivers/media/platform/rockchip/ispp/ispp.c @@ -253,6 +253,8 @@ static int rkispp_sd_s_power(struct v4l2_subdev *sd, int on) } atomic_set(&ispp_sdev->frm_sync_seq, 0); writel(0xfffffff, ispp_dev->base_addr + RKISPP_CTRL_INT_MSK); + writel(SW_SHP_DMA_DIS, + ispp_dev->base_addr + RKISPP_SHARP_CORE_CTRL); if (ispp_dev->inp == INP_ISP) { struct v4l2_subdev_format *fmt = &ispp_sdev->in_fmt; diff --git a/drivers/media/platform/rockchip/ispp/stream.c b/drivers/media/platform/rockchip/ispp/stream.c index 6bf9f4d88fc1..48327630d0dd 100644 --- a/drivers/media/platform/rockchip/ispp/stream.c +++ b/drivers/media/platform/rockchip/ispp/stream.c @@ -387,7 +387,7 @@ static int config_tnr(struct rkispp_device *dev) if (fmt & FMT_FBC) pic_size += w * h >> 4; - gain_size = ALIGN(width, 64) * ALIGN(height, 128) >> 5; + gain_size = ALIGN(width, 64) * ALIGN(height, 128) >> 4; kg_size = gain_size * 4; if (fmt & FMT_YUYV) mult = 2; @@ -562,7 +562,7 @@ static int config_nr_shp(struct rkispp_device *dev) if (fmt & FMT_FBC) pic_size += w * h >> 4; - gain_size = ALIGN(width, 64) * ALIGN(height, 128) >> 5; + gain_size = ALIGN(width, 64) * ALIGN(height, 128) >> 4; if (fmt & FMT_YUYV) mult = 2; @@ -881,7 +881,8 @@ static void stop_mb(struct rkispp_stream *stream) case ISPP_MODULE_NR: case ISPP_MODULE_SHP: rkispp_clear_bits(base + RKISPP_NR_UVNR_CTRL_PARA, SW_NR_EN); - rkispp_clear_bits(base + RKISPP_SHARP_CORE_CTRL, SW_SHP_EN); + rkispp_set_bits(base + RKISPP_SHARP_CORE_CTRL, + SW_SHP_DMA_DIS | SW_SHP_EN, SW_SHP_DMA_DIS); break; default: rkispp_clear_bits(base + RKISPP_FEC_CORE_CTRL, SW_FEC_EN); @@ -903,8 +904,6 @@ static int is_stopped_mb(struct rkispp_stream *stream) case ISPP_MODULE_SHP: en = SW_SHP_EN; val = readl(base + RKISPP_SHARP_CORE_CTRL); - rkispp_set_bits(base + RKISPP_SHARP_CORE_CTRL, - 0, SW_SHP_DMA_DIS); break; default: en = SW_FEC_EN_SHD;