clk_set_rate(iis_clk, 11289600);
#if defined(CONFIG_ARCH_RK29)
rk29_mux_api_set(GPIO2D0_I2S0CLK_MIIRXCLKIN_NAME, GPIO2H_I2S0_CLK);
- #elif defined(CONFIG_ARCH_RK3066B)
+ #elif defined(CONFIG_ARCH_RK3066B)||defined(CONFIG_ARCH_RK3188)
iomux_set(I2S0_CLK);
#elif defined(CONFIG_ARCH_RK30)
rk30_mux_api_set(GPIO0B0_I2S8CHCLK_NAME, GPIO0B_I2S_8CH_CLK);
struct rk3188_lcdc_device *lcdc_dev = NULL;
struct device *dev = &pdev->dev;
rk_screen *screen;
+ rk_screen *screen1;
struct rk29fb_info *screen_ctr_info;
struct resource *res = NULL;
struct resource *mem = NULL;
platform_set_drvdata(pdev, lcdc_dev);
lcdc_dev->id = pdev->id;
screen_ctr_info = (struct rk29fb_info * )pdev->dev.platform_data;
+ screen = kzalloc(sizeof(rk_screen), GFP_KERNEL);
if(!screen_ctr_info)
{
dev_err(dev, "no platform data specified for screen control info!\n");
ret = -EINVAL;
goto err0;
}
- screen = kzalloc(sizeof(rk_screen), GFP_KERNEL);
if(!screen)
{
dev_err(&pdev->dev, "rk screen kmalloc fail!");
ret = -ENOMEM;
goto err0;
}
+ else
+ {
+ lcdc_dev->screen = screen;
+ }
+ screen->lcdc_id = lcdc_dev->id;
+ screen->screen_id = 0;
+#if defined(CONFIG_ONE_LCDC_DUAL_OUTPUT_INF)&& defined(CONFIG_RK610_LVDS)
+ screen1 = kzalloc(sizeof(rk_screen), GFP_KERNEL);
+ if(!screen1)
+ {
+ dev_err(&pdev->dev, ">>rk3066b lcdc screen1 kmalloc fail!");
+ ret = -ENOMEM;
+ goto err0;
+ }
+ screen1->lcdc_id = 1;
+ screen1->screen_id = 1;
+ printk("use lcdc%d and rk610 implemention dual display!\n",lcdc_dev->id);
+
+#endif
res = platform_get_resource(pdev, IORESOURCE_MEM,0);
if (res == NULL)
printk("lcdc%d:reg_phy_base = 0x%08x,reg_vir_base:0x%p\n",pdev->id,lcdc_dev->reg_phy_base, lcdc_dev->regs);
lcdc_dev->driver.dev = dev;
lcdc_dev->driver.screen0 = screen;
+#if defined(CONFIG_ONE_LCDC_DUAL_OUTPUT_INF)&& defined(CONFIG_RK610_LVDS)
+ lcdc_dev->driver.screen1 = screen1;
+#endif
lcdc_dev->driver.cur_screen = screen;
lcdc_dev->driver.screen_ctr_info = screen_ctr_info;