osd: uboot logo scaler down in 4k issue [1/1]

PD#163001

Problem:
uboot logo scaler down in 4k

Solution:
uboot logo size adjust when vout changed before
first page flip command

Verify:
verified in u200 board

Change-Id: Ic23e695fe716811eaf3faa62069c808a03c26f9d
Signed-off-by: pengcheng chen <pengcheng.chen@amlogic.com>
This commit is contained in:
pengcheng chen
2018-11-05 16:59:10 +08:00
committed by Tao Zeng
parent b5abee2d79
commit 63128f9fe9
4 changed files with 21 additions and 9 deletions

View File

@@ -1410,7 +1410,6 @@ static int malloc_osd_memory(struct fb_info *info)
(osd_meson_dev.cpu_id >= __MESON_CPU_MAJOR_ID_G12A)) {
osd_log_info("---------------clear fb%d memory %p\n",
fb_index, fbdev->fb_mem_vaddr);
set_logo_loaded();
if (fbdev->fb_mem_vaddr)
memset(fbdev->fb_mem_vaddr, 0x0, fbdev->fb_len);
if (osd_meson_dev.afbc_type && osd_get_afbc(fb_index)) {
@@ -1442,7 +1441,6 @@ static int malloc_osd_memory(struct fb_info *info)
static int osd_open(struct fb_info *info, int arg)
{
u32 fb_index;
int logo_index;
struct osd_fb_dev_s *fbdev;
struct fb_fix_screeninfo *fix = NULL;
int ret = 0;
@@ -1490,13 +1488,14 @@ static int osd_open(struct fb_info *info, int arg)
if (!fb_ion_client)
fb_ion_client = meson_ion_client_create(-1, "meson-fb");
}
logo_index = osd_get_logo_index();
/* clear osd buffer if not logo layer */
if (((logo_index < 0) || (logo_index != fb_index)) ||
(osd_meson_dev.cpu_id == __MESON_CPU_MAJOR_ID_AXG) ||
(osd_meson_dev.cpu_id >= __MESON_CPU_MAJOR_ID_G12A)) {
osd_log_info("set logo loaded\n");
set_logo_loaded();
if (get_logo_loaded()) {
u32 logo_index;
logo_index = osd_get_logo_index();
if (logo_index < 0) {
osd_log_info("set logo loaded\n");
set_logo_loaded();
}
}
return 0;
}

View File

@@ -1166,7 +1166,15 @@ int osd_sync_do_hwc(struct do_hwc_cmd_s *hwc_cmd)
osd_hw.out_fence_fd = -1;
mutex_unlock(&post_fence_list_lock);
kthread_queue_work(&buffer_toggle_worker, &buffer_toggle_work);
if (get_logo_loaded()) {
int logo_index;
logo_index = osd_get_logo_index();
if (logo_index < 0) {
osd_log_info("set logo loaded\n");
set_logo_loaded();
}
}
osd_log_dbg("osd_sync_do_hwc :out_fence_fd=%d\n",
out_fence_fd);
return out_fence_fd;

View File

@@ -170,6 +170,7 @@ void osd_update_vsync_hit(void);
void osd_hw_reset(void);
void osd_mali_afbc_start(void);
int logo_work_init(void);
int get_logo_loaded(void);
void set_logo_loaded(void);
int set_osd_logo_freescaler(void);
void osd_get_display_debug(u32 *osd_display_debug_enable);

View File

@@ -250,6 +250,10 @@ int set_osd_logo_freescaler(void)
return 0;
}
int get_logo_loaded(void)
{
return logo_info.loaded;
}
void set_logo_loaded(void)
{