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~4158^2~107 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7bb02ff83e4c681e5a1ea2b220c832ebfd7db0a5;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 cefd38046ca9..2f0fecdf4282 100755 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -2671,6 +2671,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)) { @@ -2680,6 +2681,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; } @@ -3223,6 +3225,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);