goldfish: R.I.P.
[openwrt.git] / target / linux / s3c24xx / patches-2.6.30 / 050-s3c2442-touchscreen.patch
1 --- a/arch/arm/plat-s3c24xx/devs.c
2 +++ b/arch/arm/plat-s3c24xx/devs.c
3 @@ -26,6 +26,8 @@
4  #include <asm/mach/irq.h>
5  #include <mach/fb.h>
6  #include <mach/hardware.h>
7 +#include <mach/ts.h>
8 +#include <asm/io.h>
9  #include <asm/irq.h>
10  
11  #include <plat/regs-serial.h>
12 @@ -199,6 +201,24 @@ struct platform_device s3c_device_nand =
13  
14  EXPORT_SYMBOL(s3c_device_nand);
15  
16 +/* Touchscreen */
17 +struct platform_device s3c_device_ts = {
18 +       .name             = "s3c2410-ts",
19 +       .id               = -1,
20 +};
21 +
22 +EXPORT_SYMBOL(s3c_device_ts);
23 +
24 +static struct s3c2410_ts_mach_info s3c2410ts_info;
25 +
26 +void set_s3c2410ts_info(const struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
27 +{
28 +       memcpy(&s3c2410ts_info, hard_s3c2410ts_info,
29 +              sizeof(struct s3c2410_ts_mach_info));
30 +       s3c_device_ts.dev.platform_data = &s3c2410ts_info;
31 +}
32 +EXPORT_SYMBOL(set_s3c2410ts_info);
33 +
34  /* USB Device (Gadget)*/
35  
36  static struct resource s3c_usbgadget_resource[] = {
37 --- a/arch/arm/plat-s3c24xx/s3c244x.c
38 +++ b/arch/arm/plat-s3c24xx/s3c244x.c
39 @@ -59,6 +59,8 @@ void __init s3c244x_init_uarts(struct s3
40         s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
41  }
42  
43 +extern struct platform_device s3c_device_ts;
44 +
45  void __init s3c244x_map_io(void)
46  {
47         /* register our io-tables */
48 @@ -70,6 +72,7 @@ void __init s3c244x_map_io(void)
49         s3c_device_sdi.name  = "s3c2440-sdi";
50         s3c_device_i2c0.name  = "s3c2440-i2c";
51         s3c_device_nand.name = "s3c2440-nand";
52 +       s3c_device_ts.name = "s3c2440-ts";
53         s3c_device_usbgadget.name = "s3c2440-usbgadget";
54  }
55  
56 --- a/drivers/input/touchscreen/Kconfig
57 +++ b/drivers/input/touchscreen/Kconfig
58 @@ -124,6 +124,24 @@ config TOUCHSCREEN_FUJITSU
59           To compile this driver as a module, choose M here: the
60           module will be called fujitsu-ts.
61  
62 +config TOUCHSCREEN_S3C2410
63 +       tristate "Samsung S3C2410 touchscreen input driver"
64 +       depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
65 +       select SERIO
66 +       help
67 +         Say Y here if you have the s3c2410 touchscreen.
68 +
69 +         If unsure, say N.
70 +
71 +         To compile this driver as a module, choose M here: the
72 +         module will be called s3c2410_ts.
73 +
74 +config TOUCHSCREEN_S3C2410_DEBUG
75 +       boolean "Samsung S3C2410 touchscreen debug messages"
76 +       depends on TOUCHSCREEN_S3C2410
77 +       help
78 +         Select this if you want debug messages
79 +
80  config TOUCHSCREEN_GUNZE
81         tristate "Gunze AHL-51S touchscreen"
82         select SERIO
83 --- a/drivers/input/touchscreen/Makefile
84 +++ b/drivers/input/touchscreen/Makefile
85 @@ -37,3 +37,4 @@ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712)        +
86  wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o
87  obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE)     += mainstone-wm97xx.o
88  obj-$(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE)      += zylonite-wm97xx.o
89 +obj-$(CONFIG_TOUCHSCREEN_S3C2410)      += s3c2410_ts.o
90 --- /dev/null
91 +++ b/arch/arm/mach-s3c2410/include/mach/ts.h
92 @@ -0,0 +1,35 @@
93 +/* arch/arm/mach-s3c2410/include/mach/ts.h
94 + *
95 + * Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org>
96 + *
97 + *
98 + * This program is free software; you can redistribute it and/or modify
99 + * it under the terms of the GNU General Public License version 2 as
100 + * published by the Free Software Foundation.
101 + *
102 + *
103 + *  Changelog:
104 + *     24-Mar-2005     RTP     Created file
105 + *     03-Aug-2005     RTP     Renamed to ts.h
106 + */
107 +
108 +#ifndef __ASM_ARM_TS_H
109 +#define __ASM_ARM_TS_H
110 +
111 +#include <linux/touchscreen/ts_filter.h>
112 +
113 +struct s3c2410_ts_mach_info {
114 +       /* Touchscreen delay. */
115 +       int delay;
116 +       /* Prescaler value. */
117 +       int presc;
118 +       /*
119 +        * Null-terminated array of pointers to filter APIs and configurations
120 +        * we want to use. In the same order they will be applied.
121 +        */
122 +       const struct ts_filter_chain_configuration *filter_config;
123 +};
124 +
125 +void set_s3c2410ts_info(const struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
126 +
127 +#endif /* __ASM_ARM_TS_H */
128 --- a/arch/arm/plat-s3c/include/plat/devs.h
129 +++ b/arch/arm/plat-s3c/include/plat/devs.h
130 @@ -50,10 +50,11 @@ extern struct platform_device s3c_device
131  
132  extern struct platform_device s3c_device_usbgadget;
133  
134 +extern struct platform_device s3c_device_ts;
135 +
136  /* s3c2440 specific devices */
137  
138  #ifdef CONFIG_CPU_S3C2440
139  
140  extern struct platform_device s3c_device_camif;
141 -
142  #endif