mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
rk30 fb: adjust fb lcdc backlight driver load and remove order
load: fb-->lcdc-->backlight
remove backlight-->lcdc-->fb
attention: product specific board should modifed according
to board-rk30-sdk.c or board-rk30-ds1001b.c
This commit is contained in:
@@ -899,6 +899,62 @@ static struct platform_device device_fb = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_LCDC0_RK30)
|
||||
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_RK30)
|
||||
extern struct rk29fb_info lcdc1_screen_info;
|
||||
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[] = {
|
||||
{
|
||||
@@ -1210,12 +1266,20 @@ static struct platform_device rk30_device_adc_battery = {
|
||||
#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_RK30)
|
||||
&device_lcdc0,
|
||||
#endif
|
||||
#if defined(CONFIG_LCDC1_RK30)
|
||||
&device_lcdc1,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BACKLIGHT_RK29_BL
|
||||
&rk29_device_backlight,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ION
|
||||
&device_ion,
|
||||
#endif
|
||||
@@ -1469,10 +1533,12 @@ static void __init rk30_reserve(void)
|
||||
#ifdef CONFIG_FB_ROCKCHIP
|
||||
resource_fb[0].start = board_mem_reserve_add("fb0", RK30_FB0_MEM_SIZE);
|
||||
resource_fb[0].end = resource_fb[0].start + RK30_FB0_MEM_SIZE - 1;
|
||||
#if 0
|
||||
resource_fb[1].start = board_mem_reserve_add("ipp buf", RK30_FB0_MEM_SIZE);
|
||||
resource_fb[1].end = resource_fb[1].start + RK30_FB0_MEM_SIZE - 1;
|
||||
resource_fb[2].start = board_mem_reserve_add("fb2", RK30_FB0_MEM_SIZE);
|
||||
resource_fb[2].end = resource_fb[2].start + RK30_FB0_MEM_SIZE - 1;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_VIDEO_RK29
|
||||
rk30_camera_request_reserve_mem();
|
||||
|
||||
@@ -646,6 +646,61 @@ static struct platform_device device_fb = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_LCDC0_RK30)
|
||||
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_RK30)
|
||||
extern struct rk29fb_info lcdc1_screen_info;
|
||||
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[] = {
|
||||
{
|
||||
@@ -1078,12 +1133,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_RK30)
|
||||
&device_lcdc0,
|
||||
#endif
|
||||
#if defined(CONFIG_LCDC1_RK30)
|
||||
&device_lcdc1,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BACKLIGHT_RK29_BL
|
||||
&rk29_device_backlight,
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ION
|
||||
&device_ion,
|
||||
#endif
|
||||
@@ -1454,10 +1517,12 @@ static void __init rk30_reserve(void)
|
||||
#ifdef CONFIG_FB_ROCKCHIP
|
||||
resource_fb[0].start = board_mem_reserve_add("fb0", RK30_FB0_MEM_SIZE);
|
||||
resource_fb[0].end = resource_fb[0].start + RK30_FB0_MEM_SIZE - 1;
|
||||
#if 0
|
||||
resource_fb[1].start = board_mem_reserve_add("ipp buf", RK30_FB0_MEM_SIZE);
|
||||
resource_fb[1].end = resource_fb[1].start + RK30_FB0_MEM_SIZE - 1;
|
||||
resource_fb[2].start = board_mem_reserve_add("fb2", RK30_FB0_MEM_SIZE);
|
||||
resource_fb[2].end = resource_fb[2].start + RK30_FB0_MEM_SIZE - 1;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_VIDEO_RK29
|
||||
rk30_camera_request_reserve_mem();
|
||||
|
||||
@@ -924,62 +924,6 @@ static struct platform_device device_nand = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_LCDC0_RK30) || defined(CONFIG_LCDC0_RK31)
|
||||
extern struct rk29fb_info lcdc0_screen_info;
|
||||
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_RK30) || defined(CONFIG_LCDC1_RK31)
|
||||
extern struct rk29fb_info lcdc1_screen_info;
|
||||
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_HDMI_RK30
|
||||
static struct resource resource_hdmi[] = {
|
||||
[0] = {
|
||||
@@ -1387,12 +1331,6 @@ static int __init rk30_init_devices(void)
|
||||
#if defined(CONFIG_ARCH_RK3066B)
|
||||
platform_device_register(&device_sgx);
|
||||
#endif
|
||||
#if defined(CONFIG_LCDC0_RK30) || defined(CONFIG_LCDC0_RK31)
|
||||
platform_device_register(&device_lcdc0);
|
||||
#endif
|
||||
#if defined(CONFIG_LCDC1_RK30) || defined(CONFIG_LCDC1_RK31)
|
||||
platform_device_register(&device_lcdc1);
|
||||
#endif
|
||||
#ifdef CONFIG_HDMI_RK30
|
||||
platform_device_register(&device_hdmi);
|
||||
#endif
|
||||
|
||||
@@ -1199,6 +1199,12 @@ static int __devexit rk30_lcdc_remove(struct platform_device *pdev)
|
||||
static void rk30_lcdc_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
struct rk30_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));
|
||||
rk30_lcdc_deinit(lcdc_dev);
|
||||
/*iounmap(lcdc_dev->reg_vir_base);
|
||||
|
||||
Reference in New Issue
Block a user