From 75f7142847d40327b0bacf3fb5bfbe88458064fa Mon Sep 17 00:00:00 2001 From: Yong Qin Date: Fri, 22 Mar 2019 20:41:15 +0800 Subject: [PATCH] di: add di for sm1 bringup [1/1] PD#SWPL-5865 Problem: SM1 bring up Solution: add the chipid Verify: sm Change-Id: I9b738efea210b4fb3deb2dab9de6a443aabadb53 Signed-off-by: Yong Qin --- .../amlogic/media/deinterlace/deinterlace.c | 24 ++++++++++++------- .../media/deinterlace/deinterlace_dbg.c | 3 ++- .../media/deinterlace/deinterlace_hw.c | 10 ++++---- drivers/amlogic/media/deinterlace/nr_drv.c | 11 +++++---- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/drivers/amlogic/media/deinterlace/deinterlace.c b/drivers/amlogic/media/deinterlace/deinterlace.c index ad47b79ccbe1..2059410ce87e 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace.c +++ b/drivers/amlogic/media/deinterlace/deinterlace.c @@ -129,7 +129,7 @@ static di_dev_t *de_devp; static dev_t di_devno; static struct class *di_clsp; -static const char version_s[] = "2019-03-27a"; +static const char version_s[] = "2019-02-26a sm1 buring up test"; static int bypass_state = 1; static int bypass_all; @@ -5248,7 +5248,8 @@ de_post_process(void *arg, unsigned int zoom_start_x_lines, is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() || - is_meson_tl1_cpu()) { + is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { di_post_read_reverse_irq(overturn, mc_pre_flag, post_blend_en ? mcpre_en : false); /* disable mc for first 2 fieldes mv unreliable */ @@ -6039,7 +6040,7 @@ static void di_unreg_process_irq(void) di_hw_uninit(); if (is_meson_txlx_cpu() || is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() - || is_meson_tl1_cpu()) { + || is_meson_tl1_cpu() || is_meson_sm1_cpu()) { di_pre_gate_control(false, mcpre_en); nr_gate_control(false); } else if (cpu_after_eq(MESON_CPU_MAJOR_ID_GXTVBB)) { @@ -6052,7 +6053,7 @@ static void di_unreg_process_irq(void) di_hw_disable(mcpre_en); if (is_meson_txlx_cpu() || is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() - || is_meson_tl1_cpu()) { + || is_meson_tl1_cpu() || is_meson_sm1_cpu()) { enable_di_post_mif(GATE_OFF); di_post_gate_control(false); di_top_gate_control(false, false); @@ -6165,7 +6166,8 @@ static void di_pre_size_change(unsigned short width, is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() || - is_meson_tl1_cpu()) + is_meson_tl1_cpu() || + is_meson_sm1_cpu()) film_mode_win_config(width, height); } if (cpu_after_eq(MESON_CPU_MAJOR_ID_TXL)) @@ -6613,7 +6615,8 @@ static int di_task_handle(void *data) } } if (is_meson_g12a_cpu() || is_meson_g12b_cpu() - || is_meson_tl1_cpu()) { + || is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { #ifdef CLK_TREE_SUPPORT clk_set_rate(de_devp->vpu_clkb, de_devp->clkb_max_rate); @@ -7573,7 +7576,8 @@ static void set_di_flag(void) is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() || - is_meson_tl1_cpu()) { + is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { mcpre_en = true; mc_mem_alloc = true; pulldown_enable = false; @@ -7591,7 +7595,8 @@ static void set_di_flag(void) is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() || - is_meson_tl1_cpu()) { + is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { full_422_pack = true; } @@ -7603,7 +7608,8 @@ static void set_di_flag(void) } post_hold_line = (is_meson_g12a_cpu() || is_meson_g12b_cpu() - || is_meson_tl1_cpu())?10:17; + || is_meson_tl1_cpu() || + is_meson_sm1_cpu())?10:17; } else { post_hold_line = 8; /*2019-01-10: from VLSI feijun*/ mcpre_en = false; diff --git a/drivers/amlogic/media/deinterlace/deinterlace_dbg.c b/drivers/amlogic/media/deinterlace/deinterlace_dbg.c index 0a3094c293eb..2cec435be49c 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace_dbg.c +++ b/drivers/amlogic/media/deinterlace/deinterlace_dbg.c @@ -255,7 +255,8 @@ void dump_di_reg_g12(void) is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() || - is_meson_tl1_cpu()) + is_meson_tl1_cpu() || + is_meson_sm1_cpu()) base_addr = 0xff900000; else base_addr = 0xd0100000; diff --git a/drivers/amlogic/media/deinterlace/deinterlace_hw.c b/drivers/amlogic/media/deinterlace/deinterlace_hw.c index cb3145976632..95d9a8c1ca8f 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace_hw.c +++ b/drivers/amlogic/media/deinterlace/deinterlace_hw.c @@ -472,7 +472,7 @@ void di_hw_init(bool pd_enable, bool mc_enable) switch_vpu_clk_gate_vmod(VPU_VPU_CLKB, VPU_CLK_GATE_ON); if (is_meson_txlx_cpu() || is_meson_txhd_cpu() || is_meson_g12a_cpu() || is_meson_g12b_cpu() - || is_meson_tl1_cpu()) + || is_meson_tl1_cpu() || is_meson_sm1_cpu()) di_top_gate_control(true, true); else if (is_meson_gxl_cpu() || is_meson_gxm_cpu() || is_meson_gxlx_cpu()) @@ -485,7 +485,7 @@ void di_hw_init(bool pd_enable, bool mc_enable) is_meson_gxlx_cpu() || is_meson_txhd_cpu() || is_meson_g12a_cpu() || - is_meson_g12b_cpu() || + is_meson_g12b_cpu() || is_meson_sm1_cpu() || is_meson_tl1_cpu()) { /* vpp fifo max size on txl :128*3=384[0x180] */ /* di fifo max size on txl :96*3=288[0x120] */ @@ -521,7 +521,7 @@ void di_hw_init(bool pd_enable, bool mc_enable) if (is_meson_txlx_cpu() || is_meson_txhd_cpu() || is_meson_g12a_cpu() || - is_meson_g12b_cpu() || + is_meson_g12b_cpu() || is_meson_sm1_cpu() || is_meson_tl1_cpu()) { di_pre_gate_control(true, true); di_post_gate_control(true); @@ -539,7 +539,7 @@ void di_hw_init(bool pd_enable, bool mc_enable) mc_di_param_init(); if (is_meson_txlx_cpu() || is_meson_txhd_cpu() || - is_meson_g12a_cpu() || + is_meson_g12a_cpu() || is_meson_sm1_cpu() || is_meson_g12b_cpu() || is_meson_tl1_cpu()) { di_pre_gate_control(false, true); @@ -996,6 +996,8 @@ void enable_afbc_input(struct vframe_s *vf) } #endif +#define AFBC_DEC_SEL (eAFBC_DEC1) + u32 enable_afbc_input(struct vframe_s *vf) { unsigned int r, u, v, w_aligned, h_aligned; diff --git a/drivers/amlogic/media/deinterlace/nr_drv.c b/drivers/amlogic/media/deinterlace/nr_drv.c index 5d41ea73a702..61f2ffd3b2af 100644 --- a/drivers/amlogic/media/deinterlace/nr_drv.c +++ b/drivers/amlogic/media/deinterlace/nr_drv.c @@ -356,7 +356,8 @@ static void linebuffer_config(unsigned short width) static void nr2_config(unsigned short width, unsigned short height) { if (is_meson_txlx_cpu() || is_meson_g12a_cpu() || - is_meson_g12b_cpu() || is_meson_tl1_cpu()) { + is_meson_g12b_cpu() || is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { DI_Wr_reg_bits(NR4_TOP_CTRL, nr2_en, 2, 1); DI_Wr_reg_bits(NR4_TOP_CTRL, nr2_en, 15, 1); DI_Wr_reg_bits(NR4_TOP_CTRL, nr2_en, 17, 1); @@ -405,7 +406,8 @@ void nr_all_config(unsigned short width, unsigned short height, if (cpu_after_eq(MESON_CPU_MAJOR_ID_GXLX)) cue_config(nr_param.pcue_parm, field_type); if (is_meson_txlx_cpu() || is_meson_g12a_cpu() || - is_meson_g12b_cpu() || is_meson_tl1_cpu()) { + is_meson_g12b_cpu() || is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { linebuffer_config(width); nr4_config(nr_param.pnr4_parm, width, height); } @@ -837,7 +839,8 @@ void nr_process_in_irq(void) if (dnr_en) dnr_process(&dnr_param); if (is_meson_txlx_cpu() || is_meson_g12a_cpu() - || is_meson_g12a_cpu() || is_meson_tl1_cpu()) { + || is_meson_g12a_cpu() || is_meson_tl1_cpu() || + is_meson_sm1_cpu()) { noise_meter_process(nr_param.pnr4_parm, nr_param.frame_count); luma_enhancement_process(nr_param.pnr4_parm, nr_param.frame_count); @@ -1213,7 +1216,7 @@ void nr_hw_init(void) void nr_gate_control(bool gate) { if (!is_meson_txlx_cpu() && !is_meson_g12a_cpu() - && !is_meson_g12b_cpu() + && !is_meson_g12b_cpu() && !is_meson_sm1_cpu() && !is_meson_tl1_cpu()) return; if (gate) {