diff options
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.28/010-preserve-resolution.patch | 48 |
1 files changed, 48 insertions, 0 deletions
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 index 000000000..6beff0d7b --- /dev/null +++ b/target/linux/s3c24xx/patches-2.6.28/010-preserve-resolution.patch @@ -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); |