osd: screen blank when Plugin HDMI after system bootup in 15s [1/1]

PD#OTT-4292

Problem:
Root Cause:gralloc set afbcd = 1, but hwcomposer have no frame set,
hdmi plug and uboot logo update and osd_enable_hw() called, in this api,
there is a protection: if afbcd.enable set and phy_addr == 0 will
wait vsync till phy_addr != 0, this section code logic caused screen blank

Solution:
when gralloc set afbcd = 1, don't set afbcd.enable = 1,
it will update with hwcomposer post afbc frame.

Verify:
verify with Raven

Change-Id: I98a88cffd139832a34825adde7c21219937b63ce
Signed-off-by: Pengcheng Chen <pengcheng.chen@amlogic.com>
This commit is contained in:
Pengcheng Chen
2019-06-13 18:27:15 +08:00
committed by Luan Yuan
parent 13eef2e18a
commit a3633437c4

View File

@@ -2148,29 +2148,27 @@ void osd_set_pxp_mode(u32 mode)
}
void osd_set_afbc(u32 index, u32 enable)
{
if (osd_hw.osd_meson_dev.afbc_type)
osd_hw.osd_afbcd[index].enable = enable;
osd_log_info("afbc_type=%d,enable=%d\n",
osd_hw.osd_meson_dev.afbc_type,
osd_hw.osd_afbcd[index].enable);
if (osd_hw.osd_meson_dev.osd_ver == OSD_NORMAL) {
if (osd_hw.osd_meson_dev.afbc_type)
osd_hw.osd_afbcd[index].enable = enable;
osd_log_info("afbc_type=%d,enable=%d\n",
osd_hw.osd_meson_dev.afbc_type,
osd_hw.osd_afbcd[index].enable);
}
}
u32 osd_get_afbc(u32 index)
{
u32 afbc_type = 0;
u32 afbc_enalbe;
afbc_enalbe = osd_hw.osd_afbcd[index].enable;
if (afbc_enalbe) {
if (osd_hw.osd_meson_dev.cpu_id ==
__MESON_CPU_MAJOR_ID_GXM)
afbc_type = 1;
else if (osd_hw.osd_meson_dev.cpu_id >=
__MESON_CPU_MAJOR_ID_G12A)
afbc_type = 2;
else
afbc_type = 0;
}
if (osd_hw.osd_meson_dev.cpu_id ==
__MESON_CPU_MAJOR_ID_GXM)
afbc_type = 1;
else if (osd_hw.osd_meson_dev.cpu_id >=
__MESON_CPU_MAJOR_ID_G12A)
afbc_type = 2;
else
afbc_type = 0;
return afbc_type;
}