Switch back to the previous set resolution when unblanking the screen.
[openwrt/svn-archive/archive.git] / target / linux / s3c24xx / patches-2.6.28 / 010-preserve-resolution.patch
1 diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c
2 index a1d48dd..2ca1bd4 100644
3 --- a/drivers/video/display/jbt6k74.c
4 +++ b/drivers/video/display/jbt6k74.c
5 @@ -443,8 +443,17 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state)
6 break;
7 }
8
9 - if (rc == 0)
10 + if (rc == 0) {
11 + switch (new_state) {
12 + case JBT_STATE_NORMAL:
13 + case JBT_STATE_QVGA_NORMAL:
14 + jbt->last_state = new_state;
15 + break;
16 + default:
17 + break;
18 + }
19 jbt->state = new_state;
20 + }
21
22 return rc;
23 }
24 @@ -595,7 +604,14 @@ static int fb_notifier_callback(struct notifier_block *self,
25 switch (fb_blank) {
26 case FB_BLANK_UNBLANK:
27 dev_info(&jbt->spi_dev->dev, "**** jbt6k74 unblank\n");
28 - jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
29 + switch (jbt->last_state) {
30 + case JBT_STATE_QVGA_NORMAL:
31 + jbt6k74_enter_state(jbt, JBT_STATE_QVGA_NORMAL);
32 + break;
33 + default:
34 + jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
35 + break;
36 + }
37 break;
38 case FB_BLANK_NORMAL:
39 dev_info(&jbt->spi_dev->dev, "**** jbt6k74 normal\n");
40 @@ -720,8 +736,6 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
41 {
42 struct jbt_info *jbt = dev_get_drvdata(&spi->dev);
43
44 - /* Save mode for resume */
45 - jbt->last_state = jbt->state;
46 /* FIXME: deep standby causes WSOD on certain devices. We use
47 * sleep as workaround */
48 jbt6k74_enter_state(jbt, JBT_STATE_SLEEP);