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); | 
