After resume the HDMI/DVI output was still blank. It turns out that framebuffers have to be reconfigured so the output is activated again.
--- drivers/video/omap2/omapfb/omapfb-main.c | 33 ++++++++++++++++++++++++++++++ 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 2bd90ca..a5a0725 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, }, };