mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
osd: move wait hw vsync for afbc when phy_addr==0 only before chip g12A [1/1]
PD#SWPL-5148 Problem: bootvideo stuck when starting to play Solution: wait hw vsync for afbc when phy_addr==0 only before chip g12A Verify: tl1 Change-Id: I883c8f6699729854a852fc70c22b5629aa025c60 Signed-off-by: Pengcheng Chen <pengcheng.chen@amlogic.com>
This commit is contained in:
committed by
Jianxin Pan
parent
ccadff78f6
commit
d43a6594dd
@@ -2971,17 +2971,18 @@ void osd_enable_hw(u32 index, u32 enable)
|
||||
add_to_update_list(index, OSD_GBL_ALPHA);
|
||||
add_to_update_list(index, DISP_GEOMETRY);
|
||||
osd_wait_vsync_hw();
|
||||
}
|
||||
|
||||
while ((index == 0) && osd_hw.osd_afbcd[index].enable &&
|
||||
while ((index == 0) && osd_hw.osd_afbcd[index].enable &&
|
||||
(osd_hw.osd_afbcd[index].phy_addr == 0) &&
|
||||
enable && (i < count)) {
|
||||
osd_wait_vsync_hw();
|
||||
i++;
|
||||
osd_wait_vsync_hw();
|
||||
i++;
|
||||
}
|
||||
if (i > 0)
|
||||
osd_log_info("osd[%d]: wait %d vsync first buffer ready.\n",
|
||||
index, i);
|
||||
}
|
||||
if (i > 0)
|
||||
osd_log_info("osd[%d]: wait %d vsync first buffer ready.\n",
|
||||
index, i);
|
||||
|
||||
osd_hw.enable[index] = enable;
|
||||
if (get_osd_hwc_type() != OSD_G12A_NEW_HWC) {
|
||||
add_to_update_list(index, OSD_ENABLE);
|
||||
@@ -3183,16 +3184,18 @@ void osd_switch_free_scale(
|
||||
next_index, next_enable, next_scale, current->comm);
|
||||
if (osd_hw.free_scale_mode[pre_index]
|
||||
|| osd_hw.free_scale_mode[next_index]) {
|
||||
while ((next_index == OSD1)
|
||||
&& osd_hw.osd_afbcd[next_index].enable
|
||||
&& (osd_hw.osd_afbcd[next_index].phy_addr == 0)
|
||||
&& next_enable && (i < count)) {
|
||||
osd_wait_vsync_hw();
|
||||
i++;
|
||||
if (osd_hw.osd_meson_dev.osd_ver == OSD_NORMAL) {
|
||||
while ((next_index == OSD1)
|
||||
&& osd_hw.osd_afbcd[next_index].enable
|
||||
&& (osd_hw.osd_afbcd[next_index].phy_addr == 0)
|
||||
&& next_enable && (i < count)) {
|
||||
osd_wait_vsync_hw();
|
||||
i++;
|
||||
}
|
||||
if (i > 0)
|
||||
osd_log_info("osd[%d]: wait %d vsync first buffer ready.\n",
|
||||
next_index, i);
|
||||
}
|
||||
if (i > 0)
|
||||
osd_log_info("osd[%d]: wait %d vsync first buffer ready.\n",
|
||||
next_index, i);
|
||||
if (pre_index != next_index) {
|
||||
h_enable = (pre_scale & 0xffff0000 ? 1 : 0);
|
||||
v_enable = (pre_scale & 0xffff ? 1 : 0);
|
||||
|
||||
Reference in New Issue
Block a user