rk3066b lcdc: adjust fb lcdc backlight driver load and remove order as rk30 rk2928

This commit is contained in:
yxj
2012-08-30 11:12:30 +08:00
parent d7a3cc1f80
commit f178976168
2 changed files with 71 additions and 3 deletions

View File

@@ -546,6 +546,60 @@ static struct platform_device device_fb = {
};
#endif
#if defined(CONFIG_LCDC0_RK31)
static struct resource resource_lcdc0[] = {
[0] = {
.name = "lcdc0 reg",
.start = RK30_LCDC0_PHYS,
.end = RK30_LCDC0_PHYS + RK30_LCDC0_SIZE - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.name = "lcdc0 irq",
.start = IRQ_LCDC0,
.end = IRQ_LCDC0,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device device_lcdc0 = {
.name = "rk30-lcdc",
.id = 0,
.num_resources = ARRAY_SIZE(resource_lcdc0),
.resource = resource_lcdc0,
.dev = {
.platform_data = &lcdc0_screen_info,
},
};
#endif
#if defined(CONFIG_LCDC1_RK31)
static struct resource resource_lcdc1[] = {
[0] = {
.name = "lcdc1 reg",
.start = RK30_LCDC1_PHYS,
.end = RK30_LCDC1_PHYS + RK30_LCDC1_SIZE - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.name = "lcdc1 irq",
.start = IRQ_LCDC1,
.end = IRQ_LCDC1,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device device_lcdc1 = {
.name = "rk30-lcdc",
.id = 1,
.num_resources = ARRAY_SIZE(resource_lcdc1),
.resource = resource_lcdc1,
.dev = {
.platform_data = &lcdc1_screen_info,
},
};
#endif
#ifdef CONFIG_ANDROID_TIMED_GPIO
static struct timed_gpio timed_gpios[] = {
{
@@ -966,12 +1020,20 @@ static struct platform_device device_rfkill_rk = {
#endif
static struct platform_device *devices[] __initdata = {
#ifdef CONFIG_BACKLIGHT_RK29_BL
&rk29_device_backlight,
#endif
#ifdef CONFIG_FB_ROCKCHIP
&device_fb,
#endif
#if defined(CONFIG_LCDC0_RK31)
&device_lcdc0,
#endif
#if defined(CONFIG_LCDC1_RK31)
&device_lcdc1,
#endif
#ifdef CONFIG_BACKLIGHT_RK29_BL
&rk29_device_backlight,
#endif
#ifdef CONFIG_ION
&device_ion,
#endif

View File

@@ -981,6 +981,12 @@ static int __devexit rk31_lcdc_remove(struct platform_device *pdev)
static void rk31_lcdc_shutdown(struct platform_device *pdev)
{
struct rk31_lcdc_device *lcdc_dev = platform_get_drvdata(pdev);
if(lcdc_dev->driver.cur_screen->standby) //standby the screen if necessary
lcdc_dev->driver.cur_screen->standby(1);
if(lcdc_dev->driver.screen_ctr_info->io_disable) //power off the screen if necessary
lcdc_dev->driver.screen_ctr_info->io_disable();
if(lcdc_dev->driver.cur_screen->sscreen_set) //turn off lvds if necessary
lcdc_dev->driver.cur_screen->sscreen_set(lcdc_dev->driver.cur_screen , 0);
rk_fb_unregister(&(lcdc_dev->driver));
rk31_lcdc_deinit(lcdc_dev);
/*iounmap(lcdc_dev->reg_vir_base);