On 9 June 2011 17:58, Kan-Ru Chen kanru@0xlab.org wrote:
After resume the HDMI/DVI output was still blank. It turns out that framebuffers have to be reconfigured so the output is activated again.
Hi Andy,
Can you review Kan-Ru's patch? Since Android assumes full-functional PM, it is vital to improve the resuming behavior of OMAP framebuffer.
Thanks, -jserv
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,
}, };
-- 1.7.5.3