author | pengcheng 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) |
commit | 73d6233662aa766eb30f5654919b88f2a3e804f4 (patch) | |
tree | 1b8dd8329ff495df1be268d9f7052ed1985700fb | |
parent | 3af79f8d8c38acfe174b444d41caca6adb6734d6 (diff) | |
download | common-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>
-rw-r--r-- | drivers/amlogic/media/osd/osd.h | 2 | ||||
-rw-r--r-- | drivers/amlogic/media/osd/osd_hw.c | 18 |
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"); } |