summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKan-Ru Chen <kanru@0xlab.org>2011-06-15 22:25:09 +0100
committerAndy Green <andy.green@linaro.org>2011-06-15 22:25:09 +0100
commit4b3f6b58f83e0a0208f7a0245521f0c09b8ed762 (patch)
tree22f9b7cec0de22924fba23014b64028dc55dce3a
parent3209992ecb658e25ef95f955e3faae5ef56188ca (diff)
After resume the HDMI/DVI output was still blank. It turns out that
framebuffers have to be reconfigured so the output is activated again. Signed-off-by: Kan-Ru Chen <kanru@0xlab.org>
-rw-r--r--drivers/video/omap2/omapfb/omapfb-main.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
index 2bd90ca93d6..e6a4987f39e 100644
--- a/drivers/video/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/omap2/omapfb/omapfb-main.c
@@ -30,6 +30,7 @@
#include <linux/platform_device.h>
#include <linux/omapfb.h>
#include <linux/console.h>
+#include <linux/pm.h>
#include <plat/display.h>
#include <plat/vram.h>
@@ -2274,6 +2275,37 @@ static int omapfb_parse_def_modes(struct omapfb2_device *fbdev)
return r;
}
+#ifdef CONFIG_PM
+static int omapfb_suspend(struct device *dev)
+{
+ return 0;
+}
+
+static int omapfb_resume(struct device *dev)
+{
+ struct platform_device *pdev = to_platform_device(dev);
+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
+ int i;
+
+ if (fbdev != NULL)
+ for (i = 0; i < fbdev->num_fbs; i++)
+ omapfb_set_par(fbdev->fbs[i]);
+
+ return 0;
+}
+#else
+#define omapfb_suspend NULL
+#define omapfb_resume NULL
+#endif
+
+static const struct dev_pm_ops omapfb_pm_ops = {
+ .suspend = omapfb_suspend,
+ .resume = omapfb_resume,
+ .poweroff = omapfb_suspend,
+ .restore = omapfb_resume,
+};
+
+
static int omapfb_probe(struct platform_device *pdev)
{
struct omapfb2_device *fbdev = NULL;
@@ -2440,6 +2472,7 @@ static struct platform_driver omapfb_driver = {
.driver = {
.name = "omapfb",
.owner = THIS_MODULE,
+ .pm = &omapfb_pm_ops,
},
};