From b7d5caed452e230b2f4777676c39d98e878494b2 Mon Sep 17 00:00:00 2001 From: pengcheng chen Date: Wed, 18 Apr 2018 09:44:17 +0800 Subject: [PATCH] osd: fix osd rdma recovery reg PD#160942: osd: fix osd rdma recovery reg 1. modify VIU_OSD1_BLK0_CFG_W0 init value in update_color_mode 2. add DOLBY_CORE2A_SWAP_CTRL1&CTRL2 in recovery table Change-Id: I04c569bc4919e8adc5bd17d376ee65d084e49082 Signed-off-by: pengcheng chen --- drivers/amlogic/media/osd/osd_backup.c | 10 ++++++++-- drivers/amlogic/media/osd/osd_hw.c | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/amlogic/media/osd/osd_backup.c b/drivers/amlogic/media/osd/osd_backup.c index 53688c516964..fef043eb63a9 100644 --- a/drivers/amlogic/media/osd/osd_backup.c +++ b/drivers/amlogic/media/osd/osd_backup.c @@ -700,6 +700,8 @@ static struct reg_item misc_recovery_table_g12a[] = { {VIU_OSD2_BLK1_CFG_W4, 0x0, 0xffffffff, 1}, {VIU_OSD2_BLK2_CFG_W4, 0x0, 0xffffffff, 1}, {VIU_OSD2_MALI_UNPACK_CTRL, 0x0, 0x9f01ffff, 1}, + {DOLBY_CORE2A_SWAP_CTRL1, 0x0, 0x0fffffff, 1}, + {DOLBY_CORE2A_SWAP_CTRL2, 0x0, 0xffffffff, 1}, }; static void recovery_regs_init_old(void) @@ -1288,7 +1290,9 @@ static int update_recovery_item_g12a(u32 addr, u32 value) (addr == VIU_OSD2_BLK0_CFG_W4) || (addr == VIU_OSD2_BLK1_CFG_W4) || (addr == VIU_OSD2_BLK2_CFG_W4) || - (addr == VIU_OSD2_MALI_UNPACK_CTRL)) { + (addr == VIU_OSD2_MALI_UNPACK_CTRL) || + (addr == DOLBY_CORE2A_SWAP_CTRL1) || + (addr == DOLBY_CORE2A_SWAP_CTRL2)) { table = gRecovery[10].table; for (i = 0; i < gRecovery[10].size; i++) { if (addr == table[i].addr) { @@ -1487,7 +1491,9 @@ static s32 get_recovery_item_g12a(u32 addr, u32 *value, u32 *mask) (addr == VIU_OSD2_BLK0_CFG_W4) || (addr == VIU_OSD2_BLK1_CFG_W4) || (addr == VIU_OSD2_BLK2_CFG_W4) || - (addr == VIU_OSD2_MALI_UNPACK_CTRL)) { + (addr == VIU_OSD2_MALI_UNPACK_CTRL) || + (addr == DOLBY_CORE2A_SWAP_CTRL1) || + (addr == DOLBY_CORE2A_SWAP_CTRL2)) { table = gRecovery[10].table; for (i = 0; i < gRecovery[10].size; i++) { if (addr == table[i].addr) { diff --git a/drivers/amlogic/media/osd/osd_hw.c b/drivers/amlogic/media/osd/osd_hw.c index 1fb087d32557..d3297b008ebd 100644 --- a/drivers/amlogic/media/osd/osd_hw.c +++ b/drivers/amlogic/media/osd/osd_hw.c @@ -3848,7 +3848,7 @@ static void osd_update_color_mode(u32 index) SCAN_MODE_INTERLACE) ? 2 : 0; data32 |= VSYNCOSD_RD_MPEG_REG( osd_reg->osd_blk0_cfg_w0) - & 0x30007040; + & 0x70007040; data32 |= osd_hw.fb_gem[index].canvas_idx << 16; if ((osd_hw.osd_afbcd[index].enable) && (osd_hw.osd_meson_dev.afbc_type == MALI_AFBC))