Commit c6d81bd7237b5785080087bcf796ce456ef69557

Authored by Heiko Stübner
Committed by Dmitry Torokhov
1 parent e4a42f655f

Input: add driver for Neonode zForce based touchscreens

This adds a driver for touchscreens using the zforce infrared
technology from Neonode connected via i2c to the host system.

It supports multitouch with up to two fingers and tracking of the
contacts in hardware.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Showing 4 changed files with 876 additions and 0 deletions Inline Diff

drivers/input/touchscreen/Kconfig
1 # 1 #
2 # Touchscreen driver configuration 2 # Touchscreen driver configuration
3 # 3 #
4 menuconfig INPUT_TOUCHSCREEN 4 menuconfig INPUT_TOUCHSCREEN
5 bool "Touchscreens" 5 bool "Touchscreens"
6 help 6 help
7 Say Y here, and a list of supported touchscreens will be displayed. 7 Say Y here, and a list of supported touchscreens will be displayed.
8 This option doesn't affect the kernel. 8 This option doesn't affect the kernel.
9 9
10 If unsure, say Y. 10 If unsure, say Y.
11 11
12 if INPUT_TOUCHSCREEN 12 if INPUT_TOUCHSCREEN
13 13
14 config TOUCHSCREEN_88PM860X 14 config TOUCHSCREEN_88PM860X
15 tristate "Marvell 88PM860x touchscreen" 15 tristate "Marvell 88PM860x touchscreen"
16 depends on MFD_88PM860X 16 depends on MFD_88PM860X
17 help 17 help
18 Say Y here if you have a 88PM860x PMIC and want to enable 18 Say Y here if you have a 88PM860x PMIC and want to enable
19 support for the built-in touchscreen. 19 support for the built-in touchscreen.
20 20
21 If unsure, say N. 21 If unsure, say N.
22 22
23 To compile this driver as a module, choose M here: the 23 To compile this driver as a module, choose M here: the
24 module will be called 88pm860x-ts. 24 module will be called 88pm860x-ts.
25 25
26 config TOUCHSCREEN_ADS7846 26 config TOUCHSCREEN_ADS7846
27 tristate "ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens" 27 tristate "ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens"
28 depends on SPI_MASTER 28 depends on SPI_MASTER
29 depends on HWMON = n || HWMON 29 depends on HWMON = n || HWMON
30 help 30 help
31 Say Y here if you have a touchscreen interface using the 31 Say Y here if you have a touchscreen interface using the
32 ADS7846/TSC2046/AD7873 or ADS7843/AD7843 controller, 32 ADS7846/TSC2046/AD7873 or ADS7843/AD7843 controller,
33 and your board-specific setup code includes that in its 33 and your board-specific setup code includes that in its
34 table of SPI devices. 34 table of SPI devices.
35 35
36 If HWMON is selected, and the driver is told the reference voltage 36 If HWMON is selected, and the driver is told the reference voltage
37 on your board, you will also get hwmon interfaces for the voltage 37 on your board, you will also get hwmon interfaces for the voltage
38 (and on ads7846/tsc2046/ad7873, temperature) sensors of this chip. 38 (and on ads7846/tsc2046/ad7873, temperature) sensors of this chip.
39 39
40 If unsure, say N (but it's safe to say "Y"). 40 If unsure, say N (but it's safe to say "Y").
41 41
42 To compile this driver as a module, choose M here: the 42 To compile this driver as a module, choose M here: the
43 module will be called ads7846. 43 module will be called ads7846.
44 44
45 config TOUCHSCREEN_AD7877 45 config TOUCHSCREEN_AD7877
46 tristate "AD7877 based touchscreens" 46 tristate "AD7877 based touchscreens"
47 depends on SPI_MASTER 47 depends on SPI_MASTER
48 help 48 help
49 Say Y here if you have a touchscreen interface using the 49 Say Y here if you have a touchscreen interface using the
50 AD7877 controller, and your board-specific initialization 50 AD7877 controller, and your board-specific initialization
51 code includes that in its table of SPI devices. 51 code includes that in its table of SPI devices.
52 52
53 If unsure, say N (but it's safe to say "Y"). 53 If unsure, say N (but it's safe to say "Y").
54 54
55 To compile this driver as a module, choose M here: the 55 To compile this driver as a module, choose M here: the
56 module will be called ad7877. 56 module will be called ad7877.
57 57
58 config TOUCHSCREEN_AD7879 58 config TOUCHSCREEN_AD7879
59 tristate "Analog Devices AD7879-1/AD7889-1 touchscreen interface" 59 tristate "Analog Devices AD7879-1/AD7889-1 touchscreen interface"
60 help 60 help
61 Say Y here if you want to support a touchscreen interface using 61 Say Y here if you want to support a touchscreen interface using
62 the AD7879-1/AD7889-1 controller. 62 the AD7879-1/AD7889-1 controller.
63 63
64 You should select a bus connection too. 64 You should select a bus connection too.
65 65
66 To compile this driver as a module, choose M here: the 66 To compile this driver as a module, choose M here: the
67 module will be called ad7879. 67 module will be called ad7879.
68 68
69 config TOUCHSCREEN_AD7879_I2C 69 config TOUCHSCREEN_AD7879_I2C
70 tristate "support I2C bus connection" 70 tristate "support I2C bus connection"
71 depends on TOUCHSCREEN_AD7879 && I2C 71 depends on TOUCHSCREEN_AD7879 && I2C
72 help 72 help
73 Say Y here if you have AD7879-1/AD7889-1 hooked to an I2C bus. 73 Say Y here if you have AD7879-1/AD7889-1 hooked to an I2C bus.
74 74
75 To compile this driver as a module, choose M here: the 75 To compile this driver as a module, choose M here: the
76 module will be called ad7879-i2c. 76 module will be called ad7879-i2c.
77 77
78 config TOUCHSCREEN_AD7879_SPI 78 config TOUCHSCREEN_AD7879_SPI
79 tristate "support SPI bus connection" 79 tristate "support SPI bus connection"
80 depends on TOUCHSCREEN_AD7879 && SPI_MASTER 80 depends on TOUCHSCREEN_AD7879 && SPI_MASTER
81 help 81 help
82 Say Y here if you have AD7879-1/AD7889-1 hooked to a SPI bus. 82 Say Y here if you have AD7879-1/AD7889-1 hooked to a SPI bus.
83 83
84 If unsure, say N (but it's safe to say "Y"). 84 If unsure, say N (but it's safe to say "Y").
85 85
86 To compile this driver as a module, choose M here: the 86 To compile this driver as a module, choose M here: the
87 module will be called ad7879-spi. 87 module will be called ad7879-spi.
88 88
89 config TOUCHSCREEN_ATMEL_MXT 89 config TOUCHSCREEN_ATMEL_MXT
90 tristate "Atmel mXT I2C Touchscreen" 90 tristate "Atmel mXT I2C Touchscreen"
91 depends on I2C 91 depends on I2C
92 help 92 help
93 Say Y here if you have Atmel mXT series I2C touchscreen, 93 Say Y here if you have Atmel mXT series I2C touchscreen,
94 such as AT42QT602240/ATMXT224, connected to your system. 94 such as AT42QT602240/ATMXT224, connected to your system.
95 95
96 If unsure, say N. 96 If unsure, say N.
97 97
98 To compile this driver as a module, choose M here: the 98 To compile this driver as a module, choose M here: the
99 module will be called atmel_mxt_ts. 99 module will be called atmel_mxt_ts.
100 100
101 config TOUCHSCREEN_AUO_PIXCIR 101 config TOUCHSCREEN_AUO_PIXCIR
102 tristate "AUO in-cell touchscreen using Pixcir ICs" 102 tristate "AUO in-cell touchscreen using Pixcir ICs"
103 depends on I2C 103 depends on I2C
104 depends on GPIOLIB 104 depends on GPIOLIB
105 help 105 help
106 Say Y here if you have a AUO display with in-cell touchscreen 106 Say Y here if you have a AUO display with in-cell touchscreen
107 using Pixcir ICs. 107 using Pixcir ICs.
108 108
109 If unsure, say N. 109 If unsure, say N.
110 110
111 To compile this driver as a module, choose M here: the 111 To compile this driver as a module, choose M here: the
112 module will be called auo-pixcir-ts. 112 module will be called auo-pixcir-ts.
113 113
114 config TOUCHSCREEN_BU21013 114 config TOUCHSCREEN_BU21013
115 tristate "BU21013 based touch panel controllers" 115 tristate "BU21013 based touch panel controllers"
116 depends on I2C 116 depends on I2C
117 help 117 help
118 Say Y here if you have a bu21013 touchscreen connected to 118 Say Y here if you have a bu21013 touchscreen connected to
119 your system. 119 your system.
120 120
121 If unsure, say N. 121 If unsure, say N.
122 122
123 To compile this driver as a module, choose M here: the 123 To compile this driver as a module, choose M here: the
124 module will be called bu21013_ts. 124 module will be called bu21013_ts.
125 125
126 config TOUCHSCREEN_CY8CTMG110 126 config TOUCHSCREEN_CY8CTMG110
127 tristate "cy8ctmg110 touchscreen" 127 tristate "cy8ctmg110 touchscreen"
128 depends on I2C 128 depends on I2C
129 depends on GPIOLIB 129 depends on GPIOLIB
130 help 130 help
131 Say Y here if you have a cy8ctmg110 capacitive touchscreen on 131 Say Y here if you have a cy8ctmg110 capacitive touchscreen on
132 an AAVA device. 132 an AAVA device.
133 133
134 If unsure, say N. 134 If unsure, say N.
135 135
136 To compile this driver as a module, choose M here: the 136 To compile this driver as a module, choose M here: the
137 module will be called cy8ctmg110_ts. 137 module will be called cy8ctmg110_ts.
138 138
139 config TOUCHSCREEN_CYTTSP_CORE 139 config TOUCHSCREEN_CYTTSP_CORE
140 tristate "Cypress TTSP touchscreen" 140 tristate "Cypress TTSP touchscreen"
141 help 141 help
142 Say Y here if you have a touchscreen using controller from 142 Say Y here if you have a touchscreen using controller from
143 the Cypress TrueTouch(tm) Standard Product family connected 143 the Cypress TrueTouch(tm) Standard Product family connected
144 to your system. You will also need to select appropriate 144 to your system. You will also need to select appropriate
145 bus connection below. 145 bus connection below.
146 146
147 If unsure, say N. 147 If unsure, say N.
148 148
149 To compile this driver as a module, choose M here: the 149 To compile this driver as a module, choose M here: the
150 module will be called cyttsp_core. 150 module will be called cyttsp_core.
151 151
152 config TOUCHSCREEN_CYTTSP_I2C 152 config TOUCHSCREEN_CYTTSP_I2C
153 tristate "support I2C bus connection" 153 tristate "support I2C bus connection"
154 depends on TOUCHSCREEN_CYTTSP_CORE && I2C 154 depends on TOUCHSCREEN_CYTTSP_CORE && I2C
155 help 155 help
156 Say Y here if the touchscreen is connected via I2C bus. 156 Say Y here if the touchscreen is connected via I2C bus.
157 157
158 To compile this driver as a module, choose M here: the 158 To compile this driver as a module, choose M here: the
159 module will be called cyttsp_i2c. 159 module will be called cyttsp_i2c.
160 160
161 config TOUCHSCREEN_CYTTSP_SPI 161 config TOUCHSCREEN_CYTTSP_SPI
162 tristate "support SPI bus connection" 162 tristate "support SPI bus connection"
163 depends on TOUCHSCREEN_CYTTSP_CORE && SPI_MASTER 163 depends on TOUCHSCREEN_CYTTSP_CORE && SPI_MASTER
164 help 164 help
165 Say Y here if the touchscreen is connected via SPI bus. 165 Say Y here if the touchscreen is connected via SPI bus.
166 166
167 To compile this driver as a module, choose M here: the 167 To compile this driver as a module, choose M here: the
168 module will be called cyttsp_spi. 168 module will be called cyttsp_spi.
169 169
170 config TOUCHSCREEN_CYTTSP4_CORE 170 config TOUCHSCREEN_CYTTSP4_CORE
171 tristate "Cypress TrueTouch Gen4 Touchscreen Driver" 171 tristate "Cypress TrueTouch Gen4 Touchscreen Driver"
172 help 172 help
173 Core driver for Cypress TrueTouch(tm) Standard Product 173 Core driver for Cypress TrueTouch(tm) Standard Product
174 Generation4 touchscreen controllers. 174 Generation4 touchscreen controllers.
175 175
176 Say Y here if you have a Cypress Gen4 touchscreen. 176 Say Y here if you have a Cypress Gen4 touchscreen.
177 177
178 If unsure, say N. 178 If unsure, say N.
179 179
180 To compile this driver as a module, choose M here. 180 To compile this driver as a module, choose M here.
181 181
182 config TOUCHSCREEN_CYTTSP4_I2C 182 config TOUCHSCREEN_CYTTSP4_I2C
183 tristate "support I2C bus connection" 183 tristate "support I2C bus connection"
184 depends on TOUCHSCREEN_CYTTSP4_CORE && I2C 184 depends on TOUCHSCREEN_CYTTSP4_CORE && I2C
185 help 185 help
186 Say Y here if the touchscreen is connected via I2C bus. 186 Say Y here if the touchscreen is connected via I2C bus.
187 187
188 To compile this driver as a module, choose M here: the 188 To compile this driver as a module, choose M here: the
189 module will be called cyttsp4_i2c. 189 module will be called cyttsp4_i2c.
190 190
191 config TOUCHSCREEN_CYTTSP4_SPI 191 config TOUCHSCREEN_CYTTSP4_SPI
192 tristate "support SPI bus connection" 192 tristate "support SPI bus connection"
193 depends on TOUCHSCREEN_CYTTSP4_CORE && SPI_MASTER 193 depends on TOUCHSCREEN_CYTTSP4_CORE && SPI_MASTER
194 help 194 help
195 Say Y here if the touchscreen is connected via SPI bus. 195 Say Y here if the touchscreen is connected via SPI bus.
196 196
197 To compile this driver as a module, choose M here: the 197 To compile this driver as a module, choose M here: the
198 module will be called cyttsp4_spi. 198 module will be called cyttsp4_spi.
199 199
200 config TOUCHSCREEN_DA9034 200 config TOUCHSCREEN_DA9034
201 tristate "Touchscreen support for Dialog Semiconductor DA9034" 201 tristate "Touchscreen support for Dialog Semiconductor DA9034"
202 depends on PMIC_DA903X 202 depends on PMIC_DA903X
203 default y 203 default y
204 help 204 help
205 Say Y here to enable the support for the touchscreen found 205 Say Y here to enable the support for the touchscreen found
206 on Dialog Semiconductor DA9034 PMIC. 206 on Dialog Semiconductor DA9034 PMIC.
207 207
208 If unsure, say N. 208 If unsure, say N.
209 209
210 To compile this driver as a module, choose M here: the 210 To compile this driver as a module, choose M here: the
211 module will be called da9034-ts. 211 module will be called da9034-ts.
212 212
213 config TOUCHSCREEN_DA9052 213 config TOUCHSCREEN_DA9052
214 tristate "Dialog DA9052/DA9053 TSI" 214 tristate "Dialog DA9052/DA9053 TSI"
215 depends on PMIC_DA9052 215 depends on PMIC_DA9052
216 help 216 help
217 Say Y here to support the touchscreen found on Dialog Semiconductor 217 Say Y here to support the touchscreen found on Dialog Semiconductor
218 DA9052-BC and DA9053-AA/Bx PMICs. 218 DA9052-BC and DA9053-AA/Bx PMICs.
219 219
220 If unsure, say N. 220 If unsure, say N.
221 221
222 To compile this driver as a module, choose M here: the 222 To compile this driver as a module, choose M here: the
223 module will be called da9052_tsi. 223 module will be called da9052_tsi.
224 224
225 config TOUCHSCREEN_DYNAPRO 225 config TOUCHSCREEN_DYNAPRO
226 tristate "Dynapro serial touchscreen" 226 tristate "Dynapro serial touchscreen"
227 select SERIO 227 select SERIO
228 help 228 help
229 Say Y here if you have a Dynapro serial touchscreen connected to 229 Say Y here if you have a Dynapro serial touchscreen connected to
230 your system. 230 your system.
231 231
232 If unsure, say N. 232 If unsure, say N.
233 233
234 To compile this driver as a module, choose M here: the 234 To compile this driver as a module, choose M here: the
235 module will be called dynapro. 235 module will be called dynapro.
236 236
237 config TOUCHSCREEN_HAMPSHIRE 237 config TOUCHSCREEN_HAMPSHIRE
238 tristate "Hampshire serial touchscreen" 238 tristate "Hampshire serial touchscreen"
239 select SERIO 239 select SERIO
240 help 240 help
241 Say Y here if you have a Hampshire serial touchscreen connected to 241 Say Y here if you have a Hampshire serial touchscreen connected to
242 your system. 242 your system.
243 243
244 If unsure, say N. 244 If unsure, say N.
245 245
246 To compile this driver as a module, choose M here: the 246 To compile this driver as a module, choose M here: the
247 module will be called hampshire. 247 module will be called hampshire.
248 248
249 config TOUCHSCREEN_EETI 249 config TOUCHSCREEN_EETI
250 tristate "EETI touchscreen panel support" 250 tristate "EETI touchscreen panel support"
251 depends on I2C 251 depends on I2C
252 help 252 help
253 Say Y here to enable support for I2C connected EETI touch panels. 253 Say Y here to enable support for I2C connected EETI touch panels.
254 254
255 To compile this driver as a module, choose M here: the 255 To compile this driver as a module, choose M here: the
256 module will be called eeti_ts. 256 module will be called eeti_ts.
257 257
258 config TOUCHSCREEN_EGALAX 258 config TOUCHSCREEN_EGALAX
259 tristate "EETI eGalax multi-touch panel support" 259 tristate "EETI eGalax multi-touch panel support"
260 depends on I2C && OF 260 depends on I2C && OF
261 help 261 help
262 Say Y here to enable support for I2C connected EETI 262 Say Y here to enable support for I2C connected EETI
263 eGalax multi-touch panels. 263 eGalax multi-touch panels.
264 264
265 To compile this driver as a module, choose M here: the 265 To compile this driver as a module, choose M here: the
266 module will be called egalax_ts. 266 module will be called egalax_ts.
267 267
268 config TOUCHSCREEN_FUJITSU 268 config TOUCHSCREEN_FUJITSU
269 tristate "Fujitsu serial touchscreen" 269 tristate "Fujitsu serial touchscreen"
270 select SERIO 270 select SERIO
271 help 271 help
272 Say Y here if you have the Fujitsu touchscreen (such as one 272 Say Y here if you have the Fujitsu touchscreen (such as one
273 installed in Lifebook P series laptop) connected to your 273 installed in Lifebook P series laptop) connected to your
274 system. 274 system.
275 275
276 If unsure, say N. 276 If unsure, say N.
277 277
278 To compile this driver as a module, choose M here: the 278 To compile this driver as a module, choose M here: the
279 module will be called fujitsu-ts. 279 module will be called fujitsu-ts.
280 280
281 config TOUCHSCREEN_ILI210X 281 config TOUCHSCREEN_ILI210X
282 tristate "Ilitek ILI210X based touchscreen" 282 tristate "Ilitek ILI210X based touchscreen"
283 depends on I2C 283 depends on I2C
284 help 284 help
285 Say Y here if you have a ILI210X based touchscreen 285 Say Y here if you have a ILI210X based touchscreen
286 controller. This driver supports models ILI2102, 286 controller. This driver supports models ILI2102,
287 ILI2102s, ILI2103, ILI2103s and ILI2105. 287 ILI2102s, ILI2103, ILI2103s and ILI2105.
288 Such kind of chipsets can be found in Amazon Kindle Fire 288 Such kind of chipsets can be found in Amazon Kindle Fire
289 touchscreens. 289 touchscreens.
290 290
291 If unsure, say N. 291 If unsure, say N.
292 292
293 To compile this driver as a module, choose M here: the 293 To compile this driver as a module, choose M here: the
294 module will be called ili210x. 294 module will be called ili210x.
295 295
296 config TOUCHSCREEN_S3C2410 296 config TOUCHSCREEN_S3C2410
297 tristate "Samsung S3C2410/generic touchscreen input driver" 297 tristate "Samsung S3C2410/generic touchscreen input driver"
298 depends on ARCH_S3C24XX || SAMSUNG_DEV_TS 298 depends on ARCH_S3C24XX || SAMSUNG_DEV_TS
299 select S3C_ADC 299 select S3C_ADC
300 help 300 help
301 Say Y here if you have the s3c2410 touchscreen. 301 Say Y here if you have the s3c2410 touchscreen.
302 302
303 If unsure, say N. 303 If unsure, say N.
304 304
305 To compile this driver as a module, choose M here: the 305 To compile this driver as a module, choose M here: the
306 module will be called s3c2410_ts. 306 module will be called s3c2410_ts.
307 307
308 config TOUCHSCREEN_GUNZE 308 config TOUCHSCREEN_GUNZE
309 tristate "Gunze AHL-51S touchscreen" 309 tristate "Gunze AHL-51S touchscreen"
310 select SERIO 310 select SERIO
311 help 311 help
312 Say Y here if you have the Gunze AHL-51 touchscreen connected to 312 Say Y here if you have the Gunze AHL-51 touchscreen connected to
313 your system. 313 your system.
314 314
315 If unsure, say N. 315 If unsure, say N.
316 316
317 To compile this driver as a module, choose M here: the 317 To compile this driver as a module, choose M here: the
318 module will be called gunze. 318 module will be called gunze.
319 319
320 config TOUCHSCREEN_ELO 320 config TOUCHSCREEN_ELO
321 tristate "Elo serial touchscreens" 321 tristate "Elo serial touchscreens"
322 select SERIO 322 select SERIO
323 help 323 help
324 Say Y here if you have an Elo serial touchscreen connected to 324 Say Y here if you have an Elo serial touchscreen connected to
325 your system. 325 your system.
326 326
327 If unsure, say N. 327 If unsure, say N.
328 328
329 To compile this driver as a module, choose M here: the 329 To compile this driver as a module, choose M here: the
330 module will be called elo. 330 module will be called elo.
331 331
332 config TOUCHSCREEN_WACOM_W8001 332 config TOUCHSCREEN_WACOM_W8001
333 tristate "Wacom W8001 penabled serial touchscreen" 333 tristate "Wacom W8001 penabled serial touchscreen"
334 select SERIO 334 select SERIO
335 help 335 help
336 Say Y here if you have an Wacom W8001 penabled serial touchscreen 336 Say Y here if you have an Wacom W8001 penabled serial touchscreen
337 connected to your system. 337 connected to your system.
338 338
339 If unsure, say N. 339 If unsure, say N.
340 340
341 To compile this driver as a module, choose M here: the 341 To compile this driver as a module, choose M here: the
342 module will be called wacom_w8001. 342 module will be called wacom_w8001.
343 343
344 config TOUCHSCREEN_WACOM_I2C 344 config TOUCHSCREEN_WACOM_I2C
345 tristate "Wacom Tablet support (I2C)" 345 tristate "Wacom Tablet support (I2C)"
346 depends on I2C 346 depends on I2C
347 help 347 help
348 Say Y here if you want to use the I2C version of the Wacom 348 Say Y here if you want to use the I2C version of the Wacom
349 Pen Tablet. 349 Pen Tablet.
350 350
351 If unsure, say N. 351 If unsure, say N.
352 352
353 To compile this driver as a module, choose M here: the module 353 To compile this driver as a module, choose M here: the module
354 will be called wacom_i2c. 354 will be called wacom_i2c.
355 355
356 config TOUCHSCREEN_LPC32XX 356 config TOUCHSCREEN_LPC32XX
357 tristate "LPC32XX touchscreen controller" 357 tristate "LPC32XX touchscreen controller"
358 depends on ARCH_LPC32XX 358 depends on ARCH_LPC32XX
359 help 359 help
360 Say Y here if you have a LPC32XX device and want 360 Say Y here if you have a LPC32XX device and want
361 to support the built-in touchscreen. 361 to support the built-in touchscreen.
362 362
363 To compile this driver as a module, choose M here: the 363 To compile this driver as a module, choose M here: the
364 module will be called lpc32xx_ts. 364 module will be called lpc32xx_ts.
365 365
366 config TOUCHSCREEN_MAX11801 366 config TOUCHSCREEN_MAX11801
367 tristate "MAX11801 based touchscreens" 367 tristate "MAX11801 based touchscreens"
368 depends on I2C 368 depends on I2C
369 help 369 help
370 Say Y here if you have a MAX11801 based touchscreen 370 Say Y here if you have a MAX11801 based touchscreen
371 controller. 371 controller.
372 372
373 If unsure, say N. 373 If unsure, say N.
374 374
375 To compile this driver as a module, choose M here: the 375 To compile this driver as a module, choose M here: the
376 module will be called max11801_ts. 376 module will be called max11801_ts.
377 377
378 config TOUCHSCREEN_MCS5000 378 config TOUCHSCREEN_MCS5000
379 tristate "MELFAS MCS-5000 touchscreen" 379 tristate "MELFAS MCS-5000 touchscreen"
380 depends on I2C 380 depends on I2C
381 help 381 help
382 Say Y here if you have the MELFAS MCS-5000 touchscreen controller 382 Say Y here if you have the MELFAS MCS-5000 touchscreen controller
383 chip in your system. 383 chip in your system.
384 384
385 If unsure, say N. 385 If unsure, say N.
386 386
387 To compile this driver as a module, choose M here: the 387 To compile this driver as a module, choose M here: the
388 module will be called mcs5000_ts. 388 module will be called mcs5000_ts.
389 389
390 config TOUCHSCREEN_MMS114 390 config TOUCHSCREEN_MMS114
391 tristate "MELFAS MMS114 touchscreen" 391 tristate "MELFAS MMS114 touchscreen"
392 depends on I2C 392 depends on I2C
393 help 393 help
394 Say Y here if you have the MELFAS MMS114 touchscreen controller 394 Say Y here if you have the MELFAS MMS114 touchscreen controller
395 chip in your system. 395 chip in your system.
396 396
397 If unsure, say N. 397 If unsure, say N.
398 398
399 To compile this driver as a module, choose M here: the 399 To compile this driver as a module, choose M here: the
400 module will be called mms114. 400 module will be called mms114.
401 401
402 config TOUCHSCREEN_MTOUCH 402 config TOUCHSCREEN_MTOUCH
403 tristate "MicroTouch serial touchscreens" 403 tristate "MicroTouch serial touchscreens"
404 select SERIO 404 select SERIO
405 help 405 help
406 Say Y here if you have a MicroTouch (3M) serial touchscreen connected to 406 Say Y here if you have a MicroTouch (3M) serial touchscreen connected to
407 your system. 407 your system.
408 408
409 If unsure, say N. 409 If unsure, say N.
410 410
411 To compile this driver as a module, choose M here: the 411 To compile this driver as a module, choose M here: the
412 module will be called mtouch. 412 module will be called mtouch.
413 413
414 config TOUCHSCREEN_INEXIO 414 config TOUCHSCREEN_INEXIO
415 tristate "iNexio serial touchscreens" 415 tristate "iNexio serial touchscreens"
416 select SERIO 416 select SERIO
417 help 417 help
418 Say Y here if you have an iNexio serial touchscreen connected to 418 Say Y here if you have an iNexio serial touchscreen connected to
419 your system. 419 your system.
420 420
421 If unsure, say N. 421 If unsure, say N.
422 422
423 To compile this driver as a module, choose M here: the 423 To compile this driver as a module, choose M here: the
424 module will be called inexio. 424 module will be called inexio.
425 425
426 config TOUCHSCREEN_INTEL_MID 426 config TOUCHSCREEN_INTEL_MID
427 tristate "Intel MID platform resistive touchscreen" 427 tristate "Intel MID platform resistive touchscreen"
428 depends on INTEL_SCU_IPC 428 depends on INTEL_SCU_IPC
429 help 429 help
430 Say Y here if you have a Intel MID based touchscreen in 430 Say Y here if you have a Intel MID based touchscreen in
431 your system. 431 your system.
432 432
433 If unsure, say N. 433 If unsure, say N.
434 434
435 To compile this driver as a module, choose M here: the 435 To compile this driver as a module, choose M here: the
436 module will be called intel_mid_touch. 436 module will be called intel_mid_touch.
437 437
438 config TOUCHSCREEN_MK712 438 config TOUCHSCREEN_MK712
439 tristate "ICS MicroClock MK712 touchscreen" 439 tristate "ICS MicroClock MK712 touchscreen"
440 help 440 help
441 Say Y here if you have the ICS MicroClock MK712 touchscreen 441 Say Y here if you have the ICS MicroClock MK712 touchscreen
442 controller chip in your system. 442 controller chip in your system.
443 443
444 If unsure, say N. 444 If unsure, say N.
445 445
446 To compile this driver as a module, choose M here: the 446 To compile this driver as a module, choose M here: the
447 module will be called mk712. 447 module will be called mk712.
448 448
449 config TOUCHSCREEN_HP600 449 config TOUCHSCREEN_HP600
450 tristate "HP Jornada 6xx touchscreen" 450 tristate "HP Jornada 6xx touchscreen"
451 depends on SH_HP6XX && SH_ADC 451 depends on SH_HP6XX && SH_ADC
452 help 452 help
453 Say Y here if you have a HP Jornada 620/660/680/690 and want to 453 Say Y here if you have a HP Jornada 620/660/680/690 and want to
454 support the built-in touchscreen. 454 support the built-in touchscreen.
455 455
456 To compile this driver as a module, choose M here: the 456 To compile this driver as a module, choose M here: the
457 module will be called hp680_ts_input. 457 module will be called hp680_ts_input.
458 458
459 config TOUCHSCREEN_HP7XX 459 config TOUCHSCREEN_HP7XX
460 tristate "HP Jornada 7xx touchscreen" 460 tristate "HP Jornada 7xx touchscreen"
461 depends on SA1100_JORNADA720_SSP 461 depends on SA1100_JORNADA720_SSP
462 help 462 help
463 Say Y here if you have a HP Jornada 710/720/728 and want 463 Say Y here if you have a HP Jornada 710/720/728 and want
464 to support the built-in touchscreen. 464 to support the built-in touchscreen.
465 465
466 To compile this driver as a module, choose M here: the 466 To compile this driver as a module, choose M here: the
467 module will be called jornada720_ts. 467 module will be called jornada720_ts.
468 468
469 config TOUCHSCREEN_HTCPEN 469 config TOUCHSCREEN_HTCPEN
470 tristate "HTC Shift X9500 touchscreen" 470 tristate "HTC Shift X9500 touchscreen"
471 depends on ISA 471 depends on ISA
472 help 472 help
473 Say Y here if you have an HTC Shift UMPC also known as HTC X9500 473 Say Y here if you have an HTC Shift UMPC also known as HTC X9500
474 Clio / Shangrila and want to support the built-in touchscreen. 474 Clio / Shangrila and want to support the built-in touchscreen.
475 475
476 If unsure, say N. 476 If unsure, say N.
477 477
478 To compile this driver as a module, choose M here: the 478 To compile this driver as a module, choose M here: the
479 module will be called htcpen. 479 module will be called htcpen.
480 480
481 config TOUCHSCREEN_PENMOUNT 481 config TOUCHSCREEN_PENMOUNT
482 tristate "Penmount serial touchscreen" 482 tristate "Penmount serial touchscreen"
483 select SERIO 483 select SERIO
484 help 484 help
485 Say Y here if you have a Penmount serial touchscreen connected to 485 Say Y here if you have a Penmount serial touchscreen connected to
486 your system. 486 your system.
487 487
488 If unsure, say N. 488 If unsure, say N.
489 489
490 To compile this driver as a module, choose M here: the 490 To compile this driver as a module, choose M here: the
491 module will be called penmount. 491 module will be called penmount.
492 492
493 config TOUCHSCREEN_EDT_FT5X06 493 config TOUCHSCREEN_EDT_FT5X06
494 tristate "EDT FocalTech FT5x06 I2C Touchscreen support" 494 tristate "EDT FocalTech FT5x06 I2C Touchscreen support"
495 depends on I2C 495 depends on I2C
496 help 496 help
497 Say Y here if you have an EDT "Polytouch" touchscreen based 497 Say Y here if you have an EDT "Polytouch" touchscreen based
498 on the FocalTech FT5x06 family of controllers connected to 498 on the FocalTech FT5x06 family of controllers connected to
499 your system. 499 your system.
500 500
501 If unsure, say N. 501 If unsure, say N.
502 502
503 To compile this driver as a module, choose M here: the 503 To compile this driver as a module, choose M here: the
504 module will be called edt-ft5x06. 504 module will be called edt-ft5x06.
505 505
506 config TOUCHSCREEN_MIGOR 506 config TOUCHSCREEN_MIGOR
507 tristate "Renesas MIGO-R touchscreen" 507 tristate "Renesas MIGO-R touchscreen"
508 depends on SH_MIGOR && I2C 508 depends on SH_MIGOR && I2C
509 help 509 help
510 Say Y here to enable MIGO-R touchscreen support. 510 Say Y here to enable MIGO-R touchscreen support.
511 511
512 If unsure, say N. 512 If unsure, say N.
513 513
514 To compile this driver as a module, choose M here: the 514 To compile this driver as a module, choose M here: the
515 module will be called migor_ts. 515 module will be called migor_ts.
516 516
517 config TOUCHSCREEN_TNETV107X 517 config TOUCHSCREEN_TNETV107X
518 tristate "TI TNETV107X touchscreen support" 518 tristate "TI TNETV107X touchscreen support"
519 depends on ARCH_DAVINCI_TNETV107X 519 depends on ARCH_DAVINCI_TNETV107X
520 help 520 help
521 Say Y here if you want to use the TNETV107X touchscreen. 521 Say Y here if you want to use the TNETV107X touchscreen.
522 522
523 To compile this driver as a module, choose M here: the 523 To compile this driver as a module, choose M here: the
524 module will be called tnetv107x-ts. 524 module will be called tnetv107x-ts.
525 525
526 config TOUCHSCREEN_TOUCHRIGHT 526 config TOUCHSCREEN_TOUCHRIGHT
527 tristate "Touchright serial touchscreen" 527 tristate "Touchright serial touchscreen"
528 select SERIO 528 select SERIO
529 help 529 help
530 Say Y here if you have a Touchright serial touchscreen connected to 530 Say Y here if you have a Touchright serial touchscreen connected to
531 your system. 531 your system.
532 532
533 If unsure, say N. 533 If unsure, say N.
534 534
535 To compile this driver as a module, choose M here: the 535 To compile this driver as a module, choose M here: the
536 module will be called touchright. 536 module will be called touchright.
537 537
538 config TOUCHSCREEN_TOUCHWIN 538 config TOUCHSCREEN_TOUCHWIN
539 tristate "Touchwin serial touchscreen" 539 tristate "Touchwin serial touchscreen"
540 select SERIO 540 select SERIO
541 help 541 help
542 Say Y here if you have a Touchwin serial touchscreen connected to 542 Say Y here if you have a Touchwin serial touchscreen connected to
543 your system. 543 your system.
544 544
545 If unsure, say N. 545 If unsure, say N.
546 546
547 To compile this driver as a module, choose M here: the 547 To compile this driver as a module, choose M here: the
548 module will be called touchwin. 548 module will be called touchwin.
549 549
550 config TOUCHSCREEN_TI_AM335X_TSC 550 config TOUCHSCREEN_TI_AM335X_TSC
551 tristate "TI Touchscreen Interface" 551 tristate "TI Touchscreen Interface"
552 depends on MFD_TI_AM335X_TSCADC 552 depends on MFD_TI_AM335X_TSCADC
553 help 553 help
554 Say Y here if you have 4/5/8 wire touchscreen controller 554 Say Y here if you have 4/5/8 wire touchscreen controller
555 to be connected to the ADC controller on your TI AM335x SoC. 555 to be connected to the ADC controller on your TI AM335x SoC.
556 556
557 If unsure, say N. 557 If unsure, say N.
558 558
559 To compile this driver as a module, choose M here: the 559 To compile this driver as a module, choose M here: the
560 module will be called ti_am335x_tsc. 560 module will be called ti_am335x_tsc.
561 561
562 config TOUCHSCREEN_ATMEL_TSADCC 562 config TOUCHSCREEN_ATMEL_TSADCC
563 tristate "Atmel Touchscreen Interface" 563 tristate "Atmel Touchscreen Interface"
564 depends on ARCH_AT91 564 depends on ARCH_AT91
565 help 565 help
566 Say Y here if you have a 4-wire touchscreen connected to the 566 Say Y here if you have a 4-wire touchscreen connected to the
567 ADC Controller on your Atmel SoC. 567 ADC Controller on your Atmel SoC.
568 568
569 If unsure, say N. 569 If unsure, say N.
570 570
571 To compile this driver as a module, choose M here: the 571 To compile this driver as a module, choose M here: the
572 module will be called atmel_tsadcc. 572 module will be called atmel_tsadcc.
573 573
574 config TOUCHSCREEN_UCB1400 574 config TOUCHSCREEN_UCB1400
575 tristate "Philips UCB1400 touchscreen" 575 tristate "Philips UCB1400 touchscreen"
576 depends on AC97_BUS 576 depends on AC97_BUS
577 depends on UCB1400_CORE 577 depends on UCB1400_CORE
578 help 578 help
579 This enables support for the Philips UCB1400 touchscreen interface. 579 This enables support for the Philips UCB1400 touchscreen interface.
580 The UCB1400 is an AC97 audio codec. The touchscreen interface 580 The UCB1400 is an AC97 audio codec. The touchscreen interface
581 will be initialized only after the ALSA subsystem has been 581 will be initialized only after the ALSA subsystem has been
582 brought up and the UCB1400 detected. You therefore have to 582 brought up and the UCB1400 detected. You therefore have to
583 configure ALSA support as well (either built-in or modular, 583 configure ALSA support as well (either built-in or modular,
584 independently of whether this driver is itself built-in or 584 independently of whether this driver is itself built-in or
585 modular) for this driver to work. 585 modular) for this driver to work.
586 586
587 To compile this driver as a module, choose M here: the 587 To compile this driver as a module, choose M here: the
588 module will be called ucb1400_ts. 588 module will be called ucb1400_ts.
589 589
590 config TOUCHSCREEN_PIXCIR 590 config TOUCHSCREEN_PIXCIR
591 tristate "PIXCIR I2C touchscreens" 591 tristate "PIXCIR I2C touchscreens"
592 depends on I2C 592 depends on I2C
593 help 593 help
594 Say Y here if you have a pixcir i2c touchscreen 594 Say Y here if you have a pixcir i2c touchscreen
595 controller. 595 controller.
596 596
597 If unsure, say N. 597 If unsure, say N.
598 598
599 To compile this driver as a module, choose M here: the 599 To compile this driver as a module, choose M here: the
600 module will be called pixcir_i2c_ts. 600 module will be called pixcir_i2c_ts.
601 601
602 config TOUCHSCREEN_WM831X 602 config TOUCHSCREEN_WM831X
603 tristate "Support for WM831x touchscreen controllers" 603 tristate "Support for WM831x touchscreen controllers"
604 depends on MFD_WM831X 604 depends on MFD_WM831X
605 help 605 help
606 This enables support for the touchscreen controller on the WM831x 606 This enables support for the touchscreen controller on the WM831x
607 series of PMICs. 607 series of PMICs.
608 608
609 To compile this driver as a module, choose M here: the 609 To compile this driver as a module, choose M here: the
610 module will be called wm831x-ts. 610 module will be called wm831x-ts.
611 611
612 config TOUCHSCREEN_WM97XX 612 config TOUCHSCREEN_WM97XX
613 tristate "Support for WM97xx AC97 touchscreen controllers" 613 tristate "Support for WM97xx AC97 touchscreen controllers"
614 depends on AC97_BUS 614 depends on AC97_BUS
615 help 615 help
616 Say Y here if you have a Wolfson Microelectronics WM97xx 616 Say Y here if you have a Wolfson Microelectronics WM97xx
617 touchscreen connected to your system. Note that this option 617 touchscreen connected to your system. Note that this option
618 only enables core driver, you will also need to select 618 only enables core driver, you will also need to select
619 support for appropriate chip below. 619 support for appropriate chip below.
620 620
621 If unsure, say N. 621 If unsure, say N.
622 622
623 To compile this driver as a module, choose M here: the 623 To compile this driver as a module, choose M here: the
624 module will be called wm97xx-ts. 624 module will be called wm97xx-ts.
625 625
626 config TOUCHSCREEN_WM9705 626 config TOUCHSCREEN_WM9705
627 bool "WM9705 Touchscreen interface support" 627 bool "WM9705 Touchscreen interface support"
628 depends on TOUCHSCREEN_WM97XX 628 depends on TOUCHSCREEN_WM97XX
629 default y 629 default y
630 help 630 help
631 Say Y here to enable support for the Wolfson Microelectronics 631 Say Y here to enable support for the Wolfson Microelectronics
632 WM9705 touchscreen controller. 632 WM9705 touchscreen controller.
633 633
634 config TOUCHSCREEN_WM9712 634 config TOUCHSCREEN_WM9712
635 bool "WM9712 Touchscreen interface support" 635 bool "WM9712 Touchscreen interface support"
636 depends on TOUCHSCREEN_WM97XX 636 depends on TOUCHSCREEN_WM97XX
637 default y 637 default y
638 help 638 help
639 Say Y here to enable support for the Wolfson Microelectronics 639 Say Y here to enable support for the Wolfson Microelectronics
640 WM9712 touchscreen controller. 640 WM9712 touchscreen controller.
641 641
642 config TOUCHSCREEN_WM9713 642 config TOUCHSCREEN_WM9713
643 bool "WM9713 Touchscreen interface support" 643 bool "WM9713 Touchscreen interface support"
644 depends on TOUCHSCREEN_WM97XX 644 depends on TOUCHSCREEN_WM97XX
645 default y 645 default y
646 help 646 help
647 Say Y here to enable support for the Wolfson Microelectronics 647 Say Y here to enable support for the Wolfson Microelectronics
648 WM9713 touchscreen controller. 648 WM9713 touchscreen controller.
649 649
650 config TOUCHSCREEN_WM97XX_ATMEL 650 config TOUCHSCREEN_WM97XX_ATMEL
651 tristate "WM97xx Atmel accelerated touch" 651 tristate "WM97xx Atmel accelerated touch"
652 depends on TOUCHSCREEN_WM97XX && (AVR32 || ARCH_AT91) 652 depends on TOUCHSCREEN_WM97XX && (AVR32 || ARCH_AT91)
653 help 653 help
654 Say Y here for support for streaming mode with WM97xx touchscreens 654 Say Y here for support for streaming mode with WM97xx touchscreens
655 on Atmel AT91 or AVR32 systems with an AC97C module. 655 on Atmel AT91 or AVR32 systems with an AC97C module.
656 656
657 Be aware that this will use channel B in the controller for 657 Be aware that this will use channel B in the controller for
658 streaming data, this must not conflict with other AC97C drivers. 658 streaming data, this must not conflict with other AC97C drivers.
659 659
660 If unsure, say N. 660 If unsure, say N.
661 661
662 To compile this driver as a module, choose M here: the module will 662 To compile this driver as a module, choose M here: the module will
663 be called atmel-wm97xx. 663 be called atmel-wm97xx.
664 664
665 config TOUCHSCREEN_WM97XX_MAINSTONE 665 config TOUCHSCREEN_WM97XX_MAINSTONE
666 tristate "WM97xx Mainstone/Palm accelerated touch" 666 tristate "WM97xx Mainstone/Palm accelerated touch"
667 depends on TOUCHSCREEN_WM97XX && ARCH_PXA 667 depends on TOUCHSCREEN_WM97XX && ARCH_PXA
668 help 668 help
669 Say Y here for support for streaming mode with WM97xx touchscreens 669 Say Y here for support for streaming mode with WM97xx touchscreens
670 on Mainstone, Palm Tungsten T5, TX and LifeDrive systems. 670 on Mainstone, Palm Tungsten T5, TX and LifeDrive systems.
671 671
672 If unsure, say N. 672 If unsure, say N.
673 673
674 To compile this driver as a module, choose M here: the 674 To compile this driver as a module, choose M here: the
675 module will be called mainstone-wm97xx. 675 module will be called mainstone-wm97xx.
676 676
677 config TOUCHSCREEN_WM97XX_ZYLONITE 677 config TOUCHSCREEN_WM97XX_ZYLONITE
678 tristate "Zylonite accelerated touch" 678 tristate "Zylonite accelerated touch"
679 depends on TOUCHSCREEN_WM97XX && MACH_ZYLONITE 679 depends on TOUCHSCREEN_WM97XX && MACH_ZYLONITE
680 select TOUCHSCREEN_WM9713 680 select TOUCHSCREEN_WM9713
681 help 681 help
682 Say Y here for support for streaming mode with the touchscreen 682 Say Y here for support for streaming mode with the touchscreen
683 on Zylonite systems. 683 on Zylonite systems.
684 684
685 If unsure, say N. 685 If unsure, say N.
686 686
687 To compile this driver as a module, choose M here: the 687 To compile this driver as a module, choose M here: the
688 module will be called zylonite-wm97xx. 688 module will be called zylonite-wm97xx.
689 689
690 config TOUCHSCREEN_USB_COMPOSITE 690 config TOUCHSCREEN_USB_COMPOSITE
691 tristate "USB Touchscreen Driver" 691 tristate "USB Touchscreen Driver"
692 depends on USB_ARCH_HAS_HCD 692 depends on USB_ARCH_HAS_HCD
693 select USB 693 select USB
694 help 694 help
695 USB Touchscreen driver for: 695 USB Touchscreen driver for:
696 - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700) 696 - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700)
697 - PanJit TouchSet USB 697 - PanJit TouchSet USB
698 - 3M MicroTouch USB (EX II series) 698 - 3M MicroTouch USB (EX II series)
699 - ITM 699 - ITM
700 - some other eTurboTouch 700 - some other eTurboTouch
701 - Gunze AHL61 701 - Gunze AHL61
702 - DMC TSC-10/25 702 - DMC TSC-10/25
703 - IRTOUCHSYSTEMS/UNITOP 703 - IRTOUCHSYSTEMS/UNITOP
704 - IdealTEK URTC1000 704 - IdealTEK URTC1000
705 - GoTop Super_Q2/GogoPen/PenPower tablets 705 - GoTop Super_Q2/GogoPen/PenPower tablets
706 - JASTEC USB Touch Controller/DigiTech DTR-02U 706 - JASTEC USB Touch Controller/DigiTech DTR-02U
707 - Zytronic controllers 707 - Zytronic controllers
708 - Elo TouchSystems 2700 IntelliTouch 708 - Elo TouchSystems 2700 IntelliTouch
709 - EasyTouch USB Touch Controller from Data Modul 709 - EasyTouch USB Touch Controller from Data Modul
710 - e2i (Mimo monitors) 710 - e2i (Mimo monitors)
711 711
712 Have a look at <http://linux.chapter7.ch/touchkit/> for 712 Have a look at <http://linux.chapter7.ch/touchkit/> for
713 a usage description and the required user-space stuff. 713 a usage description and the required user-space stuff.
714 714
715 To compile this driver as a module, choose M here: the 715 To compile this driver as a module, choose M here: the
716 module will be called usbtouchscreen. 716 module will be called usbtouchscreen.
717 717
718 config TOUCHSCREEN_MC13783 718 config TOUCHSCREEN_MC13783
719 tristate "Freescale MC13783 touchscreen input driver" 719 tristate "Freescale MC13783 touchscreen input driver"
720 depends on MFD_MC13783 720 depends on MFD_MC13783
721 help 721 help
722 Say Y here if you have an Freescale MC13783 PMIC on your 722 Say Y here if you have an Freescale MC13783 PMIC on your
723 board and want to use its touchscreen 723 board and want to use its touchscreen
724 724
725 If unsure, say N. 725 If unsure, say N.
726 726
727 To compile this driver as a module, choose M here: the 727 To compile this driver as a module, choose M here: the
728 module will be called mc13783_ts. 728 module will be called mc13783_ts.
729 729
730 config TOUCHSCREEN_USB_EGALAX 730 config TOUCHSCREEN_USB_EGALAX
731 default y 731 default y
732 bool "eGalax, eTurboTouch CT-410/510/700 device support" if EXPERT 732 bool "eGalax, eTurboTouch CT-410/510/700 device support" if EXPERT
733 depends on TOUCHSCREEN_USB_COMPOSITE 733 depends on TOUCHSCREEN_USB_COMPOSITE
734 734
735 config TOUCHSCREEN_USB_PANJIT 735 config TOUCHSCREEN_USB_PANJIT
736 default y 736 default y
737 bool "PanJit device support" if EXPERT 737 bool "PanJit device support" if EXPERT
738 depends on TOUCHSCREEN_USB_COMPOSITE 738 depends on TOUCHSCREEN_USB_COMPOSITE
739 739
740 config TOUCHSCREEN_USB_3M 740 config TOUCHSCREEN_USB_3M
741 default y 741 default y
742 bool "3M/Microtouch EX II series device support" if EXPERT 742 bool "3M/Microtouch EX II series device support" if EXPERT
743 depends on TOUCHSCREEN_USB_COMPOSITE 743 depends on TOUCHSCREEN_USB_COMPOSITE
744 744
745 config TOUCHSCREEN_USB_ITM 745 config TOUCHSCREEN_USB_ITM
746 default y 746 default y
747 bool "ITM device support" if EXPERT 747 bool "ITM device support" if EXPERT
748 depends on TOUCHSCREEN_USB_COMPOSITE 748 depends on TOUCHSCREEN_USB_COMPOSITE
749 749
750 config TOUCHSCREEN_USB_ETURBO 750 config TOUCHSCREEN_USB_ETURBO
751 default y 751 default y
752 bool "eTurboTouch (non-eGalax compatible) device support" if EXPERT 752 bool "eTurboTouch (non-eGalax compatible) device support" if EXPERT
753 depends on TOUCHSCREEN_USB_COMPOSITE 753 depends on TOUCHSCREEN_USB_COMPOSITE
754 754
755 config TOUCHSCREEN_USB_GUNZE 755 config TOUCHSCREEN_USB_GUNZE
756 default y 756 default y
757 bool "Gunze AHL61 device support" if EXPERT 757 bool "Gunze AHL61 device support" if EXPERT
758 depends on TOUCHSCREEN_USB_COMPOSITE 758 depends on TOUCHSCREEN_USB_COMPOSITE
759 759
760 config TOUCHSCREEN_USB_DMC_TSC10 760 config TOUCHSCREEN_USB_DMC_TSC10
761 default y 761 default y
762 bool "DMC TSC-10/25 device support" if EXPERT 762 bool "DMC TSC-10/25 device support" if EXPERT
763 depends on TOUCHSCREEN_USB_COMPOSITE 763 depends on TOUCHSCREEN_USB_COMPOSITE
764 764
765 config TOUCHSCREEN_USB_IRTOUCH 765 config TOUCHSCREEN_USB_IRTOUCH
766 default y 766 default y
767 bool "IRTOUCHSYSTEMS/UNITOP device support" if EXPERT 767 bool "IRTOUCHSYSTEMS/UNITOP device support" if EXPERT
768 depends on TOUCHSCREEN_USB_COMPOSITE 768 depends on TOUCHSCREEN_USB_COMPOSITE
769 769
770 config TOUCHSCREEN_USB_IDEALTEK 770 config TOUCHSCREEN_USB_IDEALTEK
771 default y 771 default y
772 bool "IdealTEK URTC1000 device support" if EXPERT 772 bool "IdealTEK URTC1000 device support" if EXPERT
773 depends on TOUCHSCREEN_USB_COMPOSITE 773 depends on TOUCHSCREEN_USB_COMPOSITE
774 774
775 config TOUCHSCREEN_USB_GENERAL_TOUCH 775 config TOUCHSCREEN_USB_GENERAL_TOUCH
776 default y 776 default y
777 bool "GeneralTouch Touchscreen device support" if EXPERT 777 bool "GeneralTouch Touchscreen device support" if EXPERT
778 depends on TOUCHSCREEN_USB_COMPOSITE 778 depends on TOUCHSCREEN_USB_COMPOSITE
779 779
780 config TOUCHSCREEN_USB_GOTOP 780 config TOUCHSCREEN_USB_GOTOP
781 default y 781 default y
782 bool "GoTop Super_Q2/GogoPen/PenPower tablet device support" if EXPERT 782 bool "GoTop Super_Q2/GogoPen/PenPower tablet device support" if EXPERT
783 depends on TOUCHSCREEN_USB_COMPOSITE 783 depends on TOUCHSCREEN_USB_COMPOSITE
784 784
785 config TOUCHSCREEN_USB_JASTEC 785 config TOUCHSCREEN_USB_JASTEC
786 default y 786 default y
787 bool "JASTEC/DigiTech DTR-02U USB touch controller device support" if EXPERT 787 bool "JASTEC/DigiTech DTR-02U USB touch controller device support" if EXPERT
788 depends on TOUCHSCREEN_USB_COMPOSITE 788 depends on TOUCHSCREEN_USB_COMPOSITE
789 789
790 config TOUCHSCREEN_USB_ELO 790 config TOUCHSCREEN_USB_ELO
791 default y 791 default y
792 bool "Elo TouchSystems 2700 IntelliTouch controller device support" if EXPERT 792 bool "Elo TouchSystems 2700 IntelliTouch controller device support" if EXPERT
793 depends on TOUCHSCREEN_USB_COMPOSITE 793 depends on TOUCHSCREEN_USB_COMPOSITE
794 794
795 config TOUCHSCREEN_USB_E2I 795 config TOUCHSCREEN_USB_E2I
796 default y 796 default y
797 bool "e2i Touchscreen controller (e.g. from Mimo 740)" if EXPERT 797 bool "e2i Touchscreen controller (e.g. from Mimo 740)" if EXPERT
798 depends on TOUCHSCREEN_USB_COMPOSITE 798 depends on TOUCHSCREEN_USB_COMPOSITE
799 799
800 config TOUCHSCREEN_USB_ZYTRONIC 800 config TOUCHSCREEN_USB_ZYTRONIC
801 default y 801 default y
802 bool "Zytronic controller" if EXPERT 802 bool "Zytronic controller" if EXPERT
803 depends on TOUCHSCREEN_USB_COMPOSITE 803 depends on TOUCHSCREEN_USB_COMPOSITE
804 804
805 config TOUCHSCREEN_USB_ETT_TC45USB 805 config TOUCHSCREEN_USB_ETT_TC45USB
806 default y 806 default y
807 bool "ET&T USB series TC4UM/TC5UH touchscreen controller support" if EXPERT 807 bool "ET&T USB series TC4UM/TC5UH touchscreen controller support" if EXPERT
808 depends on TOUCHSCREEN_USB_COMPOSITE 808 depends on TOUCHSCREEN_USB_COMPOSITE
809 809
810 config TOUCHSCREEN_USB_NEXIO 810 config TOUCHSCREEN_USB_NEXIO
811 default y 811 default y
812 bool "NEXIO/iNexio device support" if EXPERT 812 bool "NEXIO/iNexio device support" if EXPERT
813 depends on TOUCHSCREEN_USB_COMPOSITE 813 depends on TOUCHSCREEN_USB_COMPOSITE
814 814
815 config TOUCHSCREEN_USB_EASYTOUCH 815 config TOUCHSCREEN_USB_EASYTOUCH
816 default y 816 default y
817 bool "EasyTouch USB Touch controller device support" if EMBEDDED 817 bool "EasyTouch USB Touch controller device support" if EMBEDDED
818 depends on TOUCHSCREEN_USB_COMPOSITE 818 depends on TOUCHSCREEN_USB_COMPOSITE
819 help 819 help
820 Say Y here if you have an EasyTouch USB Touch controller. 820 Say Y here if you have an EasyTouch USB Touch controller.
821 If unsure, say N. 821 If unsure, say N.
822 822
823 config TOUCHSCREEN_TOUCHIT213 823 config TOUCHSCREEN_TOUCHIT213
824 tristate "Sahara TouchIT-213 touchscreen" 824 tristate "Sahara TouchIT-213 touchscreen"
825 select SERIO 825 select SERIO
826 help 826 help
827 Say Y here if you have a Sahara TouchIT-213 Tablet PC. 827 Say Y here if you have a Sahara TouchIT-213 Tablet PC.
828 828
829 If unsure, say N. 829 If unsure, say N.
830 830
831 To compile this driver as a module, choose M here: the 831 To compile this driver as a module, choose M here: the
832 module will be called touchit213. 832 module will be called touchit213.
833 833
834 config TOUCHSCREEN_TSC_SERIO 834 config TOUCHSCREEN_TSC_SERIO
835 tristate "TSC-10/25/40 serial touchscreen support" 835 tristate "TSC-10/25/40 serial touchscreen support"
836 select SERIO 836 select SERIO
837 help 837 help
838 Say Y here if you have a TSC-10, 25 or 40 serial touchscreen connected 838 Say Y here if you have a TSC-10, 25 or 40 serial touchscreen connected
839 to your system. 839 to your system.
840 840
841 If unsure, say N. 841 If unsure, say N.
842 842
843 To compile this driver as a module, choose M here: the 843 To compile this driver as a module, choose M here: the
844 module will be called tsc40. 844 module will be called tsc40.
845 845
846 config TOUCHSCREEN_TSC2005 846 config TOUCHSCREEN_TSC2005
847 tristate "TSC2005 based touchscreens" 847 tristate "TSC2005 based touchscreens"
848 depends on SPI_MASTER 848 depends on SPI_MASTER
849 help 849 help
850 Say Y here if you have a TSC2005 based touchscreen. 850 Say Y here if you have a TSC2005 based touchscreen.
851 851
852 If unsure, say N. 852 If unsure, say N.
853 853
854 To compile this driver as a module, choose M here: the 854 To compile this driver as a module, choose M here: the
855 module will be called tsc2005. 855 module will be called tsc2005.
856 856
857 config TOUCHSCREEN_TSC2007 857 config TOUCHSCREEN_TSC2007
858 tristate "TSC2007 based touchscreens" 858 tristate "TSC2007 based touchscreens"
859 depends on I2C 859 depends on I2C
860 help 860 help
861 Say Y here if you have a TSC2007 based touchscreen. 861 Say Y here if you have a TSC2007 based touchscreen.
862 862
863 If unsure, say N. 863 If unsure, say N.
864 864
865 To compile this driver as a module, choose M here: the 865 To compile this driver as a module, choose M here: the
866 module will be called tsc2007. 866 module will be called tsc2007.
867 867
868 config TOUCHSCREEN_W90X900 868 config TOUCHSCREEN_W90X900
869 tristate "W90P910 touchscreen driver" 869 tristate "W90P910 touchscreen driver"
870 depends on HAVE_CLK 870 depends on HAVE_CLK
871 help 871 help
872 Say Y here if you have a W90P910 based touchscreen. 872 Say Y here if you have a W90P910 based touchscreen.
873 873
874 To compile this driver as a module, choose M here: the 874 To compile this driver as a module, choose M here: the
875 module will be called w90p910_ts. 875 module will be called w90p910_ts.
876 876
877 config TOUCHSCREEN_PCAP 877 config TOUCHSCREEN_PCAP
878 tristate "Motorola PCAP touchscreen" 878 tristate "Motorola PCAP touchscreen"
879 depends on EZX_PCAP 879 depends on EZX_PCAP
880 help 880 help
881 Say Y here if you have a Motorola EZX telephone and 881 Say Y here if you have a Motorola EZX telephone and
882 want to enable support for the built-in touchscreen. 882 want to enable support for the built-in touchscreen.
883 883
884 To compile this driver as a module, choose M here: the 884 To compile this driver as a module, choose M here: the
885 module will be called pcap_ts. 885 module will be called pcap_ts.
886 886
887 config TOUCHSCREEN_ST1232 887 config TOUCHSCREEN_ST1232
888 tristate "Sitronix ST1232 touchscreen controllers" 888 tristate "Sitronix ST1232 touchscreen controllers"
889 depends on I2C 889 depends on I2C
890 help 890 help
891 Say Y here if you want to support Sitronix ST1232 891 Say Y here if you want to support Sitronix ST1232
892 touchscreen controller. 892 touchscreen controller.
893 893
894 If unsure, say N. 894 If unsure, say N.
895 895
896 To compile this driver as a module, choose M here: the 896 To compile this driver as a module, choose M here: the
897 module will be called st1232_ts. 897 module will be called st1232_ts.
898 898
899 config TOUCHSCREEN_STMPE 899 config TOUCHSCREEN_STMPE
900 tristate "STMicroelectronics STMPE touchscreens" 900 tristate "STMicroelectronics STMPE touchscreens"
901 depends on MFD_STMPE 901 depends on MFD_STMPE
902 help 902 help
903 Say Y here if you want support for STMicroelectronics 903 Say Y here if you want support for STMicroelectronics
904 STMPE touchscreen controllers. 904 STMPE touchscreen controllers.
905 905
906 To compile this driver as a module, choose M here: the 906 To compile this driver as a module, choose M here: the
907 module will be called stmpe-ts. 907 module will be called stmpe-ts.
908 908
909 config TOUCHSCREEN_TPS6507X 909 config TOUCHSCREEN_TPS6507X
910 tristate "TPS6507x based touchscreens" 910 tristate "TPS6507x based touchscreens"
911 depends on I2C 911 depends on I2C
912 select INPUT_POLLDEV 912 select INPUT_POLLDEV
913 help 913 help
914 Say Y here if you have a TPS6507x based touchscreen 914 Say Y here if you have a TPS6507x based touchscreen
915 controller. 915 controller.
916 916
917 If unsure, say N. 917 If unsure, say N.
918 918
919 To compile this driver as a module, choose M here: the 919 To compile this driver as a module, choose M here: the
920 module will be called tps6507x_ts. 920 module will be called tps6507x_ts.
921 921
922 config TOUCHSCREEN_ZFORCE
923 tristate "Neonode zForce infrared touchscreens"
924 depends on I2C
925 depends on GPIOLIB
926 help
927 Say Y here if you have a touchscreen using the zforce
928 infraread technology from Neonode.
929
930 If unsure, say N.
931
932 To compile this driver as a module, choose M here: the
933 module will be called zforce_ts.
934
922 endif 935 endif
923 936
drivers/input/touchscreen/Makefile
1 # 1 #
2 # Makefile for the touchscreen drivers. 2 # Makefile for the touchscreen drivers.
3 # 3 #
4 4
5 # Each configuration option enables a list of files. 5 # Each configuration option enables a list of files.
6 6
7 wm97xx-ts-y := wm97xx-core.o 7 wm97xx-ts-y := wm97xx-core.o
8 8
9 obj-$(CONFIG_TOUCHSCREEN_88PM860X) += 88pm860x-ts.o 9 obj-$(CONFIG_TOUCHSCREEN_88PM860X) += 88pm860x-ts.o
10 obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o 10 obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o
11 obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o 11 obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o
12 obj-$(CONFIG_TOUCHSCREEN_AD7879_I2C) += ad7879-i2c.o 12 obj-$(CONFIG_TOUCHSCREEN_AD7879_I2C) += ad7879-i2c.o
13 obj-$(CONFIG_TOUCHSCREEN_AD7879_SPI) += ad7879-spi.o 13 obj-$(CONFIG_TOUCHSCREEN_AD7879_SPI) += ad7879-spi.o
14 obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o 14 obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o
15 obj-$(CONFIG_TOUCHSCREEN_ATMEL_MXT) += atmel_mxt_ts.o 15 obj-$(CONFIG_TOUCHSCREEN_ATMEL_MXT) += atmel_mxt_ts.o
16 obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) += atmel_tsadcc.o 16 obj-$(CONFIG_TOUCHSCREEN_ATMEL_TSADCC) += atmel_tsadcc.o
17 obj-$(CONFIG_TOUCHSCREEN_AUO_PIXCIR) += auo-pixcir-ts.o 17 obj-$(CONFIG_TOUCHSCREEN_AUO_PIXCIR) += auo-pixcir-ts.o
18 obj-$(CONFIG_TOUCHSCREEN_BU21013) += bu21013_ts.o 18 obj-$(CONFIG_TOUCHSCREEN_BU21013) += bu21013_ts.o
19 obj-$(CONFIG_TOUCHSCREEN_CY8CTMG110) += cy8ctmg110_ts.o 19 obj-$(CONFIG_TOUCHSCREEN_CY8CTMG110) += cy8ctmg110_ts.o
20 obj-$(CONFIG_TOUCHSCREEN_CYTTSP_CORE) += cyttsp_core.o 20 obj-$(CONFIG_TOUCHSCREEN_CYTTSP_CORE) += cyttsp_core.o
21 obj-$(CONFIG_TOUCHSCREEN_CYTTSP_I2C) += cyttsp_i2c.o cyttsp_i2c_common.o 21 obj-$(CONFIG_TOUCHSCREEN_CYTTSP_I2C) += cyttsp_i2c.o cyttsp_i2c_common.o
22 obj-$(CONFIG_TOUCHSCREEN_CYTTSP_SPI) += cyttsp_spi.o 22 obj-$(CONFIG_TOUCHSCREEN_CYTTSP_SPI) += cyttsp_spi.o
23 obj-$(CONFIG_TOUCHSCREEN_CYTTSP4_CORE) += cyttsp4_core.o 23 obj-$(CONFIG_TOUCHSCREEN_CYTTSP4_CORE) += cyttsp4_core.o
24 obj-$(CONFIG_TOUCHSCREEN_CYTTSP4_I2C) += cyttsp4_i2c.o cyttsp_i2c_common.o 24 obj-$(CONFIG_TOUCHSCREEN_CYTTSP4_I2C) += cyttsp4_i2c.o cyttsp_i2c_common.o
25 obj-$(CONFIG_TOUCHSCREEN_CYTTSP4_SPI) += cyttsp4_spi.o 25 obj-$(CONFIG_TOUCHSCREEN_CYTTSP4_SPI) += cyttsp4_spi.o
26 obj-$(CONFIG_TOUCHSCREEN_DA9034) += da9034-ts.o 26 obj-$(CONFIG_TOUCHSCREEN_DA9034) += da9034-ts.o
27 obj-$(CONFIG_TOUCHSCREEN_DA9052) += da9052_tsi.o 27 obj-$(CONFIG_TOUCHSCREEN_DA9052) += da9052_tsi.o
28 obj-$(CONFIG_TOUCHSCREEN_DYNAPRO) += dynapro.o 28 obj-$(CONFIG_TOUCHSCREEN_DYNAPRO) += dynapro.o
29 obj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o 29 obj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o
30 obj-$(CONFIG_TOUCHSCREEN_HAMPSHIRE) += hampshire.o 30 obj-$(CONFIG_TOUCHSCREEN_HAMPSHIRE) += hampshire.o
31 obj-$(CONFIG_TOUCHSCREEN_GUNZE) += gunze.o 31 obj-$(CONFIG_TOUCHSCREEN_GUNZE) += gunze.o
32 obj-$(CONFIG_TOUCHSCREEN_EETI) += eeti_ts.o 32 obj-$(CONFIG_TOUCHSCREEN_EETI) += eeti_ts.o
33 obj-$(CONFIG_TOUCHSCREEN_ELO) += elo.o 33 obj-$(CONFIG_TOUCHSCREEN_ELO) += elo.o
34 obj-$(CONFIG_TOUCHSCREEN_EGALAX) += egalax_ts.o 34 obj-$(CONFIG_TOUCHSCREEN_EGALAX) += egalax_ts.o
35 obj-$(CONFIG_TOUCHSCREEN_FUJITSU) += fujitsu_ts.o 35 obj-$(CONFIG_TOUCHSCREEN_FUJITSU) += fujitsu_ts.o
36 obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o 36 obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o
37 obj-$(CONFIG_TOUCHSCREEN_INEXIO) += inexio.o 37 obj-$(CONFIG_TOUCHSCREEN_INEXIO) += inexio.o
38 obj-$(CONFIG_TOUCHSCREEN_INTEL_MID) += intel-mid-touch.o 38 obj-$(CONFIG_TOUCHSCREEN_INTEL_MID) += intel-mid-touch.o
39 obj-$(CONFIG_TOUCHSCREEN_LPC32XX) += lpc32xx_ts.o 39 obj-$(CONFIG_TOUCHSCREEN_LPC32XX) += lpc32xx_ts.o
40 obj-$(CONFIG_TOUCHSCREEN_MAX11801) += max11801_ts.o 40 obj-$(CONFIG_TOUCHSCREEN_MAX11801) += max11801_ts.o
41 obj-$(CONFIG_TOUCHSCREEN_MC13783) += mc13783_ts.o 41 obj-$(CONFIG_TOUCHSCREEN_MC13783) += mc13783_ts.o
42 obj-$(CONFIG_TOUCHSCREEN_MCS5000) += mcs5000_ts.o 42 obj-$(CONFIG_TOUCHSCREEN_MCS5000) += mcs5000_ts.o
43 obj-$(CONFIG_TOUCHSCREEN_MIGOR) += migor_ts.o 43 obj-$(CONFIG_TOUCHSCREEN_MIGOR) += migor_ts.o
44 obj-$(CONFIG_TOUCHSCREEN_MMS114) += mms114.o 44 obj-$(CONFIG_TOUCHSCREEN_MMS114) += mms114.o
45 obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o 45 obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
46 obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o 46 obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o
47 obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o 47 obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o
48 obj-$(CONFIG_TOUCHSCREEN_HP7XX) += jornada720_ts.o 48 obj-$(CONFIG_TOUCHSCREEN_HP7XX) += jornada720_ts.o
49 obj-$(CONFIG_TOUCHSCREEN_HTCPEN) += htcpen.o 49 obj-$(CONFIG_TOUCHSCREEN_HTCPEN) += htcpen.o
50 obj-$(CONFIG_TOUCHSCREEN_USB_COMPOSITE) += usbtouchscreen.o 50 obj-$(CONFIG_TOUCHSCREEN_USB_COMPOSITE) += usbtouchscreen.o
51 obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o 51 obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
52 obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o 52 obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o
53 obj-$(CONFIG_TOUCHSCREEN_PIXCIR) += pixcir_i2c_ts.o 53 obj-$(CONFIG_TOUCHSCREEN_PIXCIR) += pixcir_i2c_ts.o
54 obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o 54 obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
55 obj-$(CONFIG_TOUCHSCREEN_ST1232) += st1232.o 55 obj-$(CONFIG_TOUCHSCREEN_ST1232) += st1232.o
56 obj-$(CONFIG_TOUCHSCREEN_STMPE) += stmpe-ts.o 56 obj-$(CONFIG_TOUCHSCREEN_STMPE) += stmpe-ts.o
57 obj-$(CONFIG_TOUCHSCREEN_TI_AM335X_TSC) += ti_am335x_tsc.o 57 obj-$(CONFIG_TOUCHSCREEN_TI_AM335X_TSC) += ti_am335x_tsc.o
58 obj-$(CONFIG_TOUCHSCREEN_TNETV107X) += tnetv107x-ts.o 58 obj-$(CONFIG_TOUCHSCREEN_TNETV107X) += tnetv107x-ts.o
59 obj-$(CONFIG_TOUCHSCREEN_TOUCHIT213) += touchit213.o 59 obj-$(CONFIG_TOUCHSCREEN_TOUCHIT213) += touchit213.o
60 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o 60 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
61 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o 61 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
62 obj-$(CONFIG_TOUCHSCREEN_TSC_SERIO) += tsc40.o 62 obj-$(CONFIG_TOUCHSCREEN_TSC_SERIO) += tsc40.o
63 obj-$(CONFIG_TOUCHSCREEN_TSC2005) += tsc2005.o 63 obj-$(CONFIG_TOUCHSCREEN_TSC2005) += tsc2005.o
64 obj-$(CONFIG_TOUCHSCREEN_TSC2007) += tsc2007.o 64 obj-$(CONFIG_TOUCHSCREEN_TSC2007) += tsc2007.o
65 obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o 65 obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
66 obj-$(CONFIG_TOUCHSCREEN_WACOM_W8001) += wacom_w8001.o 66 obj-$(CONFIG_TOUCHSCREEN_WACOM_W8001) += wacom_w8001.o
67 obj-$(CONFIG_TOUCHSCREEN_WACOM_I2C) += wacom_i2c.o 67 obj-$(CONFIG_TOUCHSCREEN_WACOM_I2C) += wacom_i2c.o
68 obj-$(CONFIG_TOUCHSCREEN_WM831X) += wm831x-ts.o 68 obj-$(CONFIG_TOUCHSCREEN_WM831X) += wm831x-ts.o
69 obj-$(CONFIG_TOUCHSCREEN_WM97XX) += wm97xx-ts.o 69 obj-$(CONFIG_TOUCHSCREEN_WM97XX) += wm97xx-ts.o
70 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705) += wm9705.o 70 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705) += wm9705.o
71 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o 71 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
72 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o 72 wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o
73 obj-$(CONFIG_TOUCHSCREEN_WM97XX_ATMEL) += atmel-wm97xx.o 73 obj-$(CONFIG_TOUCHSCREEN_WM97XX_ATMEL) += atmel-wm97xx.o
74 obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o 74 obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o
75 obj-$(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE) += zylonite-wm97xx.o 75 obj-$(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE) += zylonite-wm97xx.o
76 obj-$(CONFIG_TOUCHSCREEN_W90X900) += w90p910_ts.o 76 obj-$(CONFIG_TOUCHSCREEN_W90X900) += w90p910_ts.o
77 obj-$(CONFIG_TOUCHSCREEN_TPS6507X) += tps6507x-ts.o 77 obj-$(CONFIG_TOUCHSCREEN_TPS6507X) += tps6507x-ts.o
78 obj-$(CONFIG_TOUCHSCREEN_ZFORCE) += zforce_ts.o
78 79
drivers/input/touchscreen/zforce_ts.c
File was created 1 /*
2 * Copyright (C) 2012-2013 MundoReader S.L.
3 * Author: Heiko Stuebner <heiko@sntech.de>
4 *
5 * based in parts on Nook zforce driver
6 *
7 * Copyright (C) 2010 Barnes & Noble, Inc.
8 * Author: Pieter Truter<ptruter@intrinsyc.com>
9 *
10 * This software is licensed under the terms of the GNU General Public
11 * License version 2, as published by the Free Software Foundation, and
12 * may be copied, distributed, and modified under those terms.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 */
19
20 #include <linux/module.h>
21 #include <linux/hrtimer.h>
22 #include <linux/slab.h>
23 #include <linux/input.h>
24 #include <linux/interrupt.h>
25 #include <linux/i2c.h>
26 #include <linux/delay.h>
27 #include <linux/gpio.h>
28 #include <linux/device.h>
29 #include <linux/sysfs.h>
30 #include <linux/input/mt.h>
31 #include <linux/platform_data/zforce_ts.h>
32
33 #define WAIT_TIMEOUT msecs_to_jiffies(1000)
34
35 #define FRAME_START 0xee
36
37 /* Offsets of the different parts of the payload the controller sends */
38 #define PAYLOAD_HEADER 0
39 #define PAYLOAD_LENGTH 1
40 #define PAYLOAD_BODY 2
41
42 /* Response offsets */
43 #define RESPONSE_ID 0
44 #define RESPONSE_DATA 1
45
46 /* Commands */
47 #define COMMAND_DEACTIVATE 0x00
48 #define COMMAND_INITIALIZE 0x01
49 #define COMMAND_RESOLUTION 0x02
50 #define COMMAND_SETCONFIG 0x03
51 #define COMMAND_DATAREQUEST 0x04
52 #define COMMAND_SCANFREQ 0x08
53 #define COMMAND_STATUS 0X1e
54
55 /*
56 * Responses the controller sends as a result of
57 * command requests
58 */
59 #define RESPONSE_DEACTIVATE 0x00
60 #define RESPONSE_INITIALIZE 0x01
61 #define RESPONSE_RESOLUTION 0x02
62 #define RESPONSE_SETCONFIG 0x03
63 #define RESPONSE_SCANFREQ 0x08
64 #define RESPONSE_STATUS 0X1e
65
66 /*
67 * Notifications are send by the touch controller without
68 * being requested by the driver and include for example
69 * touch indications
70 */
71 #define NOTIFICATION_TOUCH 0x04
72 #define NOTIFICATION_BOOTCOMPLETE 0x07
73 #define NOTIFICATION_OVERRUN 0x25
74 #define NOTIFICATION_PROXIMITY 0x26
75 #define NOTIFICATION_INVALID_COMMAND 0xfe
76
77 #define ZFORCE_REPORT_POINTS 2
78 #define ZFORCE_MAX_AREA 0xff
79
80 #define STATE_DOWN 0
81 #define STATE_MOVE 1
82 #define STATE_UP 2
83
84 #define SETCONFIG_DUALTOUCH (1 << 0)
85
86 struct zforce_point {
87 int coord_x;
88 int coord_y;
89 int state;
90 int id;
91 int area_major;
92 int area_minor;
93 int orientation;
94 int pressure;
95 int prblty;
96 };
97
98 /*
99 * @client the i2c_client
100 * @input the input device
101 * @suspending in the process of going to suspend (don't emit wakeup
102 * events for commands executed to suspend the device)
103 * @suspended device suspended
104 * @access_mutex serialize i2c-access, to keep multipart reads together
105 * @command_done completion to wait for the command result
106 * @command_mutex serialize commands send to the ic
107 * @command_waiting the id of the command that that is currently waiting
108 * for a result
109 * @command_result returned result of the command
110 */
111 struct zforce_ts {
112 struct i2c_client *client;
113 struct input_dev *input;
114 const struct zforce_ts_platdata *pdata;
115 char phys[32];
116
117 bool suspending;
118 bool suspended;
119 bool boot_complete;
120
121 /* Firmware version information */
122 u16 version_major;
123 u16 version_minor;
124 u16 version_build;
125 u16 version_rev;
126
127 struct mutex access_mutex;
128
129 struct completion command_done;
130 struct mutex command_mutex;
131 int command_waiting;
132 int command_result;
133 };
134
135 static int zforce_command(struct zforce_ts *ts, u8 cmd)
136 {
137 struct i2c_client *client = ts->client;
138 char buf[3];
139 int ret;
140
141 dev_dbg(&client->dev, "%s: 0x%x\n", __func__, cmd);
142
143 buf[0] = FRAME_START;
144 buf[1] = 1; /* data size, command only */
145 buf[2] = cmd;
146
147 mutex_lock(&ts->access_mutex);
148 ret = i2c_master_send(client, &buf[0], ARRAY_SIZE(buf));
149 mutex_unlock(&ts->access_mutex);
150 if (ret < 0) {
151 dev_err(&client->dev, "i2c send data request error: %d\n", ret);
152 return ret;
153 }
154
155 return 0;
156 }
157
158 static int zforce_send_wait(struct zforce_ts *ts, const char *buf, int len)
159 {
160 struct i2c_client *client = ts->client;
161 int ret;
162
163 ret = mutex_trylock(&ts->command_mutex);
164 if (!ret) {
165 dev_err(&client->dev, "already waiting for a command\n");
166 return -EBUSY;
167 }
168
169 dev_dbg(&client->dev, "sending %d bytes for command 0x%x\n",
170 buf[1], buf[2]);
171
172 ts->command_waiting = buf[2];
173
174 mutex_lock(&ts->access_mutex);
175 ret = i2c_master_send(client, buf, len);
176 mutex_unlock(&ts->access_mutex);
177 if (ret < 0) {
178 dev_err(&client->dev, "i2c send data request error: %d\n", ret);
179 goto unlock;
180 }
181
182 dev_dbg(&client->dev, "waiting for result for command 0x%x\n", buf[2]);
183
184 if (wait_for_completion_timeout(&ts->command_done, WAIT_TIMEOUT) == 0) {
185 ret = -ETIME;
186 goto unlock;
187 }
188
189 ret = ts->command_result;
190
191 unlock:
192 mutex_unlock(&ts->command_mutex);
193 return ret;
194 }
195
196 static int zforce_command_wait(struct zforce_ts *ts, u8 cmd)
197 {
198 struct i2c_client *client = ts->client;
199 char buf[3];
200 int ret;
201
202 dev_dbg(&client->dev, "%s: 0x%x\n", __func__, cmd);
203
204 buf[0] = FRAME_START;
205 buf[1] = 1; /* data size, command only */
206 buf[2] = cmd;
207
208 ret = zforce_send_wait(ts, &buf[0], ARRAY_SIZE(buf));
209 if (ret < 0) {
210 dev_err(&client->dev, "i2c send data request error: %d\n", ret);
211 return ret;
212 }
213
214 return 0;
215 }
216
217 static int zforce_resolution(struct zforce_ts *ts, u16 x, u16 y)
218 {
219 struct i2c_client *client = ts->client;
220 char buf[7] = { FRAME_START, 5, COMMAND_RESOLUTION,
221 (x & 0xff), ((x >> 8) & 0xff),
222 (y & 0xff), ((y >> 8) & 0xff) };
223
224 dev_dbg(&client->dev, "set resolution to (%d,%d)\n", x, y);
225
226 return zforce_send_wait(ts, &buf[0], ARRAY_SIZE(buf));
227 }
228
229 static int zforce_scan_frequency(struct zforce_ts *ts, u16 idle, u16 finger,
230 u16 stylus)
231 {
232 struct i2c_client *client = ts->client;
233 char buf[9] = { FRAME_START, 7, COMMAND_SCANFREQ,
234 (idle & 0xff), ((idle >> 8) & 0xff),
235 (finger & 0xff), ((finger >> 8) & 0xff),
236 (stylus & 0xff), ((stylus >> 8) & 0xff) };
237
238 dev_dbg(&client->dev, "set scan frequency to (idle: %d, finger: %d, stylus: %d)\n",
239 idle, finger, stylus);
240
241 return zforce_send_wait(ts, &buf[0], ARRAY_SIZE(buf));
242 }
243
244 static int zforce_setconfig(struct zforce_ts *ts, char b1)
245 {
246 struct i2c_client *client = ts->client;
247 char buf[7] = { FRAME_START, 5, COMMAND_SETCONFIG,
248 b1, 0, 0, 0 };
249
250 dev_dbg(&client->dev, "set config to (%d)\n", b1);
251
252 return zforce_send_wait(ts, &buf[0], ARRAY_SIZE(buf));
253 }
254
255 static int zforce_start(struct zforce_ts *ts)
256 {
257 struct i2c_client *client = ts->client;
258 const struct zforce_ts_platdata *pdata = dev_get_platdata(&client->dev);
259 int ret;
260
261 dev_dbg(&client->dev, "starting device\n");
262
263 ret = zforce_command_wait(ts, COMMAND_INITIALIZE);
264 if (ret) {
265 dev_err(&client->dev, "Unable to initialize, %d\n", ret);
266 return ret;
267 }
268
269 ret = zforce_resolution(ts, pdata->x_max, pdata->y_max);
270 if (ret) {
271 dev_err(&client->dev, "Unable to set resolution, %d\n", ret);
272 goto error;
273 }
274
275 ret = zforce_scan_frequency(ts, 10, 50, 50);
276 if (ret) {
277 dev_err(&client->dev, "Unable to set scan frequency, %d\n",
278 ret);
279 goto error;
280 }
281
282 if (zforce_setconfig(ts, SETCONFIG_DUALTOUCH)) {
283 dev_err(&client->dev, "Unable to set config\n");
284 goto error;
285 }
286
287 /* start sending touch events */
288 ret = zforce_command(ts, COMMAND_DATAREQUEST);
289 if (ret) {
290 dev_err(&client->dev, "Unable to request data\n");
291 goto error;
292 }
293
294 /*
295 * Per NN, initial cal. take max. of 200msec.
296 * Allow time to complete this calibration
297 */
298 msleep(200);
299
300 return 0;
301
302 error:
303 zforce_command_wait(ts, COMMAND_DEACTIVATE);
304 return ret;
305 }
306
307 static int zforce_stop(struct zforce_ts *ts)
308 {
309 struct i2c_client *client = ts->client;
310 int ret;
311
312 dev_dbg(&client->dev, "stopping device\n");
313
314 /* Deactivates touch sensing and puts the device into sleep. */
315 ret = zforce_command_wait(ts, COMMAND_DEACTIVATE);
316 if (ret != 0) {
317 dev_err(&client->dev, "could not deactivate device, %d\n",
318 ret);
319 return ret;
320 }
321
322 return 0;
323 }
324
325 static int zforce_touch_event(struct zforce_ts *ts, u8 *payload)
326 {
327 struct i2c_client *client = ts->client;
328 const struct zforce_ts_platdata *pdata = dev_get_platdata(&client->dev);
329 struct zforce_point point;
330 int count, i, num = 0;
331
332 count = payload[0];
333 if (count > ZFORCE_REPORT_POINTS) {
334 dev_warn(&client->dev, "to many coordinates %d, expected max %d\n",
335 count, ZFORCE_REPORT_POINTS);
336 count = ZFORCE_REPORT_POINTS;
337 }
338
339 for (i = 0; i < count; i++) {
340 point.coord_x =
341 payload[9 * i + 2] << 8 | payload[9 * i + 1];
342 point.coord_y =
343 payload[9 * i + 4] << 8 | payload[9 * i + 3];
344
345 if (point.coord_x > pdata->x_max ||
346 point.coord_y > pdata->y_max) {
347 dev_warn(&client->dev, "coordinates (%d,%d) invalid\n",
348 point.coord_x, point.coord_y);
349 point.coord_x = point.coord_y = 0;
350 }
351
352 point.state = payload[9 * i + 5] & 0x03;
353 point.id = (payload[9 * i + 5] & 0xfc) >> 2;
354
355 /* determine touch major, minor and orientation */
356 point.area_major = max(payload[9 * i + 6],
357 payload[9 * i + 7]);
358 point.area_minor = min(payload[9 * i + 6],
359 payload[9 * i + 7]);
360 point.orientation = payload[9 * i + 6] > payload[9 * i + 7];
361
362 point.pressure = payload[9 * i + 8];
363 point.prblty = payload[9 * i + 9];
364
365 dev_dbg(&client->dev,
366 "point %d/%d: state %d, id %d, pressure %d, prblty %d, x %d, y %d, amajor %d, aminor %d, ori %d\n",
367 i, count, point.state, point.id,
368 point.pressure, point.prblty,
369 point.coord_x, point.coord_y,
370 point.area_major, point.area_minor,
371 point.orientation);
372
373 /* the zforce id starts with "1", so needs to be decreased */
374 input_mt_slot(ts->input, point.id - 1);
375
376 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER,
377 point.state != STATE_UP);
378
379 if (point.state != STATE_UP) {
380 input_report_abs(ts->input, ABS_MT_POSITION_X,
381 point.coord_x);
382 input_report_abs(ts->input, ABS_MT_POSITION_Y,
383 point.coord_y);
384 input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR,
385 point.area_major);
386 input_report_abs(ts->input, ABS_MT_TOUCH_MINOR,
387 point.area_minor);
388 input_report_abs(ts->input, ABS_MT_ORIENTATION,
389 point.orientation);
390 num++;
391 }
392 }
393
394 input_mt_sync_frame(ts->input);
395
396 input_mt_report_finger_count(ts->input, num);
397
398 input_sync(ts->input);
399
400 return 0;
401 }
402
403 static int zforce_read_packet(struct zforce_ts *ts, u8 *buf)
404 {
405 struct i2c_client *client = ts->client;
406 int ret;
407
408 mutex_lock(&ts->access_mutex);
409
410 /* read 2 byte message header */
411 ret = i2c_master_recv(client, buf, 2);
412 if (ret < 0) {
413 dev_err(&client->dev, "error reading header: %d\n", ret);
414 goto unlock;
415 }
416
417 if (buf[PAYLOAD_HEADER] != FRAME_START) {
418 dev_err(&client->dev, "invalid frame start: %d\n", buf[0]);
419 ret = -EIO;
420 goto unlock;
421 }
422
423 if (buf[PAYLOAD_LENGTH] <= 0 || buf[PAYLOAD_LENGTH] > 255) {
424 dev_err(&client->dev, "invalid payload length: %d\n",
425 buf[PAYLOAD_LENGTH]);
426 ret = -EIO;
427 goto unlock;
428 }
429
430 /* read the message */
431 ret = i2c_master_recv(client, &buf[PAYLOAD_BODY], buf[PAYLOAD_LENGTH]);
432 if (ret < 0) {
433 dev_err(&client->dev, "error reading payload: %d\n", ret);
434 goto unlock;
435 }
436
437 dev_dbg(&client->dev, "read %d bytes for response command 0x%x\n",
438 buf[PAYLOAD_LENGTH], buf[PAYLOAD_BODY]);
439
440 unlock:
441 mutex_unlock(&ts->access_mutex);
442 return ret;
443 }
444
445 static void zforce_complete(struct zforce_ts *ts, int cmd, int result)
446 {
447 struct i2c_client *client = ts->client;
448
449 if (ts->command_waiting == cmd) {
450 dev_dbg(&client->dev, "completing command 0x%x\n", cmd);
451 ts->command_result = result;
452 complete(&ts->command_done);
453 } else {
454 dev_dbg(&client->dev, "command %d not for us\n", cmd);
455 }
456 }
457
458 static irqreturn_t zforce_interrupt(int irq, void *dev_id)
459 {
460 struct zforce_ts *ts = dev_id;
461 struct i2c_client *client = ts->client;
462 const struct zforce_ts_platdata *pdata = dev_get_platdata(&client->dev);
463 int ret;
464 u8 payload_buffer[512];
465 u8 *payload;
466
467 /*
468 * When suspended, emit a wakeup signal if necessary and return.
469 * Due to the level-interrupt we will get re-triggered later.
470 */
471 if (ts->suspended) {
472 if (device_may_wakeup(&client->dev))
473 pm_wakeup_event(&client->dev, 500);
474 msleep(20);
475 return IRQ_HANDLED;
476 }
477
478 dev_dbg(&client->dev, "handling interrupt\n");
479
480 /* Don't emit wakeup events from commands run by zforce_suspend */
481 if (!ts->suspending && device_may_wakeup(&client->dev))
482 pm_stay_awake(&client->dev);
483
484 while (!gpio_get_value(pdata->gpio_int)) {
485 ret = zforce_read_packet(ts, payload_buffer);
486 if (ret < 0) {
487 dev_err(&client->dev, "could not read packet, ret: %d\n",
488 ret);
489 break;
490 }
491
492 payload = &payload_buffer[PAYLOAD_BODY];
493
494 switch (payload[RESPONSE_ID]) {
495 case NOTIFICATION_TOUCH:
496 /*
497 * Always report touch-events received while
498 * suspending, when being a wakeup source
499 */
500 if (ts->suspending && device_may_wakeup(&client->dev))
501 pm_wakeup_event(&client->dev, 500);
502 zforce_touch_event(ts, &payload[RESPONSE_DATA]);
503 break;
504
505 case NOTIFICATION_BOOTCOMPLETE:
506 ts->boot_complete = payload[RESPONSE_DATA];
507 zforce_complete(ts, payload[RESPONSE_ID], 0);
508 break;
509
510 case RESPONSE_INITIALIZE:
511 case RESPONSE_DEACTIVATE:
512 case RESPONSE_SETCONFIG:
513 case RESPONSE_RESOLUTION:
514 case RESPONSE_SCANFREQ:
515 zforce_complete(ts, payload[RESPONSE_ID],
516 payload[RESPONSE_DATA]);
517 break;
518
519 case RESPONSE_STATUS:
520 /*
521 * Version Payload Results
522 * [2:major] [2:minor] [2:build] [2:rev]
523 */
524 ts->version_major = (payload[RESPONSE_DATA + 1] << 8) |
525 payload[RESPONSE_DATA];
526 ts->version_minor = (payload[RESPONSE_DATA + 3] << 8) |
527 payload[RESPONSE_DATA + 2];
528 ts->version_build = (payload[RESPONSE_DATA + 5] << 8) |
529 payload[RESPONSE_DATA + 4];
530 ts->version_rev = (payload[RESPONSE_DATA + 7] << 8) |
531 payload[RESPONSE_DATA + 6];
532 dev_dbg(&ts->client->dev, "Firmware Version %04x:%04x %04x:%04x\n",
533 ts->version_major, ts->version_minor,
534 ts->version_build, ts->version_rev);
535
536 zforce_complete(ts, payload[RESPONSE_ID], 0);
537 break;
538
539 case NOTIFICATION_INVALID_COMMAND:
540 dev_err(&ts->client->dev, "invalid command: 0x%x\n",
541 payload[RESPONSE_DATA]);
542 break;
543
544 default:
545 dev_err(&ts->client->dev, "unrecognized response id: 0x%x\n",
546 payload[RESPONSE_ID]);
547 break;
548 }
549 }
550
551 if (!ts->suspending && device_may_wakeup(&client->dev))
552 pm_relax(&client->dev);
553
554 dev_dbg(&client->dev, "finished interrupt\n");
555
556 return IRQ_HANDLED;
557 }
558
559 static int zforce_input_open(struct input_dev *dev)
560 {
561 struct zforce_ts *ts = input_get_drvdata(dev);
562 int ret;
563
564 ret = zforce_start(ts);
565 if (ret)
566 return ret;
567
568 return 0;
569 }
570
571 static void zforce_input_close(struct input_dev *dev)
572 {
573 struct zforce_ts *ts = input_get_drvdata(dev);
574 struct i2c_client *client = ts->client;
575 int ret;
576
577 ret = zforce_stop(ts);
578 if (ret)
579 dev_warn(&client->dev, "stopping zforce failed\n");
580
581 return;
582 }
583
584 #ifdef CONFIG_PM_SLEEP
585 static int zforce_suspend(struct device *dev)
586 {
587 struct i2c_client *client = to_i2c_client(dev);
588 struct zforce_ts *ts = i2c_get_clientdata(client);
589 struct input_dev *input = ts->input;
590 int ret = 0;
591
592 mutex_lock(&input->mutex);
593 ts->suspending = true;
594
595 /*
596 * When configured as a wakeup source device should always wake
597 * the system, therefore start device if necessary.
598 */
599 if (device_may_wakeup(&client->dev)) {
600 dev_dbg(&client->dev, "suspend while being a wakeup source\n");
601
602 /* Need to start device, if not open, to be a wakeup source. */
603 if (!input->users) {
604 ret = zforce_start(ts);
605 if (ret)
606 goto unlock;
607 }
608
609 enable_irq_wake(client->irq);
610 } else if (input->users) {
611 dev_dbg(&client->dev, "suspend without being a wakeup source\n");
612
613 ret = zforce_stop(ts);
614 if (ret)
615 goto unlock;
616
617 disable_irq(client->irq);
618 }
619
620 ts->suspended = true;
621
622 unlock:
623 ts->suspending = false;
624 mutex_unlock(&input->mutex);
625
626 return ret;
627 }
628
629 static int zforce_resume(struct device *dev)
630 {
631 struct i2c_client *client = to_i2c_client(dev);
632 struct zforce_ts *ts = i2c_get_clientdata(client);
633 struct input_dev *input = ts->input;
634 int ret = 0;
635
636 mutex_lock(&input->mutex);
637
638 ts->suspended = false;
639
640 if (device_may_wakeup(&client->dev)) {
641 dev_dbg(&client->dev, "resume from being a wakeup source\n");
642
643 disable_irq_wake(client->irq);
644
645 /* need to stop device if it was not open on suspend */
646 if (!input->users) {
647 ret = zforce_stop(ts);
648 if (ret)
649 goto unlock;
650 }
651 } else if (input->users) {
652 dev_dbg(&client->dev, "resume without being a wakeup source\n");
653
654 enable_irq(client->irq);
655
656 ret = zforce_start(ts);
657 if (ret < 0)
658 goto unlock;
659 }
660
661 unlock:
662 mutex_unlock(&input->mutex);
663
664 return ret;
665 }
666 #endif
667
668 static SIMPLE_DEV_PM_OPS(zforce_pm_ops, zforce_suspend, zforce_resume);
669
670 static void zforce_reset(void *data)
671 {
672 struct zforce_ts *ts = data;
673
674 gpio_set_value(ts->pdata->gpio_rst, 0);
675 }
676
677 static int zforce_probe(struct i2c_client *client,
678 const struct i2c_device_id *id)
679 {
680 const struct zforce_ts_platdata *pdata = dev_get_platdata(&client->dev);
681 struct zforce_ts *ts;
682 struct input_dev *input_dev;
683 int ret;
684
685 if (!pdata)
686 return -EINVAL;
687
688 ts = devm_kzalloc(&client->dev, sizeof(struct zforce_ts), GFP_KERNEL);
689 if (!ts)
690 return -ENOMEM;
691
692 ret = devm_gpio_request_one(&client->dev, pdata->gpio_int, GPIOF_IN,
693 "zforce_ts_int");
694 if (ret) {
695 dev_err(&client->dev, "request of gpio %d failed, %d\n",
696 pdata->gpio_int, ret);
697 return ret;
698 }
699
700 ret = devm_gpio_request_one(&client->dev, pdata->gpio_rst,
701 GPIOF_OUT_INIT_LOW, "zforce_ts_rst");
702 if (ret) {
703 dev_err(&client->dev, "request of gpio %d failed, %d\n",
704 pdata->gpio_rst, ret);
705 return ret;
706 }
707
708 ret = devm_add_action(&client->dev, zforce_reset, ts);
709 if (ret) {
710 dev_err(&client->dev, "failed to register reset action, %d\n",
711 ret);
712 return ret;
713 }
714
715 snprintf(ts->phys, sizeof(ts->phys),
716 "%s/input0", dev_name(&client->dev));
717
718 input_dev = devm_input_allocate_device(&client->dev);
719 if (!input_dev) {
720 dev_err(&client->dev, "could not allocate input device\n");
721 return -ENOMEM;
722 }
723
724 mutex_init(&ts->access_mutex);
725 mutex_init(&ts->command_mutex);
726
727 ts->pdata = pdata;
728 ts->client = client;
729 ts->input = input_dev;
730
731 input_dev->name = "Neonode zForce touchscreen";
732 input_dev->phys = ts->phys;
733 input_dev->id.bustype = BUS_I2C;
734
735 input_dev->open = zforce_input_open;
736 input_dev->close = zforce_input_close;
737
738 __set_bit(EV_KEY, input_dev->evbit);
739 __set_bit(EV_SYN, input_dev->evbit);
740 __set_bit(EV_ABS, input_dev->evbit);
741
742 /* For multi touch */
743 input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0,
744 pdata->x_max, 0, 0);
745 input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0,
746 pdata->y_max, 0, 0);
747
748 input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0,
749 ZFORCE_MAX_AREA, 0, 0);
750 input_set_abs_params(input_dev, ABS_MT_TOUCH_MINOR, 0,
751 ZFORCE_MAX_AREA, 0, 0);
752 input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0);
753 input_mt_init_slots(input_dev, ZFORCE_REPORT_POINTS, INPUT_MT_DIRECT);
754
755 input_set_drvdata(ts->input, ts);
756
757 init_completion(&ts->command_done);
758
759 /*
760 * The zforce pulls the interrupt low when it has data ready.
761 * After it is triggered the isr thread runs until all the available
762 * packets have been read and the interrupt is high again.
763 * Therefore we can trigger the interrupt anytime it is low and do
764 * not need to limit it to the interrupt edge.
765 */
766 ret = devm_request_threaded_irq(&client->dev, client->irq, NULL,
767 zforce_interrupt,
768 IRQF_TRIGGER_LOW | IRQF_ONESHOT,
769 input_dev->name, ts);
770 if (ret) {
771 dev_err(&client->dev, "irq %d request failed\n", client->irq);
772 return ret;
773 }
774
775 i2c_set_clientdata(client, ts);
776
777 /* let the controller boot */
778 gpio_set_value(pdata->gpio_rst, 1);
779
780 ts->command_waiting = NOTIFICATION_BOOTCOMPLETE;
781 if (wait_for_completion_timeout(&ts->command_done, WAIT_TIMEOUT) == 0)
782 dev_warn(&client->dev, "bootcomplete timed out\n");
783
784 /* need to start device to get version information */
785 ret = zforce_command_wait(ts, COMMAND_INITIALIZE);
786 if (ret) {
787 dev_err(&client->dev, "unable to initialize, %d\n", ret);
788 return ret;
789 }
790
791 /* this gets the firmware version among other informations */
792 ret = zforce_command_wait(ts, COMMAND_STATUS);
793 if (ret < 0) {
794 dev_err(&client->dev, "couldn't get status, %d\n", ret);
795 zforce_stop(ts);
796 return ret;
797 }
798
799 /* stop device and put it into sleep until it is opened */
800 ret = zforce_stop(ts);
801 if (ret < 0)
802 return ret;
803
804 device_set_wakeup_capable(&client->dev, true);
805
806 ret = input_register_device(input_dev);
807 if (ret) {
808 dev_err(&client->dev, "could not register input device, %d\n",
809 ret);
810 return ret;
811 }
812
813 return 0;
814 }
815
816 static struct i2c_device_id zforce_idtable[] = {
817 { "zforce-ts", 0 },
818 { }
819 };
820 MODULE_DEVICE_TABLE(i2c, zforce_idtable);
821
822 static struct i2c_driver zforce_driver = {
823 .driver = {
824 .owner = THIS_MODULE,
825 .name = "zforce-ts",
826 .pm = &zforce_pm_ops,
827 },
828 .probe = zforce_probe,
829 .id_table = zforce_idtable,
830 };
831
832 module_i2c_driver(zforce_driver);
833
834 MODULE_AUTHOR("Heiko Stuebner <heiko@sntech.de>");
835 MODULE_DESCRIPTION("zForce TouchScreen Driver");
836 MODULE_LICENSE("GPL");
837
include/linux/platform_data/zforce_ts.h
File was created 1 /* drivers/input/touchscreen/zforce.c
2 *
3 * Copyright (C) 2012-2013 MundoReader S.L.
4 *
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 */
14
15 #ifndef _LINUX_INPUT_ZFORCE_TS_H
16 #define _LINUX_INPUT_ZFORCE_TS_H
17
18 struct zforce_ts_platdata {
19 int gpio_int;
20 int gpio_rst;
21
22 unsigned int x_max;
23 unsigned int y_max;
24 };
25
26 #endif /* _LINUX_INPUT_ZFORCE_TS_H */
27