From 9d1f89c7e52d95ac7318d967f076f43e05a1239c Mon Sep 17 00:00:00 2001 From: MingLiang Dong Date: Mon, 31 Dec 2018 22:27:47 -0500 Subject: [PATCH] amvecm: Flash a horizontal line when enable local contrast function [1/1] PD#SWPL-3563 Problem: 1.Flash a horizontal line in the bottom of the screen in HDMI with 4K 50/60Hz signal after enable local contrast function 2.local contrast block is obvious when platform reboot Solution: 1.Local contrast write curve with RDMA 2.lc init reset lc module Verify: verify on TL1 Change-Id: Ifd4218e3688d5b0728a6fcba81558467a1c3e05f Signed-off-by: MingLiang Dong --- .../media/enhancement/amvecm/local_contrast.c | 38 +++++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/drivers/amlogic/media/enhancement/amvecm/local_contrast.c b/drivers/amlogic/media/enhancement/amvecm/local_contrast.c index 4697a3d..c14cfae8 100644 --- a/drivers/amlogic/media/enhancement/amvecm/local_contrast.c +++ b/drivers/amlogic/media/enhancement/amvecm/local_contrast.c @@ -23,7 +23,7 @@ int amlc_debug; pr_info("AMVE: " fmt, ## args);\ } while (0) -int lc_en; +int lc_en = 1; int lc_demo_mode; int lc_en_chflg = 0xff; static int lc_flag = 0xff; @@ -481,13 +481,13 @@ static void lc_demo_wr_curve(int h_num, int v_num) (i * h_num + j) + 4] << 10) | (lc_szcurve[6 * (i * h_num + j) + 5] << 20); - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, temp1); - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, temp2); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, temp1); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, temp2); } for (j = h_num / 2; j < h_num; j++) { - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, (0|(0<<10)|(512<<20))); - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, (1023|(1023<<10)|(512<<20))); } } @@ -536,37 +536,37 @@ static int set_lc_curve(int binit, int bcheck) hvTemp = READ_VPP_REG(SRSHARP1_LC_HV_NUM); h_num = (hvTemp >> 8) & 0x1f; v_num = hvTemp & 0x1f; - WRITE_VPP_REG_BITS(SRSHARP1_LC_MAP_RAM_CTRL, 1, 0, 1); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_CTRL, 1); /*data sequence: ymin/minBv/pkBv/maxBv/ymaxv/ypkBv*/ if (binit) { - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_ADDR, 0); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_ADDR, 0); for (i = 0; i < h_num * v_num; i++) { - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, (0|(0<<10)|(512<<20))); - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, (1023|(1023<<10)|(512<<20))); } } else { - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_ADDR, 0); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_ADDR, 0); if (lc_demo_mode) lc_demo_wr_curve(h_num, v_num); else for (i = 0; i < h_num * v_num; i++) { - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, lc_szcurve[6 * i + 0]| (lc_szcurve[6 * i + 1]<<10)| (lc_szcurve[6 * i + 2]<<20)); - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_DATA, + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_DATA, lc_szcurve[6 * i + 3]| (lc_szcurve[6 * i + 4]<<10)| (lc_szcurve[6 * i + 5]<<20)); } } - WRITE_VPP_REG_BITS(SRSHARP1_LC_MAP_RAM_CTRL, 0, 0, 1); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_CTRL, 0); if (bcheck) { - WRITE_VPP_REG_BITS(SRSHARP1_LC_MAP_RAM_CTRL, 1, 0, 1); - WRITE_VPP_REG(SRSHARP1_LC_MAP_RAM_ADDR, 0 | (1 << 31)); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_CTRL, 1); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_ADDR, 0 | (1 << 31)); if (lc_demo_mode) rflag = lc_demo_check_curve(h_num, v_num); else @@ -584,7 +584,7 @@ static int set_lc_curve(int binit, int bcheck) if (temp != temp1) rflag = (2 * i + 1) | (1 << 31); } - WRITE_VPP_REG_BITS(SRSHARP1_LC_MAP_RAM_CTRL, 0, 0, 1); + VSYNC_WR_MPEG_REG(SRSHARP1_LC_MAP_RAM_CTRL, 0); } return rflag; @@ -1122,6 +1122,7 @@ void lc_init(void) lc_malloc_ok = 1; if (!lc_en) return; + lc_top_config(0, h_num, v_num, height, width); lc_mtx_set(INP_MTX, LC_MTX_YUV709L_RGB, 1); lc_mtx_set(OUTP_MTX, LC_MTX_RGB_YUV709L, 1); @@ -1154,6 +1155,11 @@ void lc_process(struct vframe_s *vf, } return; } + + if (lc_flag == 0) { + lc_flag++; + return; + } dwTemp = READ_VPP_REG(LC_CURVE_HV_NUM); blk_hnum = (dwTemp >> 8) & 0x1f; blk_vnum = (dwTemp) & 0x1f; -- 2.7.4