Input: ads7846 - make transfer buffers DMA safe
[pandora-kernel.git] / drivers / input / touchscreen / ads7846.c
1 /*
2  * ADS7846 based touchscreen and sensor driver
3  *
4  * Copyright (c) 2005 David Brownell
5  * Copyright (c) 2006 Nokia Corporation
6  * Various changes: Imre Deak <imre.deak@nokia.com>
7  *
8  * Using code from:
9  *  - corgi_ts.c
10  *      Copyright (C) 2004-2005 Richard Purdie
11  *  - omap_ts.[hc], ads7846.h, ts_osk.c
12  *      Copyright (C) 2002 MontaVista Software
13  *      Copyright (C) 2004 Texas Instruments
14  *      Copyright (C) 2005 Dirk Behme
15  *
16  *  This program is free software; you can redistribute it and/or modify
17  *  it under the terms of the GNU General Public License version 2 as
18  *  published by the Free Software Foundation.
19  */
20 #include <linux/types.h>
21 #include <linux/hwmon.h>
22 #include <linux/init.h>
23 #include <linux/err.h>
24 #include <linux/sched.h>
25 #include <linux/delay.h>
26 #include <linux/input.h>
27 #include <linux/interrupt.h>
28 #include <linux/slab.h>
29 #include <linux/pm.h>
30 #include <linux/gpio.h>
31 #include <linux/spi/spi.h>
32 #include <linux/spi/ads7846.h>
33 #include <linux/regulator/consumer.h>
34 #include <asm/irq.h>
35
36 /*
37  * This code has been heavily tested on a Nokia 770, and lightly
38  * tested on other ads7846 devices (OSK/Mistral, Lubbock, Spitz).
39  * TSC2046 is just newer ads7846 silicon.
40  * Support for ads7843 tested on Atmel at91sam926x-EK.
41  * Support for ads7845 has only been stubbed in.
42  * Support for Analog Devices AD7873 and AD7843 tested.
43  *
44  * IRQ handling needs a workaround because of a shortcoming in handling
45  * edge triggered IRQs on some platforms like the OMAP1/2. These
46  * platforms don't handle the ARM lazy IRQ disabling properly, thus we
47  * have to maintain our own SW IRQ disabled status. This should be
48  * removed as soon as the affected platform's IRQ handling is fixed.
49  *
50  * App note sbaa036 talks in more detail about accurate sampling...
51  * that ought to help in situations like LCDs inducing noise (which
52  * can also be helped by using synch signals) and more generally.
53  * This driver tries to utilize the measures described in the app
54  * note. The strength of filtering can be set in the board-* specific
55  * files.
56  */
57
58 #define TS_POLL_DELAY   1       /* ms delay before the first sample */
59 #define TS_POLL_PERIOD  5       /* ms delay between samples */
60
61 /* this driver doesn't aim at the peak continuous sample rate */
62 #define SAMPLE_BITS     (8 /*cmd*/ + 16 /*sample*/ + 2 /* before, after */)
63
64 struct ts_event {
65         /*
66          * For portability, we can't read 12 bit values using SPI (which
67          * would make the controller deliver them as native byte order u16
68          * with msbs zeroed).  Instead, we read them as two 8-bit values,
69          * *** WHICH NEED BYTESWAPPING *** and range adjustment.
70          */
71         u16     x;
72         u16     y;
73         u16     z1, z2;
74         bool    ignore;
75         u8      x_buf[3];
76         u8      y_buf[3];
77 };
78
79 /*
80  * We allocate this separately to avoid cache line sharing issues when
81  * driver is used with DMA-based SPI controllers (like atmel_spi) on
82  * systems where main memory is not DMA-coherent (most non-x86 boards).
83  */
84 struct ads7846_packet {
85         u8                      read_x, read_y, read_z1, read_z2, pwrdown;
86         u16                     dummy;          /* for the pwrdown read */
87         struct ts_event         tc;
88         /* for ads7845 with mpc5121 psc spi we use 3-byte buffers */
89         u8                      read_x_cmd[3], read_y_cmd[3], pwrdown_cmd[3];
90 };
91
92 struct ads7846 {
93         struct input_dev        *input;
94         char                    phys[32];
95         char                    name[32];
96
97         struct spi_device       *spi;
98         struct regulator        *reg;
99
100 #if defined(CONFIG_HWMON) || defined(CONFIG_HWMON_MODULE)
101         struct attribute_group  *attr_group;
102         struct device           *hwmon;
103 #endif
104
105         u16                     model;
106         u16                     vref_mv;
107         u16                     vref_delay_usecs;
108         u16                     x_plate_ohms;
109         u16                     pressure_max;
110
111         bool                    swap_xy;
112
113         struct ads7846_packet   *packet;
114
115         struct spi_transfer     xfer[18];
116         struct spi_message      msg[5];
117         int                     msg_count;
118         wait_queue_head_t       wait;
119
120         bool                    pendown;
121
122         int                     read_cnt;
123         int                     read_rep;
124         int                     last_read;
125
126         u16                     debounce_max;
127         u16                     debounce_tol;
128         u16                     debounce_rep;
129
130         u16                     penirq_recheck_delay_usecs;
131
132         struct mutex            lock;
133         bool                    stopped;        /* P: lock */
134         bool                    disabled;       /* P: lock */
135         bool                    suspended;      /* P: lock */
136
137         int                     (*filter)(void *data, int data_idx, int *val);
138         void                    *filter_data;
139         void                    (*filter_cleanup)(void *data);
140         int                     (*get_pendown_state)(void);
141         int                     gpio_pendown;
142
143         void                    (*wait_for_sync)(void);
144 };
145
146 /* leave chip selected when we're done, for quicker re-select? */
147 #if     0
148 #define CS_CHANGE(xfer) ((xfer).cs_change = 1)
149 #else
150 #define CS_CHANGE(xfer) ((xfer).cs_change = 0)
151 #endif
152
153 /*--------------------------------------------------------------------------*/
154
155 /* The ADS7846 has touchscreen and other sensors.
156  * Earlier ads784x chips are somewhat compatible.
157  */
158 #define ADS_START               (1 << 7)
159 #define ADS_A2A1A0_d_y          (1 << 4)        /* differential */
160 #define ADS_A2A1A0_d_z1         (3 << 4)        /* differential */
161 #define ADS_A2A1A0_d_z2         (4 << 4)        /* differential */
162 #define ADS_A2A1A0_d_x          (5 << 4)        /* differential */
163 #define ADS_A2A1A0_temp0        (0 << 4)        /* non-differential */
164 #define ADS_A2A1A0_vbatt        (2 << 4)        /* non-differential */
165 #define ADS_A2A1A0_vaux         (6 << 4)        /* non-differential */
166 #define ADS_A2A1A0_temp1        (7 << 4)        /* non-differential */
167 #define ADS_8_BIT               (1 << 3)
168 #define ADS_12_BIT              (0 << 3)
169 #define ADS_SER                 (1 << 2)        /* non-differential */
170 #define ADS_DFR                 (0 << 2)        /* differential */
171 #define ADS_PD10_PDOWN          (0 << 0)        /* low power mode + penirq */
172 #define ADS_PD10_ADC_ON         (1 << 0)        /* ADC on */
173 #define ADS_PD10_REF_ON         (2 << 0)        /* vREF on + penirq */
174 #define ADS_PD10_ALL_ON         (3 << 0)        /* ADC + vREF on */
175
176 #define MAX_12BIT       ((1<<12)-1)
177
178 /* leave ADC powered up (disables penirq) between differential samples */
179 #define READ_12BIT_DFR(x, adc, vref) (ADS_START | ADS_A2A1A0_d_ ## x \
180         | ADS_12_BIT | ADS_DFR | \
181         (adc ? ADS_PD10_ADC_ON : 0) | (vref ? ADS_PD10_REF_ON : 0))
182
183 #define READ_Y(vref)    (READ_12BIT_DFR(y,  1, vref))
184 #define READ_Z1(vref)   (READ_12BIT_DFR(z1, 1, vref))
185 #define READ_Z2(vref)   (READ_12BIT_DFR(z2, 1, vref))
186
187 #define READ_X(vref)    (READ_12BIT_DFR(x,  1, vref))
188 #define PWRDOWN         (READ_12BIT_DFR(y,  0, 0))      /* LAST */
189
190 /* single-ended samples need to first power up reference voltage;
191  * we leave both ADC and VREF powered
192  */
193 #define READ_12BIT_SER(x) (ADS_START | ADS_A2A1A0_ ## x \
194         | ADS_12_BIT | ADS_SER)
195
196 #define REF_ON  (READ_12BIT_DFR(x, 1, 1))
197 #define REF_OFF (READ_12BIT_DFR(y, 0, 0))
198
199 /* Must be called with ts->lock held */
200 static void ads7846_stop(struct ads7846 *ts)
201 {
202         if (!ts->disabled && !ts->suspended) {
203                 /* Signal IRQ thread to stop polling and disable the handler. */
204                 ts->stopped = true;
205                 mb();
206                 wake_up(&ts->wait);
207                 disable_irq(ts->spi->irq);
208         }
209 }
210
211 /* Must be called with ts->lock held */
212 static void ads7846_restart(struct ads7846 *ts)
213 {
214         if (!ts->disabled && !ts->suspended) {
215                 /* Tell IRQ thread that it may poll the device. */
216                 ts->stopped = false;
217                 mb();
218                 enable_irq(ts->spi->irq);
219         }
220 }
221
222 /* Must be called with ts->lock held */
223 static void __ads7846_disable(struct ads7846 *ts)
224 {
225         ads7846_stop(ts);
226         regulator_disable(ts->reg);
227
228         /*
229          * We know the chip's in low power mode since we always
230          * leave it that way after every request
231          */
232 }
233
234 /* Must be called with ts->lock held */
235 static void __ads7846_enable(struct ads7846 *ts)
236 {
237         regulator_enable(ts->reg);
238         ads7846_restart(ts);
239 }
240
241 static void ads7846_disable(struct ads7846 *ts)
242 {
243         mutex_lock(&ts->lock);
244
245         if (!ts->disabled) {
246
247                 if  (!ts->suspended)
248                         __ads7846_disable(ts);
249
250                 ts->disabled = true;
251         }
252
253         mutex_unlock(&ts->lock);
254 }
255
256 static void ads7846_enable(struct ads7846 *ts)
257 {
258         mutex_lock(&ts->lock);
259
260         if (ts->disabled) {
261
262                 ts->disabled = false;
263
264                 if (!ts->suspended)
265                         __ads7846_enable(ts);
266         }
267
268         mutex_unlock(&ts->lock);
269 }
270
271 /*--------------------------------------------------------------------------*/
272
273 /*
274  * Non-touchscreen sensors only use single-ended conversions.
275  * The range is GND..vREF. The ads7843 and ads7835 must use external vREF;
276  * ads7846 lets that pin be unconnected, to use internal vREF.
277  */
278
279 struct ser_req {
280         u8                      ref_on;
281         u8                      command;
282         u8                      ref_off;
283         u16                     scratch;
284         struct spi_message      msg;
285         struct spi_transfer     xfer[6];
286         /*
287          * DMA (thus cache coherency maintenance) requires the
288          * transfer buffers to live in their own cache lines.
289          */
290         __be16 sample ____cacheline_aligned;
291 };
292
293 struct ads7845_ser_req {
294         u8                      command[3];
295         u8                      pwrdown[3];
296         struct spi_message      msg;
297         struct spi_transfer     xfer[2];
298         /*
299          * DMA (thus cache coherency maintenance) requires the
300          * transfer buffers to live in their own cache lines.
301          */
302         u8 sample[3] ____cacheline_aligned;
303 };
304
305 static int ads7846_read12_ser(struct device *dev, unsigned command)
306 {
307         struct spi_device *spi = to_spi_device(dev);
308         struct ads7846 *ts = dev_get_drvdata(dev);
309         struct ser_req *req;
310         int status;
311         int use_internal;
312
313         req = kzalloc(sizeof *req, GFP_KERNEL);
314         if (!req)
315                 return -ENOMEM;
316
317         spi_message_init(&req->msg);
318
319         /* FIXME boards with ads7846 might use external vref instead ... */
320         use_internal = (ts->model == 7846);
321
322         /* maybe turn on internal vREF, and let it settle */
323         if (use_internal) {
324                 req->ref_on = REF_ON;
325                 req->xfer[0].tx_buf = &req->ref_on;
326                 req->xfer[0].len = 1;
327                 spi_message_add_tail(&req->xfer[0], &req->msg);
328
329                 req->xfer[1].rx_buf = &req->scratch;
330                 req->xfer[1].len = 2;
331
332                 /* for 1uF, settle for 800 usec; no cap, 100 usec.  */
333                 req->xfer[1].delay_usecs = ts->vref_delay_usecs;
334                 spi_message_add_tail(&req->xfer[1], &req->msg);
335         }
336
337         /* take sample */
338         req->command = (u8) command;
339         req->xfer[2].tx_buf = &req->command;
340         req->xfer[2].len = 1;
341         spi_message_add_tail(&req->xfer[2], &req->msg);
342
343         req->xfer[3].rx_buf = &req->sample;
344         req->xfer[3].len = 2;
345         spi_message_add_tail(&req->xfer[3], &req->msg);
346
347         /* REVISIT:  take a few more samples, and compare ... */
348
349         /* converter in low power mode & enable PENIRQ */
350         req->ref_off = PWRDOWN;
351         req->xfer[4].tx_buf = &req->ref_off;
352         req->xfer[4].len = 1;
353         spi_message_add_tail(&req->xfer[4], &req->msg);
354
355         req->xfer[5].rx_buf = &req->scratch;
356         req->xfer[5].len = 2;
357         CS_CHANGE(req->xfer[5]);
358         spi_message_add_tail(&req->xfer[5], &req->msg);
359
360         mutex_lock(&ts->lock);
361         ads7846_stop(ts);
362         status = spi_sync(spi, &req->msg);
363         ads7846_restart(ts);
364         mutex_unlock(&ts->lock);
365
366         if (status == 0) {
367                 /* on-wire is a must-ignore bit, a BE12 value, then padding */
368                 status = be16_to_cpu(req->sample);
369                 status = status >> 3;
370                 status &= 0x0fff;
371         }
372
373         kfree(req);
374         return status;
375 }
376
377 static int ads7845_read12_ser(struct device *dev, unsigned command)
378 {
379         struct spi_device *spi = to_spi_device(dev);
380         struct ads7846 *ts = dev_get_drvdata(dev);
381         struct ads7845_ser_req *req;
382         int status;
383
384         req = kzalloc(sizeof *req, GFP_KERNEL);
385         if (!req)
386                 return -ENOMEM;
387
388         spi_message_init(&req->msg);
389
390         req->command[0] = (u8) command;
391         req->xfer[0].tx_buf = req->command;
392         req->xfer[0].rx_buf = req->sample;
393         req->xfer[0].len = 3;
394         spi_message_add_tail(&req->xfer[0], &req->msg);
395
396         mutex_lock(&ts->lock);
397         ads7846_stop(ts);
398         status = spi_sync(spi, &req->msg);
399         ads7846_restart(ts);
400         mutex_unlock(&ts->lock);
401
402         if (status == 0) {
403                 /* BE12 value, then padding */
404                 status = be16_to_cpu(*((u16 *)&req->sample[1]));
405                 status = status >> 3;
406                 status &= 0x0fff;
407         }
408
409         kfree(req);
410         return status;
411 }
412
413 #if defined(CONFIG_HWMON) || defined(CONFIG_HWMON_MODULE)
414
415 #define SHOW(name, var, adjust) static ssize_t \
416 name ## _show(struct device *dev, struct device_attribute *attr, char *buf) \
417 { \
418         struct ads7846 *ts = dev_get_drvdata(dev); \
419         ssize_t v = ads7846_read12_ser(dev, \
420                         READ_12BIT_SER(var) | ADS_PD10_ALL_ON); \
421         if (v < 0) \
422                 return v; \
423         return sprintf(buf, "%u\n", adjust(ts, v)); \
424 } \
425 static DEVICE_ATTR(name, S_IRUGO, name ## _show, NULL);
426
427
428 /* Sysfs conventions report temperatures in millidegrees Celsius.
429  * ADS7846 could use the low-accuracy two-sample scheme, but can't do the high
430  * accuracy scheme without calibration data.  For now we won't try either;
431  * userspace sees raw sensor values, and must scale/calibrate appropriately.
432  */
433 static inline unsigned null_adjust(struct ads7846 *ts, ssize_t v)
434 {
435         return v;
436 }
437
438 SHOW(temp0, temp0, null_adjust)         /* temp1_input */
439 SHOW(temp1, temp1, null_adjust)         /* temp2_input */
440
441
442 /* sysfs conventions report voltages in millivolts.  We can convert voltages
443  * if we know vREF.  userspace may need to scale vAUX to match the board's
444  * external resistors; we assume that vBATT only uses the internal ones.
445  */
446 static inline unsigned vaux_adjust(struct ads7846 *ts, ssize_t v)
447 {
448         unsigned retval = v;
449
450         /* external resistors may scale vAUX into 0..vREF */
451         retval *= ts->vref_mv;
452         retval = retval >> 12;
453
454         return retval;
455 }
456
457 static inline unsigned vbatt_adjust(struct ads7846 *ts, ssize_t v)
458 {
459         unsigned retval = vaux_adjust(ts, v);
460
461         /* ads7846 has a resistor ladder to scale this signal down */
462         if (ts->model == 7846)
463                 retval *= 4;
464
465         return retval;
466 }
467
468 SHOW(in0_input, vaux, vaux_adjust)
469 SHOW(in1_input, vbatt, vbatt_adjust)
470
471 static struct attribute *ads7846_attributes[] = {
472         &dev_attr_temp0.attr,
473         &dev_attr_temp1.attr,
474         &dev_attr_in0_input.attr,
475         &dev_attr_in1_input.attr,
476         NULL,
477 };
478
479 static struct attribute_group ads7846_attr_group = {
480         .attrs = ads7846_attributes,
481 };
482
483 static struct attribute *ads7843_attributes[] = {
484         &dev_attr_in0_input.attr,
485         &dev_attr_in1_input.attr,
486         NULL,
487 };
488
489 static struct attribute_group ads7843_attr_group = {
490         .attrs = ads7843_attributes,
491 };
492
493 static struct attribute *ads7845_attributes[] = {
494         &dev_attr_in0_input.attr,
495         NULL,
496 };
497
498 static struct attribute_group ads7845_attr_group = {
499         .attrs = ads7845_attributes,
500 };
501
502 static int ads784x_hwmon_register(struct spi_device *spi, struct ads7846 *ts)
503 {
504         struct device *hwmon;
505         int err;
506
507         /* hwmon sensors need a reference voltage */
508         switch (ts->model) {
509         case 7846:
510                 if (!ts->vref_mv) {
511                         dev_dbg(&spi->dev, "assuming 2.5V internal vREF\n");
512                         ts->vref_mv = 2500;
513                 }
514                 break;
515         case 7845:
516         case 7843:
517                 if (!ts->vref_mv) {
518                         dev_warn(&spi->dev,
519                                 "external vREF for ADS%d not specified\n",
520                                 ts->model);
521                         return 0;
522                 }
523                 break;
524         }
525
526         /* different chips have different sensor groups */
527         switch (ts->model) {
528         case 7846:
529                 ts->attr_group = &ads7846_attr_group;
530                 break;
531         case 7845:
532                 ts->attr_group = &ads7845_attr_group;
533                 break;
534         case 7843:
535                 ts->attr_group = &ads7843_attr_group;
536                 break;
537         default:
538                 dev_dbg(&spi->dev, "ADS%d not recognized\n", ts->model);
539                 return 0;
540         }
541
542         err = sysfs_create_group(&spi->dev.kobj, ts->attr_group);
543         if (err)
544                 return err;
545
546         hwmon = hwmon_device_register(&spi->dev);
547         if (IS_ERR(hwmon)) {
548                 sysfs_remove_group(&spi->dev.kobj, ts->attr_group);
549                 return PTR_ERR(hwmon);
550         }
551
552         ts->hwmon = hwmon;
553         return 0;
554 }
555
556 static void ads784x_hwmon_unregister(struct spi_device *spi,
557                                      struct ads7846 *ts)
558 {
559         if (ts->hwmon) {
560                 sysfs_remove_group(&spi->dev.kobj, ts->attr_group);
561                 hwmon_device_unregister(ts->hwmon);
562         }
563 }
564
565 #else
566 static inline int ads784x_hwmon_register(struct spi_device *spi,
567                                          struct ads7846 *ts)
568 {
569         return 0;
570 }
571
572 static inline void ads784x_hwmon_unregister(struct spi_device *spi,
573                                             struct ads7846 *ts)
574 {
575 }
576 #endif
577
578 static ssize_t ads7846_pen_down_show(struct device *dev,
579                                      struct device_attribute *attr, char *buf)
580 {
581         struct ads7846 *ts = dev_get_drvdata(dev);
582
583         return sprintf(buf, "%u\n", ts->pendown);
584 }
585
586 static DEVICE_ATTR(pen_down, S_IRUGO, ads7846_pen_down_show, NULL);
587
588 static ssize_t ads7846_disable_show(struct device *dev,
589                                      struct device_attribute *attr, char *buf)
590 {
591         struct ads7846 *ts = dev_get_drvdata(dev);
592
593         return sprintf(buf, "%u\n", ts->disabled);
594 }
595
596 static ssize_t ads7846_disable_store(struct device *dev,
597                                      struct device_attribute *attr,
598                                      const char *buf, size_t count)
599 {
600         struct ads7846 *ts = dev_get_drvdata(dev);
601         unsigned long i;
602
603         if (strict_strtoul(buf, 10, &i))
604                 return -EINVAL;
605
606         if (i)
607                 ads7846_disable(ts);
608         else
609                 ads7846_enable(ts);
610
611         return count;
612 }
613
614 static DEVICE_ATTR(disable, 0664, ads7846_disable_show, ads7846_disable_store);
615
616 static struct attribute *ads784x_attributes[] = {
617         &dev_attr_pen_down.attr,
618         &dev_attr_disable.attr,
619         NULL,
620 };
621
622 static struct attribute_group ads784x_attr_group = {
623         .attrs = ads784x_attributes,
624 };
625
626 /*--------------------------------------------------------------------------*/
627
628 static int get_pendown_state(struct ads7846 *ts)
629 {
630         if (ts->get_pendown_state)
631                 return ts->get_pendown_state();
632
633         return !gpio_get_value(ts->gpio_pendown);
634 }
635
636 static void null_wait_for_sync(void)
637 {
638 }
639
640 static int ads7846_debounce_filter(void *ads, int data_idx, int *val)
641 {
642         struct ads7846 *ts = ads;
643
644         if (!ts->read_cnt || (abs(ts->last_read - *val) > ts->debounce_tol)) {
645                 /* Start over collecting consistent readings. */
646                 ts->read_rep = 0;
647                 /*
648                  * Repeat it, if this was the first read or the read
649                  * wasn't consistent enough.
650                  */
651                 if (ts->read_cnt < ts->debounce_max) {
652                         ts->last_read = *val;
653                         ts->read_cnt++;
654                         return ADS7846_FILTER_REPEAT;
655                 } else {
656                         /*
657                          * Maximum number of debouncing reached and still
658                          * not enough number of consistent readings. Abort
659                          * the whole sample, repeat it in the next sampling
660                          * period.
661                          */
662                         ts->read_cnt = 0;
663                         return ADS7846_FILTER_IGNORE;
664                 }
665         } else {
666                 if (++ts->read_rep > ts->debounce_rep) {
667                         /*
668                          * Got a good reading for this coordinate,
669                          * go for the next one.
670                          */
671                         ts->read_cnt = 0;
672                         ts->read_rep = 0;
673                         return ADS7846_FILTER_OK;
674                 } else {
675                         /* Read more values that are consistent. */
676                         ts->read_cnt++;
677                         return ADS7846_FILTER_REPEAT;
678                 }
679         }
680 }
681
682 static int ads7846_no_filter(void *ads, int data_idx, int *val)
683 {
684         return ADS7846_FILTER_OK;
685 }
686
687 static int ads7846_get_value(struct ads7846 *ts, struct spi_message *m)
688 {
689         struct spi_transfer *t =
690                 list_entry(m->transfers.prev, struct spi_transfer, transfer_list);
691
692         if (ts->model == 7845) {
693                 return be16_to_cpup((__be16 *)&(((char*)t->rx_buf)[1])) >> 3;
694         } else {
695                 /*
696                  * adjust:  on-wire is a must-ignore bit, a BE12 value, then
697                  * padding; built from two 8 bit values written msb-first.
698                  */
699                 return be16_to_cpup((__be16 *)t->rx_buf) >> 3;
700         }
701 }
702
703 static void ads7846_update_value(struct spi_message *m, int val)
704 {
705         struct spi_transfer *t =
706                 list_entry(m->transfers.prev, struct spi_transfer, transfer_list);
707
708         *(u16 *)t->rx_buf = val;
709 }
710
711 static void ads7846_read_state(struct ads7846 *ts)
712 {
713         struct ads7846_packet *packet = ts->packet;
714         struct spi_message *m;
715         int msg_idx = 0;
716         int val;
717         int action;
718         int error;
719
720         while (msg_idx < ts->msg_count) {
721
722                 ts->wait_for_sync();
723
724                 m = &ts->msg[msg_idx];
725                 error = spi_sync(ts->spi, m);
726                 if (error) {
727                         dev_err(&ts->spi->dev, "spi_async --> %d\n", error);
728                         packet->tc.ignore = true;
729                         return;
730                 }
731
732                 /*
733                  * Last message is power down request, no need to convert
734                  * or filter the value.
735                  */
736                 if (msg_idx < ts->msg_count - 1) {
737
738                         val = ads7846_get_value(ts, m);
739
740                         action = ts->filter(ts->filter_data, msg_idx, &val);
741                         switch (action) {
742                         case ADS7846_FILTER_REPEAT:
743                                 continue;
744
745                         case ADS7846_FILTER_IGNORE:
746                                 packet->tc.ignore = true;
747                                 msg_idx = ts->msg_count - 1;
748                                 continue;
749
750                         case ADS7846_FILTER_OK:
751                                 ads7846_update_value(m, val);
752                                 packet->tc.ignore = false;
753                                 msg_idx++;
754                                 break;
755
756                         default:
757                                 BUG();
758                         }
759                 } else {
760                         msg_idx++;
761                 }
762         }
763 }
764
765 static void ads7846_report_state(struct ads7846 *ts)
766 {
767         struct ads7846_packet *packet = ts->packet;
768         unsigned int Rt;
769         u16 x, y, z1, z2;
770
771         /*
772          * ads7846_get_value() does in-place conversion (including byte swap)
773          * from on-the-wire format as part of debouncing to get stable
774          * readings.
775          */
776         if (ts->model == 7845) {
777                 x = *(u16 *)packet->tc.x_buf;
778                 y = *(u16 *)packet->tc.y_buf;
779                 z1 = 0;
780                 z2 = 0;
781         } else {
782                 x = packet->tc.x;
783                 y = packet->tc.y;
784                 z1 = packet->tc.z1;
785                 z2 = packet->tc.z2;
786         }
787
788         /* range filtering */
789         if (x == MAX_12BIT)
790                 x = 0;
791
792         if (ts->model == 7843) {
793                 Rt = ts->pressure_max / 2;
794         } else if (ts->model == 7845) {
795                 if (get_pendown_state(ts))
796                         Rt = ts->pressure_max / 2;
797                 else
798                         Rt = 0;
799                 dev_vdbg(&ts->spi->dev, "x/y: %d/%d, PD %d\n", x, y, Rt);
800         } else if (likely(x && z1)) {
801                 /* compute touch pressure resistance using equation #2 */
802                 Rt = z2;
803                 Rt -= z1;
804                 Rt *= x;
805                 Rt *= ts->x_plate_ohms;
806                 Rt /= z1;
807                 Rt = (Rt + 2047) >> 12;
808         } else {
809                 Rt = 0;
810         }
811
812         /*
813          * Sample found inconsistent by debouncing or pressure is beyond
814          * the maximum. Don't report it to user space, repeat at least
815          * once more the measurement
816          */
817         if (packet->tc.ignore || Rt > ts->pressure_max) {
818                 dev_vdbg(&ts->spi->dev, "ignored %d pressure %d\n",
819                          packet->tc.ignore, Rt);
820                 return;
821         }
822
823         /*
824          * Maybe check the pendown state before reporting. This discards
825          * false readings when the pen is lifted.
826          */
827         if (ts->penirq_recheck_delay_usecs) {
828                 udelay(ts->penirq_recheck_delay_usecs);
829                 if (!get_pendown_state(ts))
830                         Rt = 0;
831         }
832
833         /*
834          * NOTE: We can't rely on the pressure to determine the pen down
835          * state, even this controller has a pressure sensor. The pressure
836          * value can fluctuate for quite a while after lifting the pen and
837          * in some cases may not even settle at the expected value.
838          *
839          * The only safe way to check for the pen up condition is in the
840          * timer by reading the pen signal state (it's a GPIO _and_ IRQ).
841          */
842         if (Rt) {
843                 struct input_dev *input = ts->input;
844
845                 if (ts->swap_xy)
846                         swap(x, y);
847
848                 if (!ts->pendown) {
849                         input_report_key(input, BTN_TOUCH, 1);
850                         ts->pendown = true;
851                         dev_vdbg(&ts->spi->dev, "DOWN\n");
852                 }
853
854                 input_report_abs(input, ABS_X, x);
855                 input_report_abs(input, ABS_Y, y);
856                 input_report_abs(input, ABS_PRESSURE, ts->pressure_max - Rt);
857
858                 input_sync(input);
859                 dev_vdbg(&ts->spi->dev, "%4d/%4d/%4d\n", x, y, Rt);
860         }
861 }
862
863 static irqreturn_t ads7846_hard_irq(int irq, void *handle)
864 {
865         struct ads7846 *ts = handle;
866
867         return get_pendown_state(ts) ? IRQ_WAKE_THREAD : IRQ_HANDLED;
868 }
869
870
871 static irqreturn_t ads7846_irq(int irq, void *handle)
872 {
873         struct ads7846 *ts = handle;
874
875         /* Start with a small delay before checking pendown state */
876         msleep(TS_POLL_DELAY);
877
878         while (!ts->stopped && get_pendown_state(ts)) {
879
880                 /* pen is down, continue with the measurement */
881                 ads7846_read_state(ts);
882
883                 if (!ts->stopped)
884                         ads7846_report_state(ts);
885
886                 wait_event_timeout(ts->wait, ts->stopped,
887                                    msecs_to_jiffies(TS_POLL_PERIOD));
888         }
889
890         if (ts->pendown) {
891                 struct input_dev *input = ts->input;
892
893                 input_report_key(input, BTN_TOUCH, 0);
894                 input_report_abs(input, ABS_PRESSURE, 0);
895                 input_sync(input);
896
897                 ts->pendown = false;
898                 dev_vdbg(&ts->spi->dev, "UP\n");
899         }
900
901         return IRQ_HANDLED;
902 }
903
904 #ifdef CONFIG_PM_SLEEP
905 static int ads7846_suspend(struct device *dev)
906 {
907         struct ads7846 *ts = dev_get_drvdata(dev);
908
909         mutex_lock(&ts->lock);
910
911         if (!ts->suspended) {
912
913                 if (!ts->disabled)
914                         __ads7846_disable(ts);
915
916                 if (device_may_wakeup(&ts->spi->dev))
917                         enable_irq_wake(ts->spi->irq);
918
919                 ts->suspended = true;
920         }
921
922         mutex_unlock(&ts->lock);
923
924         return 0;
925 }
926
927 static int ads7846_resume(struct device *dev)
928 {
929         struct ads7846 *ts = dev_get_drvdata(dev);
930
931         mutex_lock(&ts->lock);
932
933         if (ts->suspended) {
934
935                 ts->suspended = false;
936
937                 if (device_may_wakeup(&ts->spi->dev))
938                         disable_irq_wake(ts->spi->irq);
939
940                 if (!ts->disabled)
941                         __ads7846_enable(ts);
942         }
943
944         mutex_unlock(&ts->lock);
945
946         return 0;
947 }
948 #endif
949
950 static SIMPLE_DEV_PM_OPS(ads7846_pm, ads7846_suspend, ads7846_resume);
951
952 static int __devinit ads7846_setup_pendown(struct spi_device *spi, struct ads7846 *ts)
953 {
954         struct ads7846_platform_data *pdata = spi->dev.platform_data;
955         int err;
956
957         /*
958          * REVISIT when the irq can be triggered active-low, or if for some
959          * reason the touchscreen isn't hooked up, we don't need to access
960          * the pendown state.
961          */
962
963         if (pdata->get_pendown_state) {
964                 ts->get_pendown_state = pdata->get_pendown_state;
965         } else if (gpio_is_valid(pdata->gpio_pendown)) {
966
967                 err = gpio_request(pdata->gpio_pendown, "ads7846_pendown");
968                 if (err) {
969                         dev_err(&spi->dev, "failed to request pendown GPIO%d\n",
970                                 pdata->gpio_pendown);
971                         return err;
972                 }
973
974                 ts->gpio_pendown = pdata->gpio_pendown;
975
976         } else {
977                 dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n");
978                 return -EINVAL;
979         }
980
981         return 0;
982 }
983
984 /*
985  * Set up the transfers to read touchscreen state; this assumes we
986  * use formula #2 for pressure, not #3.
987  */
988 static void __devinit ads7846_setup_spi_msg(struct ads7846 *ts,
989                                 const struct ads7846_platform_data *pdata)
990 {
991         struct spi_message *m = &ts->msg[0];
992         struct spi_transfer *x = ts->xfer;
993         struct ads7846_packet *packet = ts->packet;
994         int vref = pdata->keep_vref_on;
995
996         if (ts->model == 7873) {
997                 /*
998                  * The AD7873 is almost identical to the ADS7846
999                  * keep VREF off during differential/ratiometric
1000                  * conversion modes.
1001                  */
1002                 ts->model = 7846;
1003                 vref = 0;
1004         }
1005
1006         ts->msg_count = 1;
1007         spi_message_init(m);
1008         m->context = ts;
1009
1010         if (ts->model == 7845) {
1011                 packet->read_y_cmd[0] = READ_Y(vref);
1012                 packet->read_y_cmd[1] = 0;
1013                 packet->read_y_cmd[2] = 0;
1014                 x->tx_buf = &packet->read_y_cmd[0];
1015                 x->rx_buf = &packet->tc.y_buf[0];
1016                 x->len = 3;
1017                 spi_message_add_tail(x, m);
1018         } else {
1019                 /* y- still on; turn on only y+ (and ADC) */
1020                 packet->read_y = READ_Y(vref);
1021                 x->tx_buf = &packet->read_y;
1022                 x->len = 1;
1023                 spi_message_add_tail(x, m);
1024
1025                 x++;
1026                 x->rx_buf = &packet->tc.y;
1027                 x->len = 2;
1028                 spi_message_add_tail(x, m);
1029         }
1030
1031         /*
1032          * The first sample after switching drivers can be low quality;
1033          * optionally discard it, using a second one after the signals
1034          * have had enough time to stabilize.
1035          */
1036         if (pdata->settle_delay_usecs) {
1037                 x->delay_usecs = pdata->settle_delay_usecs;
1038
1039                 x++;
1040                 x->tx_buf = &packet->read_y;
1041                 x->len = 1;
1042                 spi_message_add_tail(x, m);
1043
1044                 x++;
1045                 x->rx_buf = &packet->tc.y;
1046                 x->len = 2;
1047                 spi_message_add_tail(x, m);
1048         }
1049
1050         ts->msg_count++;
1051         m++;
1052         spi_message_init(m);
1053         m->context = ts;
1054
1055         if (ts->model == 7845) {
1056                 x++;
1057                 packet->read_x_cmd[0] = READ_X(vref);
1058                 packet->read_x_cmd[1] = 0;
1059                 packet->read_x_cmd[2] = 0;
1060                 x->tx_buf = &packet->read_x_cmd[0];
1061                 x->rx_buf = &packet->tc.x_buf[0];
1062                 x->len = 3;
1063                 spi_message_add_tail(x, m);
1064         } else {
1065                 /* turn y- off, x+ on, then leave in lowpower */
1066                 x++;
1067                 packet->read_x = READ_X(vref);
1068                 x->tx_buf = &packet->read_x;
1069                 x->len = 1;
1070                 spi_message_add_tail(x, m);
1071
1072                 x++;
1073                 x->rx_buf = &packet->tc.x;
1074                 x->len = 2;
1075                 spi_message_add_tail(x, m);
1076         }
1077
1078         /* ... maybe discard first sample ... */
1079         if (pdata->settle_delay_usecs) {
1080                 x->delay_usecs = pdata->settle_delay_usecs;
1081
1082                 x++;
1083                 x->tx_buf = &packet->read_x;
1084                 x->len = 1;
1085                 spi_message_add_tail(x, m);
1086
1087                 x++;
1088                 x->rx_buf = &packet->tc.x;
1089                 x->len = 2;
1090                 spi_message_add_tail(x, m);
1091         }
1092
1093         /* turn y+ off, x- on; we'll use formula #2 */
1094         if (ts->model == 7846) {
1095                 ts->msg_count++;
1096                 m++;
1097                 spi_message_init(m);
1098                 m->context = ts;
1099
1100                 x++;
1101                 packet->read_z1 = READ_Z1(vref);
1102                 x->tx_buf = &packet->read_z1;
1103                 x->len = 1;
1104                 spi_message_add_tail(x, m);
1105
1106                 x++;
1107                 x->rx_buf = &packet->tc.z1;
1108                 x->len = 2;
1109                 spi_message_add_tail(x, m);
1110
1111                 /* ... maybe discard first sample ... */
1112                 if (pdata->settle_delay_usecs) {
1113                         x->delay_usecs = pdata->settle_delay_usecs;
1114
1115                         x++;
1116                         x->tx_buf = &packet->read_z1;
1117                         x->len = 1;
1118                         spi_message_add_tail(x, m);
1119
1120                         x++;
1121                         x->rx_buf = &packet->tc.z1;
1122                         x->len = 2;
1123                         spi_message_add_tail(x, m);
1124                 }
1125
1126                 ts->msg_count++;
1127                 m++;
1128                 spi_message_init(m);
1129                 m->context = ts;
1130
1131                 x++;
1132                 packet->read_z2 = READ_Z2(vref);
1133                 x->tx_buf = &packet->read_z2;
1134                 x->len = 1;
1135                 spi_message_add_tail(x, m);
1136
1137                 x++;
1138                 x->rx_buf = &packet->tc.z2;
1139                 x->len = 2;
1140                 spi_message_add_tail(x, m);
1141
1142                 /* ... maybe discard first sample ... */
1143                 if (pdata->settle_delay_usecs) {
1144                         x->delay_usecs = pdata->settle_delay_usecs;
1145
1146                         x++;
1147                         x->tx_buf = &packet->read_z2;
1148                         x->len = 1;
1149                         spi_message_add_tail(x, m);
1150
1151                         x++;
1152                         x->rx_buf = &packet->tc.z2;
1153                         x->len = 2;
1154                         spi_message_add_tail(x, m);
1155                 }
1156         }
1157
1158         /* power down */
1159         ts->msg_count++;
1160         m++;
1161         spi_message_init(m);
1162         m->context = ts;
1163
1164         if (ts->model == 7845) {
1165                 x++;
1166                 packet->pwrdown_cmd[0] = PWRDOWN;
1167                 packet->pwrdown_cmd[1] = 0;
1168                 packet->pwrdown_cmd[2] = 0;
1169                 x->tx_buf = &packet->pwrdown_cmd[0];
1170                 x->len = 3;
1171         } else {
1172                 x++;
1173                 packet->pwrdown = PWRDOWN;
1174                 x->tx_buf = &packet->pwrdown;
1175                 x->len = 1;
1176                 spi_message_add_tail(x, m);
1177
1178                 x++;
1179                 x->rx_buf = &packet->dummy;
1180                 x->len = 2;
1181         }
1182
1183         CS_CHANGE(*x);
1184         spi_message_add_tail(x, m);
1185 }
1186
1187 static int __devinit ads7846_probe(struct spi_device *spi)
1188 {
1189         struct ads7846 *ts;
1190         struct ads7846_packet *packet;
1191         struct input_dev *input_dev;
1192         struct ads7846_platform_data *pdata = spi->dev.platform_data;
1193         unsigned long irq_flags;
1194         int err;
1195
1196         if (!spi->irq) {
1197                 dev_dbg(&spi->dev, "no IRQ?\n");
1198                 return -ENODEV;
1199         }
1200
1201         if (!pdata) {
1202                 dev_dbg(&spi->dev, "no platform data?\n");
1203                 return -ENODEV;
1204         }
1205
1206         /* don't exceed max specified sample rate */
1207         if (spi->max_speed_hz > (125000 * SAMPLE_BITS)) {
1208                 dev_dbg(&spi->dev, "f(sample) %d KHz?\n",
1209                                 (spi->max_speed_hz/SAMPLE_BITS)/1000);
1210                 return -EINVAL;
1211         }
1212
1213         /* We'd set TX word size 8 bits and RX word size to 13 bits ... except
1214          * that even if the hardware can do that, the SPI controller driver
1215          * may not.  So we stick to very-portable 8 bit words, both RX and TX.
1216          */
1217         spi->bits_per_word = 8;
1218         spi->mode = SPI_MODE_0;
1219         err = spi_setup(spi);
1220         if (err < 0)
1221                 return err;
1222
1223         ts = kzalloc(sizeof(struct ads7846), GFP_KERNEL);
1224         packet = kzalloc(sizeof(struct ads7846_packet), GFP_KERNEL);
1225         input_dev = input_allocate_device();
1226         if (!ts || !packet || !input_dev) {
1227                 err = -ENOMEM;
1228                 goto err_free_mem;
1229         }
1230
1231         dev_set_drvdata(&spi->dev, ts);
1232
1233         ts->packet = packet;
1234         ts->spi = spi;
1235         ts->input = input_dev;
1236         ts->vref_mv = pdata->vref_mv;
1237         ts->swap_xy = pdata->swap_xy;
1238
1239         mutex_init(&ts->lock);
1240         init_waitqueue_head(&ts->wait);
1241
1242         ts->model = pdata->model ? : 7846;
1243         ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
1244         ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
1245         ts->pressure_max = pdata->pressure_max ? : ~0;
1246
1247         if (pdata->filter != NULL) {
1248                 if (pdata->filter_init != NULL) {
1249                         err = pdata->filter_init(pdata, &ts->filter_data);
1250                         if (err < 0)
1251                                 goto err_free_mem;
1252                 }
1253                 ts->filter = pdata->filter;
1254                 ts->filter_cleanup = pdata->filter_cleanup;
1255         } else if (pdata->debounce_max) {
1256                 ts->debounce_max = pdata->debounce_max;
1257                 if (ts->debounce_max < 2)
1258                         ts->debounce_max = 2;
1259                 ts->debounce_tol = pdata->debounce_tol;
1260                 ts->debounce_rep = pdata->debounce_rep;
1261                 ts->filter = ads7846_debounce_filter;
1262                 ts->filter_data = ts;
1263         } else {
1264                 ts->filter = ads7846_no_filter;
1265         }
1266
1267         err = ads7846_setup_pendown(spi, ts);
1268         if (err)
1269                 goto err_cleanup_filter;
1270
1271         if (pdata->penirq_recheck_delay_usecs)
1272                 ts->penirq_recheck_delay_usecs =
1273                                 pdata->penirq_recheck_delay_usecs;
1274
1275         ts->wait_for_sync = pdata->wait_for_sync ? : null_wait_for_sync;
1276
1277         snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev));
1278         snprintf(ts->name, sizeof(ts->name), "ADS%d Touchscreen", ts->model);
1279
1280         input_dev->name = ts->name;
1281         input_dev->phys = ts->phys;
1282         input_dev->dev.parent = &spi->dev;
1283
1284         input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
1285         input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
1286         input_set_abs_params(input_dev, ABS_X,
1287                         pdata->x_min ? : 0,
1288                         pdata->x_max ? : MAX_12BIT,
1289                         0, 0);
1290         input_set_abs_params(input_dev, ABS_Y,
1291                         pdata->y_min ? : 0,
1292                         pdata->y_max ? : MAX_12BIT,
1293                         0, 0);
1294         input_set_abs_params(input_dev, ABS_PRESSURE,
1295                         pdata->pressure_min, pdata->pressure_max, 0, 0);
1296
1297         ads7846_setup_spi_msg(ts, pdata);
1298
1299         ts->reg = regulator_get(&spi->dev, "vcc");
1300         if (IS_ERR(ts->reg)) {
1301                 err = PTR_ERR(ts->reg);
1302                 dev_err(&spi->dev, "unable to get regulator: %d\n", err);
1303                 goto err_free_gpio;
1304         }
1305
1306         err = regulator_enable(ts->reg);
1307         if (err) {
1308                 dev_err(&spi->dev, "unable to enable regulator: %d\n", err);
1309                 goto err_put_regulator;
1310         }
1311
1312         irq_flags = pdata->irq_flags ? : IRQF_TRIGGER_FALLING;
1313         irq_flags |= IRQF_ONESHOT;
1314
1315         err = request_threaded_irq(spi->irq, ads7846_hard_irq, ads7846_irq,
1316                                    irq_flags, spi->dev.driver->name, ts);
1317         if (err && !pdata->irq_flags) {
1318                 dev_info(&spi->dev,
1319                         "trying pin change workaround on irq %d\n", spi->irq);
1320                 irq_flags |= IRQF_TRIGGER_RISING;
1321                 err = request_threaded_irq(spi->irq,
1322                                   ads7846_hard_irq, ads7846_irq,
1323                                   irq_flags, spi->dev.driver->name, ts);
1324         }
1325
1326         if (err) {
1327                 dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq);
1328                 goto err_disable_regulator;
1329         }
1330
1331         err = ads784x_hwmon_register(spi, ts);
1332         if (err)
1333                 goto err_free_irq;
1334
1335         dev_info(&spi->dev, "touchscreen, irq %d\n", spi->irq);
1336
1337         /*
1338          * Take a first sample, leaving nPENIRQ active and vREF off; avoid
1339          * the touchscreen, in case it's not connected.
1340          */
1341         if (ts->model == 7845)
1342                 ads7845_read12_ser(&spi->dev, PWRDOWN);
1343         else
1344                 (void) ads7846_read12_ser(&spi->dev,
1345                                 READ_12BIT_SER(vaux) | ADS_PD10_ALL_ON);
1346
1347         err = sysfs_create_group(&spi->dev.kobj, &ads784x_attr_group);
1348         if (err)
1349                 goto err_remove_hwmon;
1350
1351         err = input_register_device(input_dev);
1352         if (err)
1353                 goto err_remove_attr_group;
1354
1355         device_init_wakeup(&spi->dev, pdata->wakeup);
1356
1357         return 0;
1358
1359  err_remove_attr_group:
1360         sysfs_remove_group(&spi->dev.kobj, &ads784x_attr_group);
1361  err_remove_hwmon:
1362         ads784x_hwmon_unregister(spi, ts);
1363  err_free_irq:
1364         free_irq(spi->irq, ts);
1365  err_disable_regulator:
1366         regulator_disable(ts->reg);
1367  err_put_regulator:
1368         regulator_put(ts->reg);
1369  err_free_gpio:
1370         if (!ts->get_pendown_state)
1371                 gpio_free(ts->gpio_pendown);
1372  err_cleanup_filter:
1373         if (ts->filter_cleanup)
1374                 ts->filter_cleanup(ts->filter_data);
1375  err_free_mem:
1376         input_free_device(input_dev);
1377         kfree(packet);
1378         kfree(ts);
1379         return err;
1380 }
1381
1382 static int __devexit ads7846_remove(struct spi_device *spi)
1383 {
1384         struct ads7846 *ts = dev_get_drvdata(&spi->dev);
1385
1386         device_init_wakeup(&spi->dev, false);
1387
1388         sysfs_remove_group(&spi->dev.kobj, &ads784x_attr_group);
1389
1390         ads7846_disable(ts);
1391         free_irq(ts->spi->irq, ts);
1392
1393         input_unregister_device(ts->input);
1394
1395         ads784x_hwmon_unregister(spi, ts);
1396
1397         regulator_disable(ts->reg);
1398         regulator_put(ts->reg);
1399
1400         if (!ts->get_pendown_state) {
1401                 /*
1402                  * If we are not using specialized pendown method we must
1403                  * have been relying on gpio we set up ourselves.
1404                  */
1405                 gpio_free(ts->gpio_pendown);
1406         }
1407
1408         if (ts->filter_cleanup)
1409                 ts->filter_cleanup(ts->filter_data);
1410
1411         kfree(ts->packet);
1412         kfree(ts);
1413
1414         dev_dbg(&spi->dev, "unregistered touchscreen\n");
1415
1416         return 0;
1417 }
1418
1419 static struct spi_driver ads7846_driver = {
1420         .driver = {
1421                 .name   = "ads7846",
1422                 .bus    = &spi_bus_type,
1423                 .owner  = THIS_MODULE,
1424                 .pm     = &ads7846_pm,
1425         },
1426         .probe          = ads7846_probe,
1427         .remove         = __devexit_p(ads7846_remove),
1428 };
1429
1430 static int __init ads7846_init(void)
1431 {
1432         return spi_register_driver(&ads7846_driver);
1433 }
1434 module_init(ads7846_init);
1435
1436 static void __exit ads7846_exit(void)
1437 {
1438         spi_unregister_driver(&ads7846_driver);
1439 }
1440 module_exit(ads7846_exit);
1441
1442 MODULE_DESCRIPTION("ADS7846 TouchScreen Driver");
1443 MODULE_LICENSE("GPL");
1444 MODULE_ALIAS("spi:ads7846");