aboutsummaryrefslogtreecommitdiff
path: root/drivers/video/mcde/mcde_fb.c
diff options
context:
space:
mode:
authorJimmy Rubin <jimmy.rubin@stericsson.com>2011-01-24 21:29:13 +0100
committerJonas ABERG <jonas.aberg@stericsson.com>2011-02-03 08:20:36 +0100
commit67edae08094661ba6873fc1b297aaee9ab5446e3 (patch)
tree3260030ff000323faedca2b7f866fdee95655fd5 /drivers/video/mcde/mcde_fb.c
parent5d22b2da20edc053e17d05f7c3de6148dc2ab374 (diff)
video: mcde: Add early_suspend support
Disables display device during backlight off by implementing early suspend ST Ericsson ID: ER 318551 Change-Id: If3dc7ee97a03d649baca630c5ba4c8fd5ad9867e Signed-off-by: Jimmy Rubin <jimmy.rubin@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/13346 Reviewed-by: QATOOLS Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'drivers/video/mcde/mcde_fb.c')
-rw-r--r--drivers/video/mcde/mcde_fb.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/video/mcde/mcde_fb.c b/drivers/video/mcde/mcde_fb.c
index 9d89b63021d..1c03aae9214 100644
--- a/drivers/video/mcde/mcde_fb.c
+++ b/drivers/video/mcde/mcde_fb.c
@@ -91,6 +91,34 @@ static struct platform_device mcde_fb_device = {
.id = -1,
};
+#ifdef CONFIG_HAS_EARLYSUSPEND
+static void early_suspend(struct early_suspend *data)
+{
+ int i;
+ struct mcde_fb *mfb =
+ container_of(data, struct mcde_fb, early_suspend);
+
+ for (i = 0; i < mfb->num_ovlys; i++) {
+ if (mfb->ovlys[i])
+ mcde_dss_disable_display(mfb->ovlys[i]->ddev);
+ }
+}
+
+static void late_resume(struct early_suspend *data)
+{
+ int i;
+ struct mcde_fb *mfb =
+ container_of(data, struct mcde_fb, early_suspend);
+
+ for (i = 0; i < mfb->num_ovlys; i++) {
+ if (mfb->ovlys[i]) {
+ struct mcde_overlay *ovly = mfb->ovlys[i];
+ (void) mcde_dss_enable_display(ovly->ddev);
+ }
+ }
+}
+#endif
+
/* Helpers */
static struct pix_fmt_info *find_pix_fmt_info(enum mcde_ovly_pix_fmt pix_fmt)
@@ -651,6 +679,14 @@ struct fb_info *mcde_fb_create(struct mcde_display_device *ddev,
if (ret)
goto fb_register_failed;
+#ifdef CONFIG_HAS_EARLYSUSPEND
+ mfb->early_suspend.level =
+ EARLY_SUSPEND_LEVEL_DISABLE_FB;
+ mfb->early_suspend.suspend = early_suspend;
+ mfb->early_suspend.resume = late_resume;
+ register_early_suspend(&mfb->early_suspend);
+#endif
+
goto out;
fb_register_failed:
mcde_dss_disable_overlay(ovly);