diff options
author | Jimmy Rubin <jimmy.rubin@stericsson.com> | 2011-01-24 21:29:13 +0100 |
---|---|---|
committer | Jonas ABERG <jonas.aberg@stericsson.com> | 2011-02-03 08:20:36 +0100 |
commit | 67edae08094661ba6873fc1b297aaee9ab5446e3 (patch) | |
tree | 3260030ff000323faedca2b7f866fdee95655fd5 /drivers/video/mcde/mcde_fb.c | |
parent | 5d22b2da20edc053e17d05f7c3de6148dc2ab374 (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.c | 36 |
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); |