From 30329dbcbbd6f372610facfe826d2c1c2846ed66 Mon Sep 17 00:00:00 2001 From: Dezhi Kong Date: Tue, 31 Jul 2018 16:45:46 +0800 Subject: [PATCH] di: fix pre mif reset issue for g12a PD#169426: di: fix pre mif reset issue for g12a Change-Id: I851ef6ff9a1ac844afd32bc40e73c4a189a47b6f Signed-off-by: Dezhi Kong --- drivers/amlogic/media/deinterlace/deinterlace.c | 4 ++-- drivers/amlogic/media/deinterlace/deinterlace_hw.c | 3 ++- drivers/amlogic/media/deinterlace/deinterlace_hw.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/amlogic/media/deinterlace/deinterlace.c b/drivers/amlogic/media/deinterlace/deinterlace.c index c501f90..3f0afa5 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace.c +++ b/drivers/amlogic/media/deinterlace/deinterlace.c @@ -124,7 +124,7 @@ static di_dev_t *de_devp; static dev_t di_devno; static struct class *di_clsp; -static const char version_s[] = "2018-07-17a"; +static const char version_s[] = "2018-07-31a"; static int bypass_state = 1; static int bypass_all; @@ -3024,7 +3024,7 @@ static void pre_de_process(void) #endif enable_di_pre_mif(true, mcpre_en); if (cpu_after_eq(MESON_CPU_MAJOR_ID_G12A)) { - pre_frame_reset_g12a(di_pre_stru.madi_enable, + pre_frame_reset_g12(di_pre_stru.madi_enable, di_pre_stru.mcdi_enable); } else { pre_frame_reset(); diff --git a/drivers/amlogic/media/deinterlace/deinterlace_hw.c b/drivers/amlogic/media/deinterlace/deinterlace_hw.c index ab7d2f5..09033da 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace_hw.c +++ b/drivers/amlogic/media/deinterlace/deinterlace_hw.c @@ -2622,7 +2622,7 @@ static void reset_pre_simple_rd_mif_g12(unsigned char madi_en, * frame reset for pre which have nothing with encoder * go field */ -void pre_frame_reset_g12a(unsigned char madi_en, +void pre_frame_reset_g12(unsigned char madi_en, unsigned char mcdi_en) { unsigned int reg_val = 0; @@ -2630,6 +2630,7 @@ void pre_frame_reset_g12a(unsigned char madi_en, if (cpu_after_eq(MESON_CPU_MAJOR_ID_G12B)) reset_pre_simple_rd_mif_g12(madi_en, mcdi_en); else { + reg_val = RDMA_RD(DI_PRE_CTRL); if (madi_en) reg_val |= (1<<25); if (mcdi_en) diff --git a/drivers/amlogic/media/deinterlace/deinterlace_hw.h b/drivers/amlogic/media/deinterlace/deinterlace_hw.h index 145d44f..64301c3 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace_hw.h +++ b/drivers/amlogic/media/deinterlace/deinterlace_hw.h @@ -169,7 +169,7 @@ void init_field_mode(unsigned short height); void film_mode_win_config(unsigned int width, unsigned int height); void pulldown_vof_win_config(struct pulldown_detected_s *wins); void di_load_regs(struct di_pq_parm_s *di_pq_ptr); -void pre_frame_reset_g12a(unsigned char madi_en, unsigned char mcdi_en); +void pre_frame_reset_g12(unsigned char madi_en, unsigned char mcdi_en); void pre_frame_reset(void); void di_interrupt_ctrl(unsigned char ma_en, unsigned char det3d_en, unsigned char nrds_en, -- 2.7.4