From: hjc Date: Wed, 6 May 2015 07:56:58 +0000 (+0800) Subject: rk fb: delay 200ms when extern display switch screen can fix mmu pagefault X-Git-Tag: firefly_0821_release~4183 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8bd11d215d2a1c3d54388ed865222a3141d7d2f4;p=firefly-linux-kernel-4.4.55.git rk fb: delay 200ms when extern display switch screen can fix mmu pagefault --- diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index d4de585b3dc9..6bb2ad81e8d0 100644 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -2643,6 +2643,7 @@ static int rk_fb_blank(int blank_mode, struct fb_info *info) win_id = dev_drv->ops->fb_get_win_id(dev_drv, fix->id); if (win_id < 0) return -ENODEV; + mutex_lock(&dev_drv->switch_screen); #if defined(CONFIG_RK_HDMI) if ((rk_fb->disp_mode == ONE_DUAL) && (hdmi_get_hotplug() == HDMI_HPD_ACTIVED)) { @@ -2652,6 +2653,7 @@ static int rk_fb_blank(int blank_mode, struct fb_info *info) { dev_drv->ops->blank(dev_drv, win_id, blank_mode); } + mutex_unlock(&dev_drv->switch_screen); return 0; } @@ -3193,6 +3195,8 @@ int rk_fb_switch_screen(struct rk_screen *screen, int enable, int lcdc_id) mutex_lock(&dev_drv->switch_screen); hdmi_switch_state = 0; dev_drv->hdmi_switch = 1; + if (!dev_drv->uboot_logo) + mdelay(200); envp[0] = "switch screen"; envp[1] = kmalloc(32, GFP_KERNEL);