From 295dea050fa48d69778fc8f957c825a0bd6c479f Mon Sep 17 00:00:00 2001 From: yxj Date: Wed, 18 Apr 2012 11:24:40 +0800 Subject: [PATCH] rk30fb: fix screen reinit and restandby issue --- drivers/video/rockchip/rk_fb.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index ad6470203fbb..ace40a3e0c02 100644 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -794,7 +794,10 @@ int rk_fb_register(struct rk_lcdc_device_driver *dev_drv, } lcdc_id = i; init_lcdc_device_driver(dev_drv, def_drv,id); - set_lcd_info(dev_drv->screen, fb_inf->mach_info->lcd_info); + if(id == 0) //default use lcdc0 as primary dispaly controller + { + set_lcd_info(dev_drv->screen, fb_inf->mach_info->lcd_info); + } dev_drv->init_lcdc(dev_drv); dev_drv->load_screen(dev_drv,1); /************fb set,one layer one fb ***********/ @@ -908,6 +911,9 @@ static void rkfb_early_suspend(struct early_suspend *h) for(i = 0; i < inf->num_lcdc; i++) { atomic_set(&inf->lcdc_dev_drv[i]->in_suspend,1); + if(inf->lcdc_dev_drv[i]->screen->standby) + inf->lcdc_dev_drv[i]->screen->standby(1); + inf->lcdc_dev_drv[i]->suspend(inf->lcdc_dev_drv[i]); } } @@ -920,6 +926,9 @@ static void rkfb_early_resume(struct early_suspend *h) inf->mach_info->io_enable(); for(i = 0; i < inf->num_lcdc; i++) { + if(inf->lcdc_dev_drv[i]->screen->standby) + inf->lcdc_dev_drv[i]->screen->standby(0); + inf->lcdc_dev_drv[i]->resume(inf->lcdc_dev_drv[i]); atomic_set(&inf->lcdc_dev_drv[i]->in_suspend,0); } -- 2.34.1