From: Shuide Chen Date: Thu, 11 Apr 2019 05:20:46 +0000 (+0800) Subject: osd: fix osd afbc can't display on android5.1 [1/1] X-Git-Tag: hardkernel-4.9.236-104~1431 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e9fadfe57f5364149373a3b246a331479549e78a;p=platform%2Fkernel%2Flinux-amlogic.git osd: fix osd afbc can't display on android5.1 [1/1] PD#SWPL-6869 Problem: afbc can't display with android5.1, because blank enable called before afbc set, which make osd enable not updated and afbc not enable when hwc post frame Solution: if mali afbc enable, call osd enable. Verify: verified on x301 Change-Id: I1d727a586a66c6e7848d09dfb5c5b74ff7a2e3e6 Signed-off-by: Shuide Chen --- diff --git a/drivers/amlogic/media/osd/osd_hw.c b/drivers/amlogic/media/osd/osd_hw.c index fd64c26..01ac4611 100644 --- a/drivers/amlogic/media/osd/osd_hw.c +++ b/drivers/amlogic/media/osd/osd_hw.c @@ -4286,7 +4286,10 @@ static void osd_pan_display_single_fence(struct osd_fence_map_s *fence_map) .update_func(index); osd_update_window_axis = false; } - if ((osd_enable != osd_hw.enable[index]) + if ((osd_enable != osd_hw.enable[index] || + (osd_hw.osd_meson_dev.afbc_type + == MALI_AFBC && + osd_hw.osd_afbcd[index].enable)) && (skip == false) && (suspend_flag == false)) { osd_hw.enable[index] = osd_enable; @@ -4407,7 +4410,10 @@ static void osd_pan_display_single_fence(struct osd_fence_map_s *fence_map) .update_func(index); osd_update_window_axis = false; } - if ((osd_enable != osd_hw.enable[index]) + if ((osd_enable != osd_hw.enable[index] || + (osd_hw.osd_meson_dev.afbc_type + == MALI_AFBC && + osd_hw.osd_afbcd[index].enable)) && (skip == false) && (suspend_flag == false)) { osd_hw.enable[index] = osd_enable; @@ -4419,7 +4425,9 @@ static void osd_pan_display_single_fence(struct osd_fence_map_s *fence_map) osd_mali_afbc_start(); spin_unlock_irqrestore(&osd_lock, lock_flags); osd_wait_vsync_hw(); - } else if ((osd_enable != osd_hw.enable[index]) + } else if ((osd_enable != osd_hw.enable[index] || + (osd_hw.osd_meson_dev.afbc_type == MALI_AFBC && + osd_hw.osd_afbcd[index].enable)) && (skip == false)) { spin_lock_irqsave(&osd_lock, lock_flags); if (suspend_flag == false) {