summaryrefslogtreecommitdiff
authorpengcheng chen <pengcheng.chen@amlogic.com>2018-04-18 01:44:17 (GMT)
committer Xindong Xu <xindong.xu@amlogic.com>2018-04-19 06:01:05 (GMT)
commitdd828892823ee8a43fcc1becac55fcc4773736d9 (patch)
tree70e8a8d893da81385b4aea04468ce92bd26a084d
parent78d8e91dbd87901a4c8eba6a88fbb695ccc8bae5 (diff)
downloadcommon-dd828892823ee8a43fcc1becac55fcc4773736d9.zip
common-dd828892823ee8a43fcc1becac55fcc4773736d9.tar.gz
common-dd828892823ee8a43fcc1becac55fcc4773736d9.tar.bz2
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 <pengcheng.chen@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/osd/osd_backup.c10
-rw-r--r--drivers/amlogic/media/osd/osd_hw.c2
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 53688c516..fef043e 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 1fb087d..d3297b0 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))