Switch back to the previous set resolution when unblanking the screen.
authorLars-Peter Clausen <lars@metafoo.de>
Fri, 6 Mar 2009 21:25:25 +0000 (21:25 +0000)
committerLars-Peter Clausen <lars@metafoo.de>
Fri, 6 Mar 2009 21:25:25 +0000 (21:25 +0000)
SVN-Revision: 14768

target/linux/s3c24xx/patches-2.6.28/010-preserve-resolution.patch [new file with mode: 0644]

diff --git a/target/linux/s3c24xx/patches-2.6.28/010-preserve-resolution.patch b/target/linux/s3c24xx/patches-2.6.28/010-preserve-resolution.patch
new file mode 100644 (file)
index 0000000..6beff0d
--- /dev/null
@@ -0,0 +1,48 @@
+diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c
+index a1d48dd..2ca1bd4 100644
+--- a/drivers/video/display/jbt6k74.c
++++ b/drivers/video/display/jbt6k74.c
+@@ -443,8 +443,17 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state)
+               break;
+       }
+       
+-      if (rc == 0)
++      if (rc == 0) {
++              switch (new_state) {
++              case JBT_STATE_NORMAL:
++              case JBT_STATE_QVGA_NORMAL:
++                      jbt->last_state = new_state;
++                      break;
++              default:
++                      break;
++              }
+               jbt->state = new_state;
++      }
+       return rc;
+ }
+@@ -595,7 +604,14 @@ static int fb_notifier_callback(struct notifier_block *self,
+       switch (fb_blank) {
+       case FB_BLANK_UNBLANK:
+               dev_info(&jbt->spi_dev->dev, "**** jbt6k74 unblank\n");
+-              jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
++              switch (jbt->last_state) {
++              case JBT_STATE_QVGA_NORMAL:
++                      jbt6k74_enter_state(jbt, JBT_STATE_QVGA_NORMAL);
++                      break;
++              default:
++                      jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
++                      break;
++              }
+               break;
+       case FB_BLANK_NORMAL:
+               dev_info(&jbt->spi_dev->dev, "**** jbt6k74 normal\n");
+@@ -720,8 +736,6 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
+ {
+       struct jbt_info *jbt = dev_get_drvdata(&spi->dev);
+-      /* Save mode for resume */
+-      jbt->last_state = jbt->state;
+       /* FIXME: deep standby causes WSOD on certain devices. We use
+        * sleep as workaround */
+       jbt6k74_enter_state(jbt, JBT_STATE_SLEEP);