diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1093-fix-lcm-reinit-post-resume.patch.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1093-fix-lcm-reinit-post-resume.patch.patch | 286 |
1 files changed, 0 insertions, 286 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1093-fix-lcm-reinit-post-resume.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1093-fix-lcm-reinit-post-resume.patch.patch deleted file mode 100644 index 1f41acfa26..0000000000 --- a/target/linux/s3c24xx/patches-2.6.24/1093-fix-lcm-reinit-post-resume.patch.patch +++ /dev/null @@ -1,286 +0,0 @@ -From bcf06c774c2c55fbd05b74ea01f1a2a6b3de2dc7 Mon Sep 17 00:00:00 2001 -From: warmcat <andy@warmcat.com> -Date: Sun, 13 Apr 2008 07:25:50 +0100 -Subject: [PATCH] fix-lcm-reinit-post-resume.patch - ---- - arch/arm/mach-s3c2440/mach-gta02.c | 12 +++++++++ - drivers/mfd/glamo/glamo-core.c | 15 ++++++++++- - drivers/mfd/glamo/glamo-spi-gpio.c | 38 ++++++++++++++++++++++++++-- - drivers/video/display/jbt6k74.c | 47 ++++++++++++++++++++++++++++++++---- - include/linux/glamofb.h | 1 + - include/linux/jbt6k74.h | 8 ++++++ - 6 files changed, 111 insertions(+), 10 deletions(-) - create mode 100644 include/linux/jbt6k74.h - -diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c -index f2b1b66..750fd97 100644 ---- a/arch/arm/mach-s3c2440/mach-gta02.c -+++ b/arch/arm/mach-s3c2440/mach-gta02.c -@@ -76,6 +76,7 @@ - #include <asm/plat-s3c24xx/cpu.h> - #include <asm/plat-s3c24xx/pm.h> - #include <asm/plat-s3c24xx/udc.h> -+#include <linux/jbt6k74.h> - - #include <linux/glamofb.h> - -@@ -756,10 +757,21 @@ static struct s3c2410_ts_mach_info gta02_ts_cfg = { - - /* SPI: LCM control interface attached to Glamo3362 */ - -+void gta02_jbt6k74_reset(int devidx, int level) -+{ -+ glamo_lcm_reset(level); -+} -+ -+ -+const struct jbt6k74_platform_data jbt6k74_pdata = { -+ .reset = gta02_jbt6k74_reset, -+}; -+ - static struct spi_board_info gta02_spi_board_info[] = { - { - .modalias = "jbt6k74", - /* platform_data */ -+ .platform_data = &jbt6k74_pdata, - /* controller_data */ - /* irq */ - .max_speed_hz = 10 * 1000 * 1000, -diff --git a/drivers/mfd/glamo/glamo-core.c b/drivers/mfd/glamo/glamo-core.c -index ffa4945..2076e61 100644 ---- a/drivers/mfd/glamo/glamo-core.c -+++ b/drivers/mfd/glamo/glamo-core.c -@@ -513,6 +513,17 @@ void glamo_engine_reset(struct glamo_core *glamo, enum glamo_engine engine) - } - EXPORT_SYMBOL_GPL(glamo_engine_reset); - -+void glamo_lcm_reset(int level) -+{ -+ if (!glamo_handle) -+ return; -+ -+ glamo_gpio_setpin(glamo_handle, GLAMO_GPIO4, level); -+ glamo_gpio_cfgpin(glamo_handle, GLAMO_GPIO4_OUTPUT); -+ -+} -+EXPORT_SYMBOL_GPL(glamo_lcm_reset); -+ - enum glamo_pll { - GLAMO_PLL1, - GLAMO_PLL2, -@@ -1142,8 +1153,8 @@ static int glamo_resume(struct platform_device *pdev) - static struct platform_driver glamo_driver = { - .probe = glamo_probe, - .remove = glamo_remove, -- .suspend = glamo_suspend, -- .resume = glamo_resume, -+ .suspend_late = glamo_suspend, -+ .resume_early = glamo_resume, - .driver = { - .name = "glamo3362", - .owner = THIS_MODULE, -diff --git a/drivers/mfd/glamo/glamo-spi-gpio.c b/drivers/mfd/glamo/glamo-spi-gpio.c -index 73926bd..eda7322 100644 ---- a/drivers/mfd/glamo/glamo-spi-gpio.c -+++ b/drivers/mfd/glamo/glamo-spi-gpio.c -@@ -224,14 +224,46 @@ static int glamo_spigpio_remove(struct platform_device *pdev) - return 0; - } - --#define glamo_spigpio_suspend NULL -+/*#define glamo_spigpio_suspend NULL - #define glamo_spigpio_resume NULL -+*/ -+ -+ -+#ifdef CONFIG_PM -+static int glamo_spigpio_suspend(struct platform_device *pdev, pm_message_t state) -+{ -+ return 0; -+} -+ -+static int glamo_spigpio_resume(struct platform_device *pdev) -+{ -+ struct glamo_spigpio *sp = platform_get_drvdata(pdev); -+ -+ if (!sp) -+ return 0; -+ -+ /* set state of spi pins */ -+ glamo_gpio_setpin(sp->glamo, sp->info->pin_clk, 0); -+ glamo_gpio_setpin(sp->glamo, sp->info->pin_mosi, 0); -+ glamo_gpio_setpin(sp->glamo, sp->info->pin_cs, 1); -+ -+ glamo_gpio_cfgpin(sp->glamo, sp->info->pin_clk); -+ glamo_gpio_cfgpin(sp->glamo, sp->info->pin_mosi); -+ glamo_gpio_cfgpin(sp->glamo, sp->info->pin_cs); -+ if (sp->info->pin_miso) -+ glamo_gpio_cfgpin(sp->glamo, sp->info->pin_miso); -+ -+ return 0; -+} -+#endif - - static struct platform_driver glamo_spi_drv = { - .probe = glamo_spigpio_probe, - .remove = glamo_spigpio_remove, -- .suspend = glamo_spigpio_suspend, -- .resume = glamo_spigpio_resume, -+#ifdef CONFIG_PM -+ .suspend_late = glamo_spigpio_suspend, -+ .resume_early = glamo_spigpio_resume, -+#endif - .driver = { - .name = "glamo-spi-gpio", - .owner = THIS_MODULE, -diff --git a/drivers/video/display/jbt6k74.c b/drivers/video/display/jbt6k74.c -index d021d7e..d7e9442 100644 ---- a/drivers/video/display/jbt6k74.c -+++ b/drivers/video/display/jbt6k74.c -@@ -27,6 +27,8 @@ - #include <linux/device.h> - #include <linux/platform_device.h> - #include <linux/delay.h> -+#include <linux/workqueue.h> -+#include <linux/jbt6k74.h> - - #include <linux/spi/spi.h> - -@@ -114,11 +116,15 @@ struct jbt_info { - struct mutex lock; /* protects tx_buf and reg_cache */ - u16 tx_buf[8]; - u16 reg_cache[0xEE]; -+ struct work_struct work; - }; - - #define JBT_COMMAND 0x000 - #define JBT_DATA 0x100 - -+static void jbt_resume_work(struct work_struct *work); -+ -+ - static int jbt_reg_write_nodata(struct jbt_info *jbt, u8 reg) - { - int rc; -@@ -130,6 +136,9 @@ static int jbt_reg_write_nodata(struct jbt_info *jbt, u8 reg) - 1*sizeof(u16)); - if (rc == 0) - jbt->reg_cache[reg] = 0; -+ else -+ printk(KERN_ERR"jbt_reg_write_nodata spi_write ret %d\n", -+ rc); - - mutex_unlock(&jbt->lock); - -@@ -149,6 +158,8 @@ static int jbt_reg_write(struct jbt_info *jbt, u8 reg, u8 data) - 2*sizeof(u16)); - if (rc == 0) - jbt->reg_cache[reg] = data; -+ else -+ printk(KERN_ERR"jbt_reg_write spi_write ret %d\n", rc); - - mutex_unlock(&jbt->lock); - -@@ -169,6 +180,8 @@ static int jbt_reg_write16(struct jbt_info *jbt, u8 reg, u16 data) - 3*sizeof(u16)); - if (rc == 0) - jbt->reg_cache[reg] = data; -+ else -+ printk(KERN_ERR"jbt_reg_write16 spi_write ret %d\n", rc); - - mutex_unlock(&jbt->lock); - -@@ -563,6 +576,8 @@ static int __devinit jbt_probe(struct spi_device *spi) - if (!jbt) - return -ENOMEM; - -+ INIT_WORK(&jbt->work, jbt_resume_work); -+ - jbt->spi_dev = spi; - jbt->state = JBT_STATE_DEEP_STANDBY; - mutex_init(&jbt->lock); -@@ -618,28 +633,50 @@ static int __devexit jbt_remove(struct spi_device *spi) - 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; - - /* Save mode for resume */ - jbt->last_state = jbt->state; - jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); - -+ (jbt6k74_pdata->reset)(0, 0); -+ - return 0; - } - --static int jbt_resume(struct spi_device *spi) -+static void jbt_resume_work(struct work_struct *work) - { -- struct jbt_info *jbt = dev_get_drvdata(&spi->dev); -+ struct jbt_info *jbt = container_of(work, struct jbt_info, work); -+ -+ printk(KERN_INFO"jbt_resume_work waiting...\n"); -+ msleep(2000); -+ printk(KERN_INFO"jbt_resume_work GO...\n"); - -- jbt6k74_enter_state(jbt, jbt->last_state); -+ jbt6k74_enter_state(jbt, JBT_STATE_DEEP_STANDBY); -+ msleep(100); - - switch (jbt->last_state) { -- case JBT_STATE_NORMAL: - case JBT_STATE_QVGA_NORMAL: -- jbt6k74_display_onoff(jbt, 1); -+ jbt6k74_enter_state(jbt, JBT_STATE_QVGA_NORMAL); - break; - default: -+ jbt6k74_enter_state(jbt, JBT_STATE_NORMAL); - break; - } -+ jbt6k74_display_onoff(jbt, 1); -+ -+ printk(KERN_INFO"jbt_resume_work done...\n"); -+} -+ -+static int jbt_resume(struct spi_device *spi) -+{ -+ struct jbt_info *jbt = dev_get_drvdata(&spi->dev); -+ struct jbt6k74_platform_data *jbt6k74_pdata = spi->dev.platform_data; -+ -+ (jbt6k74_pdata->reset)(0, 1); -+ -+ if (!schedule_work(&jbt->work)) -+ dev_err(&spi->dev, "Unable to schedule LCM wakeup work\n"); - - return 0; - } -diff --git a/include/linux/glamofb.h b/include/linux/glamofb.h -index 24742a2..75eefef 100644 ---- a/include/linux/glamofb.h -+++ b/include/linux/glamofb.h -@@ -35,5 +35,6 @@ struct glamofb_platform_data { - - void glamofb_cmd_mode(struct glamofb_handle *gfb, int on); - int glamofb_cmd_write(struct glamofb_handle *gfb, u_int16_t val); -+void glamo_lcm_reset(int level); - - #endif -diff --git a/include/linux/jbt6k74.h b/include/linux/jbt6k74.h -new file mode 100644 -index 0000000..3fbe178 ---- /dev/null -+++ b/include/linux/jbt6k74.h -@@ -0,0 +1,8 @@ -+#ifndef __JBT6K74_H__ -+#define __JBT6K74_H__ -+ -+struct jbt6k74_platform_data { -+ void (* reset)(int devindex, int level); -+}; -+ -+#endif --- -1.5.6.5 - |