diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.c index 70bfb0ab4f6c..95fc8b68769e 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.c @@ -938,6 +938,13 @@ void vdin_set_top(struct vdin_dev_s *devp, unsigned int offset, vdin_mux = VDIN_MUX_HDMI; wr_bits(offset, VDIN_ASFIFO_CTRL1, 0xe4, VDI4_ASFIFO_CTRL_BIT, VDI4_ASFIFO_CTRL_WID); + + /*reset top afifo for green screen when enter the channel*/ + if (is_meson_tl1_cpu()) { + wr_bits(offset, VPU_SW_RESET, 1, 26, 1); + wr_bits(offset, VPU_SW_RESET, 0, 26, 1); + } + break; case 0x80: /* dvin */ vdin_mux = VDIN_MUX_DVIN; diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_regs.h b/drivers/amlogic/media/vin/tvin/vdin/vdin_regs.h index aaf417348077..441e822cbfe5 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_regs.h +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_regs.h @@ -64,6 +64,7 @@ #define VPU_DI_DIWR_MMC_CTRL 0x270c #define VPU_TVD3D_MMC_CTRL 0x2710 #define VPU_TVDVBI_MMC_CTRL 0x2711 +#define VPU_SW_RESET 0x2720 /* vpp */ #define VPP_VDO_MEAS_CTRL 0x1da8