aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch276
1 files changed, 0 insertions, 276 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch
deleted file mode 100644
index 35a29bfe3c..0000000000
--- a/target/linux/s3c24xx/patches-2.6.24/1327-jbt6k74_no_deep_sleep.patch.patch
+++ /dev/null
@@ -1,276 +0,0 @@
-From 62b3330f97b940c715a8931abc7161c99362abaa Mon Sep 17 00:00:00 2001
-From: Nicolas Dufresne <nicolas.dufresne@gmail.com>
-Date: Thu, 4 Dec 2008 17:49:02 +0000
-Subject: [PATCH] jbt6k74_no_deep_sleep.patch
-
-This patch from
-
-https://docs.openmoko.org/trac/ticket/1841
-
-defeats deep sleep on the LCM ASIC and is reported to stop the WSOD
-behaviour on LCMs that exhibit it.
----
- drivers/video/display/jbt6k74.c | 114 ++++++++++++++++++++++-----------------
- 1 files changed, 65 insertions(+), 49 deletions(-)
-
-diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c
-index 9570543..0635823 100644
---- a/drivers/video/display/jbt6k74.c
-+++ b/drivers/video/display/jbt6k74.c
-@@ -252,22 +252,36 @@ static int jbt_init_regs(struct jbt_info *jbt, int qvga)
- return rc ? -EIO : 0;
- }
-
--static int standby_to_sleep(struct jbt_info *jbt)
-+int jbt6k74_display_onoff(struct jbt_info *jbt, int on)
- {
-- int rc;
--
-- /* three times command zero */
-- rc = jbt_reg_write_nodata(jbt, 0x00);
-- mdelay(1);
-- rc |= jbt_reg_write_nodata(jbt, 0x00);
-- mdelay(1);
-- rc |= jbt_reg_write_nodata(jbt, 0x00);
-- mdelay(1);
--
-- /* deep standby out */
-- rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x17);
-+ if (on)
-+ return jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_ON);
-+ else
-+ return jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF);
-+}
-+EXPORT_SYMBOL_GPL(jbt6k74_display_onoff);
-
-- return rc ? -EIO : 0;
-+static int standby_to_sleep(struct jbt_info *jbt)
-+{
-+ static int once = 0;
-+ if (!once++) {
-+ int rc;
-+
-+ /* three times command zero */
-+ rc = jbt_reg_write_nodata(jbt, 0x00);
-+ mdelay(1);
-+ rc |= jbt_reg_write_nodata(jbt, 0x00);
-+ mdelay(1);
-+ rc |= jbt_reg_write_nodata(jbt, 0x00);
-+ mdelay(1);
-+
-+ /* deep standby out */
-+ rc |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x17);
-+
-+ return rc ? -EIO : 0;
-+ }
-+ else
-+ return 0;
- }
-
- static int sleep_to_normal(struct jbt_info *jbt)
-@@ -292,6 +306,9 @@ static int sleep_to_normal(struct jbt_info *jbt)
- /* initialize register set */
- rc |= jbt_init_regs(jbt, 0);
-
-+ /* Turn on display */
-+ rc |= jbt6k74_display_onoff(jbt, 1);
-+
- return rc ? -EIO : 0;
- }
-
-@@ -317,6 +334,9 @@ static int sleep_to_qvga_normal(struct jbt_info *jbt)
- /* initialize register set for qvga*/
- rc |= jbt_init_regs(jbt, 1);
-
-+ /* Turn on display */
-+ rc |= jbt6k74_display_onoff(jbt, 1);
-+
- return rc ? -EIO : 0;
- }
-
-@@ -324,7 +344,8 @@ static int normal_to_sleep(struct jbt_info *jbt)
- {
- int rc;
-
-- rc = jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF);
-+ rc = jbt6k74_display_onoff(jbt, 0);
-+ rc |= jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF);
- rc |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0x8002);
- rc |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_IN);
-
-@@ -333,7 +354,11 @@ static int normal_to_sleep(struct jbt_info *jbt)
-
- static int sleep_to_standby(struct jbt_info *jbt)
- {
-+#if 0
- return jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x00);
-+#else
-+ return 0;
-+#endif
- }
-
- /* frontend function */
-@@ -436,6 +461,7 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state)
- }
- break;
- }
-+
- if (rc == 0)
- jbt->state = new_state;
-
-@@ -443,15 +469,6 @@ int jbt6k74_enter_state(struct jbt_info *jbt, enum jbt_state new_state)
- }
- EXPORT_SYMBOL_GPL(jbt6k74_enter_state);
-
--int jbt6k74_display_onoff(struct jbt_info *jbt, int on)
--{
-- if (on)
-- return jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_ON);
-- else
-- return jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF);
--}
--EXPORT_SYMBOL_GPL(jbt6k74_display_onoff);
--
- static ssize_t state_read(struct device *dev, struct device_attribute *attr,
- char *buf)
- {
-@@ -475,17 +492,6 @@ static ssize_t state_write(struct device *dev, struct device_attribute *attr,
- rc = jbt6k74_enter_state(jbt, i);
- if (rc)
- return rc;
-- switch (i) {
-- case JBT_STATE_NORMAL:
-- case JBT_STATE_QVGA_NORMAL:
-- /* Enable display again after deep-standby */
-- rc = jbt6k74_display_onoff(jbt, 1);
-- if (rc)
-- return rc;
-- break;
-- default:
-- break;
-- }
- return count;
- }
- }
-@@ -528,6 +534,8 @@ static ssize_t gamma_write(struct device *dev, struct device_attribute *attr,
- int reg = reg_by_string(attr->attr.name);
- unsigned long val = simple_strtoul(buf, NULL, 10);
-
-+ dev_info(dev, "**** jbt6k74 writing gama %lu\n", val & 0xff);
-+
- jbt_reg_write(jbt, reg, val & 0xff);
-
- return count;
-@@ -567,19 +575,27 @@ 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");
-+ break;
- case FB_BLANK_NORMAL:
-- jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
-- jbt6k74_display_onoff(jbt, 1);
-+ dev_info(&jbt->spi_dev->dev, "**** jbt6k74 normal\n");
-+ /*jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
-+ jbt6k74_display_onoff(jbt, 1); */
- break;
- case FB_BLANK_VSYNC_SUSPEND:
-+ dev_info(&jbt->spi_dev->dev, "**** jbt6k74 vsync suspend\n");
-+ break;
- case FB_BLANK_HSYNC_SUSPEND:
-+ dev_info(&jbt->spi_dev->dev, "**** jbt6k74 hsync suspend\n");
- /* FIXME: we disable SLEEP since it would result in
- * a visible artefact (white screen) before the backlight
- * is dimmed to a dark enough level */
- /* jbt6k74_enter_state(jbt, JBT_STATE_SLEEP); */
-+ /*jbt6k74_display_onoff(jbt, 0);*/
- break;
- case FB_BLANK_POWERDOWN:
-- jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY);
-+ dev_info(&jbt->spi_dev->dev, "**** jbt6k74 powerdown\n");
-+ /*jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY);*/
- break;
- }
-
-@@ -621,16 +637,10 @@ static int __devinit jbt_probe(struct spi_device *spi)
- goto err_free_drvdata;
- }
-
-- rc = jbt6k74_display_onoff(jbt, 1);
-- if (rc < 0) {
-- dev_err(&spi->dev, "cannot switch display on\n");
-- goto err_standby;
-- }
--
- rc = sysfs_create_group(&spi->dev.kobj, &jbt_attr_group);
- if (rc < 0) {
- dev_err(&spi->dev, "cannot create sysfs group\n");
-- goto err_off;
-+ goto err_standby;
- }
-
- jbt->fb_notif.notifier_call = fb_notifier_callback;
-@@ -644,8 +654,6 @@ static int __devinit jbt_probe(struct spi_device *spi)
-
- err_sysfs:
- sysfs_remove_group(&spi->dev.kobj, &jbt_attr_group);
--err_off:
-- jbt6k74_display_onoff(jbt, 0);
- err_standby:
- jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY);
- err_free_drvdata:
-@@ -676,6 +684,8 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
- struct jbt_info *jbt = dev_get_drvdata(&spi->dev);
- struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data;
-
-+ dev_info(&spi->dev, "**** jbt6k74 suspend start\n");
-+
- /* platform can register resume dependencies here, if any */
- if (jbt6k74_pdata->suspending)
- (jbt6k74_pdata->suspending)(0, spi);
-@@ -689,6 +699,8 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
-
- /* (jbt6k74_pdata->reset)(0, 0); */
-
-+ dev_info(&spi->dev, "**** jbt6k74 suspend end\n");
-+
- return 0;
- }
-
-@@ -697,6 +709,7 @@ int jbt6k74_resume(struct spi_device *spi)
- struct jbt_info *jbt = dev_get_drvdata(&spi->dev);
- struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data;
-
-+ dev_info(&spi->dev, "**** jbt6k74 resume start\n");
- if (jbt6k74_pdata->all_dependencies_resumed)
- if (!(jbt6k74_pdata->all_dependencies_resumed)(0))
- return 0;
-@@ -704,8 +717,10 @@ int jbt6k74_resume(struct spi_device *spi)
- /* we can get called twice with all dependencies resumed if our core
- * resume callback is last of all. Protect against doing anything twice
- */
-- if (jbt->have_resumed)
-+ if (jbt->have_resumed) {
-+ dev_info(&spi->dev, "**** jbt6k74 already resumed\n");
- return 0;
-+ }
-
- jbt->have_resumed |= 1;
-
-@@ -717,11 +732,12 @@ int jbt6k74_resume(struct spi_device *spi)
- jbt6k74_enter_state(jbt, JBT_STATE_NORMAL);
- break;
- }
-- jbt6k74_display_onoff(jbt, 1);
-
- if (jbt6k74_pdata->resuming)
- (jbt6k74_pdata->resuming)(0);
-
-+ dev_info(&spi->dev, "**** jbt6k74 resume end\n");
-+
- return 0;
- }
- EXPORT_SYMBOL_GPL(jbt6k74_resume);
---
-1.5.6.5
-