struct rk29fb_inf *inf;
};
-static void rk29fb_suspend(struct early_suspend *h)
+static void rk29fb_early_suspend(struct early_suspend *h)
{
struct suspend_info *info = container_of(h, struct suspend_info,
early_suspend);
fbprintk(">>>>>> power down the screen! \n");
inf->cur_screen->standby(1);
}
+}
+
+static void rk29fb_early_resume(struct early_suspend *h)
+{
+ struct suspend_info *info = container_of(h, struct suspend_info,
+ early_suspend);
+
+ struct rk29fb_inf *inf = info->inf;
+
+ fbprintk(">>>>>> %s : %s\n", __FILE__, __FUNCTION__);
+ if(!inf) {
+ printk("inf==0, rk29fb_resume fail! \n");
+ return ;
+ }
+
+ if(inf->cur_screen->standby)
+ {
+ fbprintk(">>>>>> power on the screen! \n");
+ inf->cur_screen->standby(0);
+ }
+ msleep(100);
+ set_lcd_pin(g_pdev, 1);
+ memcpy((u8*)inf->preg, (u8*)&inf->regbak, 0xa4); //resume reg
+}
+
+static struct suspend_info suspend_info = {
+ .early_suspend.suspend = rk29fb_early_suspend,
+ .early_suspend.resume = rk29fb_early_resume,
+ .early_suspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB,
+};
+#endif
+
+#ifdef CONFIG_PM
+static int rk29fb_suspend(struct platform_device *pdev, pm_message_t mesg)
+{
+ struct rk29fb_inf *inf = platform_get_drvdata(pdev);
+
+ fbprintk(">>>>>> %s : %s\n", __FILE__, __FUNCTION__);
+
+ if(!inf) {
+ printk("inf==0, rk29fb_suspend fail! \n");
+ return 0;
+ }
LcdMskReg(inf, DSP_CTRL1, m_BLANK_MODE , v_BLANK_MODE(1));
LcdMskReg(inf, SYS_CONFIG, m_STANDBY, v_STANDBY(1));
// pmu_set_power_domain(PD_DISPLAY, 0);
inf->in_suspend = 1;
}
-
+ return 0;
}
-static void rk29fb_resume(struct early_suspend *h)
+static int rk29fb_resume(struct platform_device *pdev)
{
- struct suspend_info *info = container_of(h, struct suspend_info,
- early_suspend);
-
- struct rk29fb_inf *inf = info->inf;
+ struct rk29fb_inf *inf = platform_get_drvdata(pdev);
fbprintk(">>>>>> %s : %s\n", __FILE__, __FUNCTION__);
+
if(!inf) {
printk("inf==0, rk29fb_resume fail! \n");
- return ;
+ return 0;
}
if(inf->in_suspend)
LcdMskReg(inf, SYS_CONFIG, m_STANDBY, v_STANDBY(0));
LcdWrReg(inf, REG_CFG_DONE, 0x01);
- if(inf->cur_screen->standby)
- {
- fbprintk(">>>>>> power on the screen! \n");
- inf->cur_screen->standby(0);
- }
- msleep(100);
- set_lcd_pin(g_pdev, 1);
- memcpy((u8*)inf->preg, (u8*)&inf->regbak, 0xa4); //resume reg
+ return 0;
}
-static struct suspend_info suspend_info = {
- .early_suspend.suspend = rk29fb_suspend,
- .early_suspend.resume = rk29fb_resume,
- .early_suspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB,
-};
#endif
static int __init rk29fb_probe (struct platform_device *pdev)
static struct platform_driver rk29fb_driver = {
.probe = rk29fb_probe,
.remove = rk29fb_remove,
+ #ifdef CONFIG_PM
+ .suspend = rk29fb_suspend,
+ .resume = rk29fb_resume,
+ #endif
.driver = {
.name = "rk29-fb",
.owner = THIS_MODULE,