diff options
author | Jimmy Rubin <jimmy.rubin@stericsson.com> | 2011-04-20 13:42:44 +0200 |
---|---|---|
committer | Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> | 2011-04-27 12:09:18 +0200 |
commit | 04c92e2481781299683c9b415a250677c8732b6f (patch) | |
tree | aae411b9af1460214dc8cc24f7d80e778346de66 /drivers | |
parent | 2db543f2c8ab34c8e9620733ba266e4f87e38163 (diff) |
[ANDROID] video: mcde: Add console semaphore
Earlysuspend and Lateresume has to use the console semphore.
This semaphore is taken in fbmem.c for every call to mcde_fb.
If this semaphore is not acquired in earlysuspend, a suspend can
occur at the same time as a refresh is ongoing.
This can result in unbalanced disables for VAUX1.
ST-Ericsson ID: 336510
ST-Ericsson Linux next: Not tested, ER 282779
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: Ibed9395cec7208e25a82a03aedb2a0d3c1922c63
Signed-off-by: Jimmy Rubin <jimmy.rubin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21294
Reviewed-by: QATOOLS
Reviewed-by: QATEST
Reviewed-by: Marcel TUNNISSEN <marcel.tuennissen@stericsson.com>
Reviewed-by: Dan JOHANSSON <dan.johansson@stericsson.com>
Reviewed-by: Per PERSSON <per.xb.persson@stericsson.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/mcde/mcde_fb.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/video/mcde/mcde_fb.c b/drivers/video/mcde/mcde_fb.c index 02199331787..8b1cca47339 100644 --- a/drivers/video/mcde/mcde_fb.c +++ b/drivers/video/mcde/mcde_fb.c @@ -19,6 +19,8 @@ #include <linux/hwmem.h> #include <linux/io.h> +#include <linux/console.h> + #include <video/mcde_fb.h> #define MCDE_FB_BPP_MAX 16 @@ -98,10 +100,12 @@ static void early_suspend(struct early_suspend *data) struct mcde_fb *mfb = container_of(data, struct mcde_fb, early_suspend); + acquire_console_sem(); for (i = 0; i < mfb->num_ovlys; i++) { if (mfb->ovlys[i]) mcde_dss_disable_display(mfb->ovlys[i]->ddev); } + release_console_sem(); } static void late_resume(struct early_suspend *data) @@ -110,12 +114,14 @@ static void late_resume(struct early_suspend *data) struct mcde_fb *mfb = container_of(data, struct mcde_fb, early_suspend); + acquire_console_sem(); 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); } } + release_console_sem(); } #endif |