summaryrefslogtreecommitdiff
authorpengcheng chen <pengcheng.chen@amlogic.com>2018-04-18 07:53:37 (GMT)
committer Xindong Xu <xindong.xu@amlogic.com>2018-04-19 06:01:25 (GMT)
commit73d6233662aa766eb30f5654919b88f2a3e804f4 (patch)
tree1b8dd8329ff495df1be268d9f7052ed1985700fb
parent3af79f8d8c38acfe174b444d41caca6adb6734d6 (diff)
downloadcommon-73d6233662aa766eb30f5654919b88f2a3e804f4.zip
common-73d6233662aa766eb30f5654919b88f2a3e804f4.tar.gz
common-73d6233662aa766eb30f5654919b88f2a3e804f4.tar.bz2
osd: fix osd suspend fail issue
PD#164508: osd: fix osd suspend fail issue Change-Id: I30c9efd77748a795b341ad4bedafa5f379ae52f1 Signed-off-by: pengcheng chen <pengcheng.chen@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/osd/osd.h2
-rw-r--r--drivers/amlogic/media/osd/osd_hw.c18
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/amlogic/media/osd/osd.h b/drivers/amlogic/media/osd/osd.h
index e8c903c..bad8b45 100644
--- a/drivers/amlogic/media/osd/osd.h
+++ b/drivers/amlogic/media/osd/osd.h
@@ -504,6 +504,8 @@ struct hw_para_s {
u32 enable[HW_OSD_COUNT];
u32 powered[HW_OSD_COUNT];
u32 reg_status_save;
+ u32 reg_status_save1;
+ u32 reg_status_save2;
#ifdef FIQ_VSYNC
bridge_item_t fiq_handle_item;
#endif
diff --git a/drivers/amlogic/media/osd/osd_hw.c b/drivers/amlogic/media/osd/osd_hw.c
index d3297b0..d335076 100644
--- a/drivers/amlogic/media/osd/osd_hw.c
+++ b/drivers/amlogic/media/osd/osd_hw.c
@@ -6239,6 +6239,17 @@ void osd_suspend_hw(void)
notify_to_amvideo();
osd_reg_clr_mask(VPP_MISC, OSD_RELATIVE_BITS);
/* VSYNCOSD_CLR_MPEG_REG_MASK(VPP_MISC, OSD_RELATIVE_BITS); */
+ } else {
+ osd_hw.reg_status_save =
+ osd_reg_read(VIU_OSD_BLEND_CTRL);
+ osd_hw.reg_status_save1 =
+ osd_reg_read(OSD1_BLEND_SRC_CTRL);
+ osd_hw.reg_status_save2 =
+ osd_reg_read(OSD2_BLEND_SRC_CTRL);
+ osd_reg_clr_mask(VIU_OSD_BLEND_CTRL, 0xf0000);
+ osd_reg_clr_mask(OSD1_BLEND_SRC_CTRL, 0xf0f);
+ osd_reg_clr_mask(OSD2_BLEND_SRC_CTRL, 0xf0f);
+
}
osd_log_info("osd_suspended\n");
}
@@ -6270,6 +6281,13 @@ void osd_resume_hw(void)
1 << 0);
}
notify_to_amvideo();
+ } else {
+ osd_reg_set_mask(VIU_OSD_BLEND_CTRL,
+ osd_hw.reg_status_save);
+ osd_reg_set_mask(OSD1_BLEND_SRC_CTRL,
+ osd_hw.reg_status_save1);
+ osd_reg_set_mask(OSD2_BLEND_SRC_CTRL,
+ osd_hw.reg_status_save2);
}
osd_log_info("osd_resumed\n");
}