Suspend/resume support DA8xx/OMAP-L1xx frame buffer driver.
This feature has been tested on DA850/OMAP-L138 EVM. For the purpose
of testing, the patch series[1] which adds suspend support for
DA850/OMAP-L138 SoC was applied.

[1] http://patchwork.kernel.org/patch/60260/

Signed-off-by: Chaithrika U S <[email protected]>
---
 drivers/video/da8xx-fb.c |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index b3c22e1..fcaa344 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -29,6 +29,7 @@
 #include <linux/interrupt.h>
 #include <linux/clk.h>
 #include <linux/cpufreq.h>
+#include <linux/console.h>
 #include <video/da8xx-fb.h>
 
 #define DRIVER_NAME "da8xx_lcdc"
@@ -930,11 +931,35 @@ err_request_mem:
 #ifdef CONFIG_PM
 static int fb_suspend(struct platform_device *dev, pm_message_t state)
 {
-        return -EBUSY;
+       struct fb_info *info = platform_get_drvdata(dev);
+       struct da8xx_fb_par *par = info->par;
+
+       acquire_console_sem();
+       if (par->panel_power_ctrl)
+               par->panel_power_ctrl(0);
+
+       fb_set_suspend(info, 1);
+       lcd_disable_raster();
+       clk_disable(par->lcdc_clk);
+       release_console_sem();
+
+       return 0;
 }
 static int fb_resume(struct platform_device *dev)
 {
-        return -EBUSY;
+       struct fb_info *info = platform_get_drvdata(dev);
+       struct da8xx_fb_par *par = info->par;
+
+       acquire_console_sem();
+       if (par->panel_power_ctrl)
+               par->panel_power_ctrl(1);
+
+       clk_enable(par->lcdc_clk);
+       lcd_enable_raster();
+       fb_set_suspend(info, 0);
+       release_console_sem();
+
+       return 0;
 }
 #else
 #define fb_suspend NULL
-- 
1.5.6

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to