return 0;
}
-/*
+
static int rk312x_lcdc_disable_irq(struct lcdc_device *lcdc_dev)
{
u32 mask, val;
}
mdelay(1);
return 0;
-}*/
+}
static int win0_set_addr(struct lcdc_device *lcdc_dev, u32 addr)
static void rk312x_lcdc_deinit(struct lcdc_device *lcdc_dev)
{
+ rk312x_lcdc_disable_irq(lcdc_dev);
}
static u32 calc_sclk_freq(struct rk_screen *src_screen,
if (!dev_drv->suspend_flag)
return 0;
rk_disp_pwr_enable(dev_drv);
- dev_drv->suspend_flag = 0;
rk312x_lcdc_clk_enable(lcdc_dev);
rk312x_lcdc_reg_restore(lcdc_dev);
}
spin_unlock(&lcdc_dev->reg_lock);
+ dev_drv->suspend_flag = 0;
if (dev_drv->trsm_ops && dev_drv->trsm_ops->enable)
dev_drv->trsm_ops->enable();
- msleep(160);
+ mdelay(100);
+
return 0;
}
static void rk312x_lcdc_shutdown(struct platform_device *pdev)
{
struct lcdc_device *lcdc_dev = platform_get_drvdata(pdev);
+ struct rk_lcdc_driver *dev_drv=&lcdc_dev->driver;
- rk312x_lcdc_early_suspend(&lcdc_dev->driver);
- rk312x_lcdc_deinit(lcdc_dev);
+ flush_kthread_worker(&dev_drv->update_regs_worker);
+ kthread_stop(dev_drv->update_regs_thread);
- if (lcdc_dev->backlight)
- put_device(&lcdc_dev->backlight->dev);
+ rk312x_lcdc_deinit(lcdc_dev);
+ rk312x_lcdc_clk_disable(lcdc_dev);
+ rk_disp_pwr_disable(&lcdc_dev->driver);
}
static struct platform_driver rk312x_lcdc_driver = {