aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux/acern30/s3c2410_ts-pm.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/linux/linux/acern30/s3c2410_ts-pm.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
downloadopenembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.tar.gz
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/linux/linux/acern30/s3c2410_ts-pm.patch')
-rw-r--r--recipes/linux/linux/acern30/s3c2410_ts-pm.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/recipes/linux/linux/acern30/s3c2410_ts-pm.patch b/recipes/linux/linux/acern30/s3c2410_ts-pm.patch
new file mode 100644
index 0000000000..ef89f7042f
--- /dev/null
+++ b/recipes/linux/linux/acern30/s3c2410_ts-pm.patch
@@ -0,0 +1,73 @@
+Index: linux-2.6.14/drivers/input/touchscreen/s3c2410_ts.c
+===================================================================
+--- linux-2.6.14.orig/drivers/input/touchscreen/s3c2410_ts.c
++++ linux-2.6.14/drivers/input/touchscreen/s3c2410_ts.c
+@@ -56,6 +56,8 @@
+ /* For ts.dev.id.version */
+ #define S3C2410TSVERSION 0x0101
+
++#define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
++
+ #define WAIT4INT(x) (((x)<<8) | \
+ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \
+ S3C2410_ADCTSC_XY_PST(3))
+@@ -321,10 +323,59 @@ static int s3c2410ts_remove(struct devic
+ return 0;
+ }
+
++#ifdef CONFIG_PM
++
++static int s3c2410ts_suspend(struct device *dev, pm_message_t state)
++{
++ writel(TSC_SLEEP, base_addr+S3C2410_ADCTSC);
++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_STDBM,
++ base_addr+S3C2410_ADCCON);
++
++ disable_irq(IRQ_ADC);
++ disable_irq(IRQ_TC);
++
++ clk_disable(adc_clock);
++
++ return 0;
++}
++
++static int s3c2410ts_resume(struct device *dev)
++{
++ struct s3c2410_ts_mach_info *info =
++ (struct s3c2410_ts_mach_info *)dev->platform_data;
++
++ clk_enable(adc_clock);
++ msleep(1);
++
++ enable_irq(IRQ_ADC);
++ enable_irq(IRQ_TC);
++
++ if ((info->presc&0xff) > 0)
++ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
++ base_addr+S3C2410_ADCCON);
++ else
++ writel(0,base_addr+S3C2410_ADCCON);
++
++ /* Initialise registers */
++ if ((info->delay&0xffff) > 0)
++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
++
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++ return 0;
++}
++
++#else
++#define s3c2410ts_suspend NULL
++#define s3c2410ts_resume NULL
++#endif
++
+ static struct device_driver s3c2410ts_driver = {
+ .name = "s3c2410-ts",
+ .bus = &platform_bus_type,
+ .probe = s3c2410ts_probe,
++ .suspend = s3c2410ts_suspend,
++ .resume = s3c2410ts_resume,
+ .remove = s3c2410ts_remove,
+ };
+