};
#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[] = {
{
#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
#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();
};
#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[] = {
{
#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
#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();
};
#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] = {
#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
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);