diff options
author | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
---|---|---|
committer | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
commit | 709c4d66e0b107ca606941b988bad717c0b45d9b (patch) | |
tree | 37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/linux/linux/acern30/s3c2410_ts-pm.patch | |
parent | fa6cd5a3b993f16c27de4ff82b42684516d433ba (diff) | |
download | openembedded-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.patch | 73 |
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, + }; + |