aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-16 14:52:08 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-16 14:52:08 -0400
commit36ac1d2f323f8bf8bc10c25b88f617657720e241 (patch)
treed51f87bdf16eaa19ce0c5a682c10dccfaef4b48d /drivers/input/touchscreen
parentd7a6119f457f48a94985fdbdc400cbb03e136a76 (diff)
parent4c0e799a9a6dc64426ddb6c03aea1a154357658f (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (32 commits) Input: wm97xx - update email address for Liam Girdwood Input: i8042 - add Thinkpad R31 to nomux list Input: move map_to_7segment.h to include/linux Input: ads7846 - fix cache line sharing issue Input: cm109 - add missing newlines to messages Input: document i8042.debug in kernel-parameters.txt Input: keyboard - fix potential out of bound access to key_map Input: psmouse - add OLPC touchpad driver Input: psmouse - tweak PSMOUSE_DEFINE_ATTR to support raw set callbacks Input: psmouse - add psmouse_queue_work() for ps/2 extension to make use of Input: psmouse - export psmouse_set_state for ps/2 extensions to use Input: ads7846 - introduce .gpio_pendown to get pendown state Input: ALPS - add signature for DualPoint found in Dell Latitude E6500 Input: serio_raw - allow attaching to translated (SERIO_I8042XL) ports Input: cm109 - don't use obsolete logging macros Input: atkbd - expand Latitude's force release quirk to other Dells Input: bf54x-keys - add power management support Input: atmel_tsadcc - improve accuracy Input: convert drivers to use strict_strtoul() Input: appletouch - handle geyser 3/4 status bits ...
Diffstat (limited to 'drivers/input/touchscreen')
-rw-r--r--drivers/input/touchscreen/ads7846.c94
-rw-r--r--drivers/input/touchscreen/atmel_tsadcc.c37
-rw-r--r--drivers/input/touchscreen/mainstone-wm97xx.c5
-rw-r--r--drivers/input/touchscreen/wm9705.c5
-rw-r--r--drivers/input/touchscreen/wm9712.c5
-rw-r--r--drivers/input/touchscreen/wm9713.c5
-rw-r--r--drivers/input/touchscreen/wm97xx-core.c5
7 files changed, 89 insertions, 67 deletions
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 8583c766d565..b9b7fc6ff1eb 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -69,6 +69,17 @@ struct ts_event {
69 int ignore; 69 int ignore;
70}; 70};
71 71
72/*
73 * We allocate this separately to avoid cache line sharing issues when
74 * driver is used with DMA-based SPI controllers (like atmel_spi) on
75 * systems where main memory is not DMA-coherent (most non-x86 boards).
76 */
77struct ads7846_packet {
78 u8 read_x, read_y, read_z1, read_z2, pwrdown;
79 u16 dummy; /* for the pwrdown read */
80 struct ts_event tc;
81};
82
72struct ads7846 { 83struct ads7846 {
73 struct input_dev *input; 84 struct input_dev *input;
74 char phys[32]; 85 char phys[32];
@@ -86,9 +97,7 @@ struct ads7846 {
86 u16 x_plate_ohms; 97 u16 x_plate_ohms;
87 u16 pressure_max; 98 u16 pressure_max;
88 99
89 u8 read_x, read_y, read_z1, read_z2, pwrdown; 100 struct ads7846_packet *packet;
90 u16 dummy; /* for the pwrdown read */
91 struct ts_event tc;
92 101
93 struct spi_transfer xfer[18]; 102 struct spi_transfer xfer[18];
94 struct spi_message msg[5]; 103 struct spi_message msg[5];
@@ -463,10 +472,11 @@ static ssize_t ads7846_disable_store(struct device *dev,
463 const char *buf, size_t count) 472 const char *buf, size_t count)
464{ 473{
465 struct ads7846 *ts = dev_get_drvdata(dev); 474 struct ads7846 *ts = dev_get_drvdata(dev);
466 char *endp; 475 long i;
467 int i; 476
477 if (strict_strtoul(buf, 10, &i))
478 return -EINVAL;
468 479
469 i = simple_strtoul(buf, &endp, 10);
470 spin_lock_irq(&ts->lock); 480 spin_lock_irq(&ts->lock);
471 481
472 if (i) 482 if (i)
@@ -512,16 +522,17 @@ static int get_pendown_state(struct ads7846 *ts)
512static void ads7846_rx(void *ads) 522static void ads7846_rx(void *ads)
513{ 523{
514 struct ads7846 *ts = ads; 524 struct ads7846 *ts = ads;
525 struct ads7846_packet *packet = ts->packet;
515 unsigned Rt; 526 unsigned Rt;
516 u16 x, y, z1, z2; 527 u16 x, y, z1, z2;
517 528
518 /* ads7846_rx_val() did in-place conversion (including byteswap) from 529 /* ads7846_rx_val() did in-place conversion (including byteswap) from
519 * on-the-wire format as part of debouncing to get stable readings. 530 * on-the-wire format as part of debouncing to get stable readings.
520 */ 531 */
521 x = ts->tc.x; 532 x = packet->tc.x;
522 y = ts->tc.y; 533 y = packet->tc.y;
523 z1 = ts->tc.z1; 534 z1 = packet->tc.z1;
524 z2 = ts->tc.z2; 535 z2 = packet->tc.z2;
525 536
526 /* range filtering */ 537 /* range filtering */
527 if (x == MAX_12BIT) 538 if (x == MAX_12BIT)
@@ -545,10 +556,10 @@ static void ads7846_rx(void *ads)
545 * the maximum. Don't report it to user space, repeat at least 556 * the maximum. Don't report it to user space, repeat at least
546 * once more the measurement 557 * once more the measurement
547 */ 558 */
548 if (ts->tc.ignore || Rt > ts->pressure_max) { 559 if (packet->tc.ignore || Rt > ts->pressure_max) {
549#ifdef VERBOSE 560#ifdef VERBOSE
550 pr_debug("%s: ignored %d pressure %d\n", 561 pr_debug("%s: ignored %d pressure %d\n",
551 ts->spi->dev.bus_id, ts->tc.ignore, Rt); 562 ts->spi->dev.bus_id, packet->tc.ignore, Rt);
552#endif 563#endif
553 hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_PERIOD), 564 hrtimer_start(&ts->timer, ktime_set(0, TS_POLL_PERIOD),
554 HRTIMER_MODE_REL); 565 HRTIMER_MODE_REL);
@@ -641,6 +652,7 @@ static int ads7846_no_filter(void *ads, int data_idx, int *val)
641static void ads7846_rx_val(void *ads) 652static void ads7846_rx_val(void *ads)
642{ 653{
643 struct ads7846 *ts = ads; 654 struct ads7846 *ts = ads;
655 struct ads7846_packet *packet = ts->packet;
644 struct spi_message *m; 656 struct spi_message *m;
645 struct spi_transfer *t; 657 struct spi_transfer *t;
646 int val; 658 int val;
@@ -660,7 +672,7 @@ static void ads7846_rx_val(void *ads)
660 case ADS7846_FILTER_REPEAT: 672 case ADS7846_FILTER_REPEAT:
661 break; 673 break;
662 case ADS7846_FILTER_IGNORE: 674 case ADS7846_FILTER_IGNORE:
663 ts->tc.ignore = 1; 675 packet->tc.ignore = 1;
664 /* Last message will contain ads7846_rx() as the 676 /* Last message will contain ads7846_rx() as the
665 * completion function. 677 * completion function.
666 */ 678 */
@@ -668,7 +680,7 @@ static void ads7846_rx_val(void *ads)
668 break; 680 break;
669 case ADS7846_FILTER_OK: 681 case ADS7846_FILTER_OK:
670 *(u16 *)t->rx_buf = val; 682 *(u16 *)t->rx_buf = val;
671 ts->tc.ignore = 0; 683 packet->tc.ignore = 0;
672 m = &ts->msg[++ts->msg_idx]; 684 m = &ts->msg[++ts->msg_idx];
673 break; 685 break;
674 default: 686 default:
@@ -773,7 +785,6 @@ static void ads7846_disable(struct ads7846 *ts)
773 /* we know the chip's in lowpower mode since we always 785 /* we know the chip's in lowpower mode since we always
774 * leave it that way after every request 786 * leave it that way after every request
775 */ 787 */
776
777} 788}
778 789
779/* Must be called with ts->lock held */ 790/* Must be called with ts->lock held */
@@ -849,6 +860,7 @@ static int __devinit setup_pendown(struct spi_device *spi, struct ads7846 *ts)
849static int __devinit ads7846_probe(struct spi_device *spi) 860static int __devinit ads7846_probe(struct spi_device *spi)
850{ 861{
851 struct ads7846 *ts; 862 struct ads7846 *ts;
863 struct ads7846_packet *packet;
852 struct input_dev *input_dev; 864 struct input_dev *input_dev;
853 struct ads7846_platform_data *pdata = spi->dev.platform_data; 865 struct ads7846_platform_data *pdata = spi->dev.platform_data;
854 struct spi_message *m; 866 struct spi_message *m;
@@ -884,14 +896,16 @@ static int __devinit ads7846_probe(struct spi_device *spi)
884 return err; 896 return err;
885 897
886 ts = kzalloc(sizeof(struct ads7846), GFP_KERNEL); 898 ts = kzalloc(sizeof(struct ads7846), GFP_KERNEL);
899 packet = kzalloc(sizeof(struct ads7846_packet), GFP_KERNEL);
887 input_dev = input_allocate_device(); 900 input_dev = input_allocate_device();
888 if (!ts || !input_dev) { 901 if (!ts || !packet || !input_dev) {
889 err = -ENOMEM; 902 err = -ENOMEM;
890 goto err_free_mem; 903 goto err_free_mem;
891 } 904 }
892 905
893 dev_set_drvdata(&spi->dev, ts); 906 dev_set_drvdata(&spi->dev, ts);
894 907
908 ts->packet = packet;
895 ts->spi = spi; 909 ts->spi = spi;
896 ts->input = input_dev; 910 ts->input = input_dev;
897 ts->vref_mv = pdata->vref_mv; 911 ts->vref_mv = pdata->vref_mv;
@@ -963,13 +977,13 @@ static int __devinit ads7846_probe(struct spi_device *spi)
963 spi_message_init(m); 977 spi_message_init(m);
964 978
965 /* y- still on; turn on only y+ (and ADC) */ 979 /* y- still on; turn on only y+ (and ADC) */
966 ts->read_y = READ_Y(vref); 980 packet->read_y = READ_Y(vref);
967 x->tx_buf = &ts->read_y; 981 x->tx_buf = &packet->read_y;
968 x->len = 1; 982 x->len = 1;
969 spi_message_add_tail(x, m); 983 spi_message_add_tail(x, m);
970 984
971 x++; 985 x++;
972 x->rx_buf = &ts->tc.y; 986 x->rx_buf = &packet->tc.y;
973 x->len = 2; 987 x->len = 2;
974 spi_message_add_tail(x, m); 988 spi_message_add_tail(x, m);
975 989
@@ -981,12 +995,12 @@ static int __devinit ads7846_probe(struct spi_device *spi)
981 x->delay_usecs = pdata->settle_delay_usecs; 995 x->delay_usecs = pdata->settle_delay_usecs;
982 996
983 x++; 997 x++;
984 x->tx_buf = &ts->read_y; 998 x->tx_buf = &packet->read_y;
985 x->len = 1; 999 x->len = 1;
986 spi_message_add_tail(x, m); 1000 spi_message_add_tail(x, m);
987 1001
988 x++; 1002 x++;
989 x->rx_buf = &ts->tc.y; 1003 x->rx_buf = &packet->tc.y;
990 x->len = 2; 1004 x->len = 2;
991 spi_message_add_tail(x, m); 1005 spi_message_add_tail(x, m);
992 } 1006 }
@@ -999,13 +1013,13 @@ static int __devinit ads7846_probe(struct spi_device *spi)
999 1013
1000 /* turn y- off, x+ on, then leave in lowpower */ 1014 /* turn y- off, x+ on, then leave in lowpower */
1001 x++; 1015 x++;
1002 ts->read_x = READ_X(vref); 1016 packet->read_x = READ_X(vref);
1003 x->tx_buf = &ts->read_x; 1017 x->tx_buf = &packet->read_x;
1004 x->len = 1; 1018 x->len = 1;
1005 spi_message_add_tail(x, m); 1019 spi_message_add_tail(x, m);
1006 1020
1007 x++; 1021 x++;
1008 x->rx_buf = &ts->tc.x; 1022 x->rx_buf = &packet->tc.x;
1009 x->len = 2; 1023 x->len = 2;
1010 spi_message_add_tail(x, m); 1024 spi_message_add_tail(x, m);
1011 1025
@@ -1014,12 +1028,12 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1014 x->delay_usecs = pdata->settle_delay_usecs; 1028 x->delay_usecs = pdata->settle_delay_usecs;
1015 1029
1016 x++; 1030 x++;
1017 x->tx_buf = &ts->read_x; 1031 x->tx_buf = &packet->read_x;
1018 x->len = 1; 1032 x->len = 1;
1019 spi_message_add_tail(x, m); 1033 spi_message_add_tail(x, m);
1020 1034
1021 x++; 1035 x++;
1022 x->rx_buf = &ts->tc.x; 1036 x->rx_buf = &packet->tc.x;
1023 x->len = 2; 1037 x->len = 2;
1024 spi_message_add_tail(x, m); 1038 spi_message_add_tail(x, m);
1025 } 1039 }
@@ -1033,13 +1047,13 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1033 spi_message_init(m); 1047 spi_message_init(m);
1034 1048
1035 x++; 1049 x++;
1036 ts->read_z1 = READ_Z1(vref); 1050 packet->read_z1 = READ_Z1(vref);
1037 x->tx_buf = &ts->read_z1; 1051 x->tx_buf = &packet->read_z1;
1038 x->len = 1; 1052 x->len = 1;
1039 spi_message_add_tail(x, m); 1053 spi_message_add_tail(x, m);
1040 1054
1041 x++; 1055 x++;
1042 x->rx_buf = &ts->tc.z1; 1056 x->rx_buf = &packet->tc.z1;
1043 x->len = 2; 1057 x->len = 2;
1044 spi_message_add_tail(x, m); 1058 spi_message_add_tail(x, m);
1045 1059
@@ -1048,12 +1062,12 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1048 x->delay_usecs = pdata->settle_delay_usecs; 1062 x->delay_usecs = pdata->settle_delay_usecs;
1049 1063
1050 x++; 1064 x++;
1051 x->tx_buf = &ts->read_z1; 1065 x->tx_buf = &packet->read_z1;
1052 x->len = 1; 1066 x->len = 1;
1053 spi_message_add_tail(x, m); 1067 spi_message_add_tail(x, m);
1054 1068
1055 x++; 1069 x++;
1056 x->rx_buf = &ts->tc.z1; 1070 x->rx_buf = &packet->tc.z1;
1057 x->len = 2; 1071 x->len = 2;
1058 spi_message_add_tail(x, m); 1072 spi_message_add_tail(x, m);
1059 } 1073 }
@@ -1065,13 +1079,13 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1065 spi_message_init(m); 1079 spi_message_init(m);
1066 1080
1067 x++; 1081 x++;
1068 ts->read_z2 = READ_Z2(vref); 1082 packet->read_z2 = READ_Z2(vref);
1069 x->tx_buf = &ts->read_z2; 1083 x->tx_buf = &packet->read_z2;
1070 x->len = 1; 1084 x->len = 1;
1071 spi_message_add_tail(x, m); 1085 spi_message_add_tail(x, m);
1072 1086
1073 x++; 1087 x++;
1074 x->rx_buf = &ts->tc.z2; 1088 x->rx_buf = &packet->tc.z2;
1075 x->len = 2; 1089 x->len = 2;
1076 spi_message_add_tail(x, m); 1090 spi_message_add_tail(x, m);
1077 1091
@@ -1080,12 +1094,12 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1080 x->delay_usecs = pdata->settle_delay_usecs; 1094 x->delay_usecs = pdata->settle_delay_usecs;
1081 1095
1082 x++; 1096 x++;
1083 x->tx_buf = &ts->read_z2; 1097 x->tx_buf = &packet->read_z2;
1084 x->len = 1; 1098 x->len = 1;
1085 spi_message_add_tail(x, m); 1099 spi_message_add_tail(x, m);
1086 1100
1087 x++; 1101 x++;
1088 x->rx_buf = &ts->tc.z2; 1102 x->rx_buf = &packet->tc.z2;
1089 x->len = 2; 1103 x->len = 2;
1090 spi_message_add_tail(x, m); 1104 spi_message_add_tail(x, m);
1091 } 1105 }
@@ -1099,13 +1113,13 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1099 spi_message_init(m); 1113 spi_message_init(m);
1100 1114
1101 x++; 1115 x++;
1102 ts->pwrdown = PWRDOWN; 1116 packet->pwrdown = PWRDOWN;
1103 x->tx_buf = &ts->pwrdown; 1117 x->tx_buf = &packet->pwrdown;
1104 x->len = 1; 1118 x->len = 1;
1105 spi_message_add_tail(x, m); 1119 spi_message_add_tail(x, m);
1106 1120
1107 x++; 1121 x++;
1108 x->rx_buf = &ts->dummy; 1122 x->rx_buf = &packet->dummy;
1109 x->len = 2; 1123 x->len = 2;
1110 CS_CHANGE(*x); 1124 CS_CHANGE(*x);
1111 spi_message_add_tail(x, m); 1125 spi_message_add_tail(x, m);
@@ -1158,6 +1172,7 @@ static int __devinit ads7846_probe(struct spi_device *spi)
1158 ts->filter_cleanup(ts->filter_data); 1172 ts->filter_cleanup(ts->filter_data);
1159 err_free_mem: 1173 err_free_mem:
1160 input_free_device(input_dev); 1174 input_free_device(input_dev);
1175 kfree(packet);
1161 kfree(ts); 1176 kfree(ts);
1162 return err; 1177 return err;
1163} 1178}
@@ -1183,6 +1198,7 @@ static int __devexit ads7846_remove(struct spi_device *spi)
1183 if (ts->filter_cleanup) 1198 if (ts->filter_cleanup)
1184 ts->filter_cleanup(ts->filter_data); 1199 ts->filter_cleanup(ts->filter_data);
1185 1200
1201 kfree(ts->packet);
1186 kfree(ts); 1202 kfree(ts);
1187 1203
1188 dev_dbg(&spi->dev, "unregistered touchscreen\n"); 1204 dev_dbg(&spi->dev, "unregistered touchscreen\n");
diff --git a/drivers/input/touchscreen/atmel_tsadcc.c b/drivers/input/touchscreen/atmel_tsadcc.c
index eee126b19e8b..a89a6a8f05e6 100644
--- a/drivers/input/touchscreen/atmel_tsadcc.c
+++ b/drivers/input/touchscreen/atmel_tsadcc.c
@@ -91,6 +91,9 @@ struct atmel_tsadcc {
91 char phys[32]; 91 char phys[32];
92 struct clk *clk; 92 struct clk *clk;
93 int irq; 93 int irq;
94 unsigned int prev_absx;
95 unsigned int prev_absy;
96 unsigned char bufferedmeasure;
94}; 97};
95 98
96static void __iomem *tsc_base; 99static void __iomem *tsc_base;
@@ -100,10 +103,9 @@ static void __iomem *tsc_base;
100 103
101static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev) 104static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
102{ 105{
103 struct input_dev *input_dev = ((struct atmel_tsadcc *)dev)->input; 106 struct atmel_tsadcc *ts_dev = (struct atmel_tsadcc *)dev;
107 struct input_dev *input_dev = ts_dev->input;
104 108
105 unsigned int absx;
106 unsigned int absy;
107 unsigned int status; 109 unsigned int status;
108 unsigned int reg; 110 unsigned int reg;
109 111
@@ -121,6 +123,7 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
121 atmel_tsadcc_write(ATMEL_TSADCC_IER, ATMEL_TSADCC_PENCNT); 123 atmel_tsadcc_write(ATMEL_TSADCC_IER, ATMEL_TSADCC_PENCNT);
122 124
123 input_report_key(input_dev, BTN_TOUCH, 0); 125 input_report_key(input_dev, BTN_TOUCH, 0);
126 ts_dev->bufferedmeasure = 0;
124 input_sync(input_dev); 127 input_sync(input_dev);
125 128
126 } else if (status & ATMEL_TSADCC_PENCNT) { 129 } else if (status & ATMEL_TSADCC_PENCNT) {
@@ -138,16 +141,23 @@ static irqreturn_t atmel_tsadcc_interrupt(int irq, void *dev)
138 } else if (status & ATMEL_TSADCC_EOC(3)) { 141 } else if (status & ATMEL_TSADCC_EOC(3)) {
139 /* Conversion finished */ 142 /* Conversion finished */
140 143
141 absx = atmel_tsadcc_read(ATMEL_TSADCC_CDR3) << 10; 144 if (ts_dev->bufferedmeasure) {
142 absx /= atmel_tsadcc_read(ATMEL_TSADCC_CDR2); 145 /* Last measurement is always discarded, since it can
143 146 * be erroneous.
144 absy = atmel_tsadcc_read(ATMEL_TSADCC_CDR1) << 10; 147 * Always report previous measurement */
145 absy /= atmel_tsadcc_read(ATMEL_TSADCC_CDR0); 148 input_report_abs(input_dev, ABS_X, ts_dev->prev_absx);
146 149 input_report_abs(input_dev, ABS_Y, ts_dev->prev_absy);
147 input_report_abs(input_dev, ABS_X, absx); 150 input_report_key(input_dev, BTN_TOUCH, 1);
148 input_report_abs(input_dev, ABS_Y, absy); 151 input_sync(input_dev);
149 input_report_key(input_dev, BTN_TOUCH, 1); 152 } else
150 input_sync(input_dev); 153 ts_dev->bufferedmeasure = 1;
154
155 /* Now make new measurement */
156 ts_dev->prev_absx = atmel_tsadcc_read(ATMEL_TSADCC_CDR3) << 10;
157 ts_dev->prev_absx /= atmel_tsadcc_read(ATMEL_TSADCC_CDR2);
158
159 ts_dev->prev_absy = atmel_tsadcc_read(ATMEL_TSADCC_CDR1) << 10;
160 ts_dev->prev_absy /= atmel_tsadcc_read(ATMEL_TSADCC_CDR0);
151 } 161 }
152 162
153 return IRQ_HANDLED; 163 return IRQ_HANDLED;
@@ -223,6 +233,7 @@ static int __devinit atmel_tsadcc_probe(struct platform_device *pdev)
223 } 233 }
224 234
225 ts_dev->input = input_dev; 235 ts_dev->input = input_dev;
236 ts_dev->bufferedmeasure = 0;
226 237
227 snprintf(ts_dev->phys, sizeof(ts_dev->phys), 238 snprintf(ts_dev->phys, sizeof(ts_dev->phys),
228 "%s/input0", pdev->dev.bus_id); 239 "%s/input0", pdev->dev.bus_id);
diff --git a/drivers/input/touchscreen/mainstone-wm97xx.c b/drivers/input/touchscreen/mainstone-wm97xx.c
index 37a555f37306..ba648750a8d9 100644
--- a/drivers/input/touchscreen/mainstone-wm97xx.c
+++ b/drivers/input/touchscreen/mainstone-wm97xx.c
@@ -3,8 +3,7 @@
3 * Wolfson WM97xx AC97 Codecs. 3 * Wolfson WM97xx AC97 Codecs.
4 * 4 *
5 * Copyright 2004, 2007 Wolfson Microelectronics PLC. 5 * Copyright 2004, 2007 Wolfson Microelectronics PLC.
6 * Author: Liam Girdwood 6 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
7 * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
8 * Parts Copyright : Ian Molton <spyro@f2s.com> 7 * Parts Copyright : Ian Molton <spyro@f2s.com>
9 * Andrew Zabolotny <zap@homelink.ru> 8 * Andrew Zabolotny <zap@homelink.ru>
10 * 9 *
@@ -296,6 +295,6 @@ module_init(mainstone_wm97xx_init);
296module_exit(mainstone_wm97xx_exit); 295module_exit(mainstone_wm97xx_exit);
297 296
298/* Module information */ 297/* Module information */
299MODULE_AUTHOR("Liam Girdwood <liam.girdwood@wolfsonmicro.com>"); 298MODULE_AUTHOR("Liam Girdwood <lrg@slimlogic.co.uk>");
300MODULE_DESCRIPTION("wm97xx continuous touch driver for mainstone"); 299MODULE_DESCRIPTION("wm97xx continuous touch driver for mainstone");
301MODULE_LICENSE("GPL"); 300MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/wm9705.c b/drivers/input/touchscreen/wm9705.c
index 372efbc694ff..6b5be742c27d 100644
--- a/drivers/input/touchscreen/wm9705.c
+++ b/drivers/input/touchscreen/wm9705.c
@@ -2,8 +2,7 @@
2 * wm9705.c -- Codec driver for Wolfson WM9705 AC97 Codec. 2 * wm9705.c -- Codec driver for Wolfson WM9705 AC97 Codec.
3 * 3 *
4 * Copyright 2003, 2004, 2005, 2006, 2007 Wolfson Microelectronics PLC. 4 * Copyright 2003, 2004, 2005, 2006, 2007 Wolfson Microelectronics PLC.
5 * Author: Liam Girdwood 5 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
6 * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
7 * Parts Copyright : Ian Molton <spyro@f2s.com> 6 * Parts Copyright : Ian Molton <spyro@f2s.com>
8 * Andrew Zabolotny <zap@homelink.ru> 7 * Andrew Zabolotny <zap@homelink.ru>
9 * Russell King <rmk@arm.linux.org.uk> 8 * Russell King <rmk@arm.linux.org.uk>
@@ -347,6 +346,6 @@ struct wm97xx_codec_drv wm9705_codec = {
347EXPORT_SYMBOL_GPL(wm9705_codec); 346EXPORT_SYMBOL_GPL(wm9705_codec);
348 347
349/* Module information */ 348/* Module information */
350MODULE_AUTHOR("Liam Girdwood <liam.girdwood@wolfsonmicro.com>"); 349MODULE_AUTHOR("Liam Girdwood <lrg@slimlogic.co.uk>");
351MODULE_DESCRIPTION("WM9705 Touch Screen Driver"); 350MODULE_DESCRIPTION("WM9705 Touch Screen Driver");
352MODULE_LICENSE("GPL"); 351MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/wm9712.c b/drivers/input/touchscreen/wm9712.c
index c8bb1e7335fc..7490b05c3566 100644
--- a/drivers/input/touchscreen/wm9712.c
+++ b/drivers/input/touchscreen/wm9712.c
@@ -2,8 +2,7 @@
2 * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs. 2 * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs.
3 * 3 *
4 * Copyright 2003, 2004, 2005, 2006, 2007 Wolfson Microelectronics PLC. 4 * Copyright 2003, 2004, 2005, 2006, 2007 Wolfson Microelectronics PLC.
5 * Author: Liam Girdwood 5 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
6 * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
7 * Parts Copyright : Ian Molton <spyro@f2s.com> 6 * Parts Copyright : Ian Molton <spyro@f2s.com>
8 * Andrew Zabolotny <zap@homelink.ru> 7 * Andrew Zabolotny <zap@homelink.ru>
9 * Russell King <rmk@arm.linux.org.uk> 8 * Russell King <rmk@arm.linux.org.uk>
@@ -462,6 +461,6 @@ struct wm97xx_codec_drv wm9712_codec = {
462EXPORT_SYMBOL_GPL(wm9712_codec); 461EXPORT_SYMBOL_GPL(wm9712_codec);
463 462
464/* Module information */ 463/* Module information */
465MODULE_AUTHOR("Liam Girdwood <liam.girdwood@wolfsonmicro.com>"); 464MODULE_AUTHOR("Liam Girdwood <lrg@slimlogic.co.uk>");
466MODULE_DESCRIPTION("WM9712 Touch Screen Driver"); 465MODULE_DESCRIPTION("WM9712 Touch Screen Driver");
467MODULE_LICENSE("GPL"); 466MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/wm9713.c b/drivers/input/touchscreen/wm9713.c
index 781ee83547e6..238b5132712e 100644
--- a/drivers/input/touchscreen/wm9713.c
+++ b/drivers/input/touchscreen/wm9713.c
@@ -2,8 +2,7 @@
2 * wm9713.c -- Codec touch driver for Wolfson WM9713 AC97 Codec. 2 * wm9713.c -- Codec touch driver for Wolfson WM9713 AC97 Codec.
3 * 3 *
4 * Copyright 2003, 2004, 2005, 2006, 2007, 2008 Wolfson Microelectronics PLC. 4 * Copyright 2003, 2004, 2005, 2006, 2007, 2008 Wolfson Microelectronics PLC.
5 * Author: Liam Girdwood 5 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
6 * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
7 * Parts Copyright : Ian Molton <spyro@f2s.com> 6 * Parts Copyright : Ian Molton <spyro@f2s.com>
8 * Andrew Zabolotny <zap@homelink.ru> 7 * Andrew Zabolotny <zap@homelink.ru>
9 * Russell King <rmk@arm.linux.org.uk> 8 * Russell King <rmk@arm.linux.org.uk>
@@ -476,6 +475,6 @@ struct wm97xx_codec_drv wm9713_codec = {
476EXPORT_SYMBOL_GPL(wm9713_codec); 475EXPORT_SYMBOL_GPL(wm9713_codec);
477 476
478/* Module information */ 477/* Module information */
479MODULE_AUTHOR("Liam Girdwood <liam.girdwood@wolfsonmicro.com>"); 478MODULE_AUTHOR("Liam Girdwood <lrg@slimlogic.co.uk>");
480MODULE_DESCRIPTION("WM9713 Touch Screen Driver"); 479MODULE_DESCRIPTION("WM9713 Touch Screen Driver");
481MODULE_LICENSE("GPL"); 480MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c
index d589ab0e3adc..d15aa11d7056 100644
--- a/drivers/input/touchscreen/wm97xx-core.c
+++ b/drivers/input/touchscreen/wm97xx-core.c
@@ -3,8 +3,7 @@
3 * and WM9713 AC97 Codecs. 3 * and WM9713 AC97 Codecs.
4 * 4 *
5 * Copyright 2003, 2004, 2005, 2006, 2007, 2008 Wolfson Microelectronics PLC. 5 * Copyright 2003, 2004, 2005, 2006, 2007, 2008 Wolfson Microelectronics PLC.
6 * Author: Liam Girdwood 6 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
7 * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
8 * Parts Copyright : Ian Molton <spyro@f2s.com> 7 * Parts Copyright : Ian Molton <spyro@f2s.com>
9 * Andrew Zabolotny <zap@homelink.ru> 8 * Andrew Zabolotny <zap@homelink.ru>
10 * Russell King <rmk@arm.linux.org.uk> 9 * Russell King <rmk@arm.linux.org.uk>
@@ -824,6 +823,6 @@ module_init(wm97xx_init);
824module_exit(wm97xx_exit); 823module_exit(wm97xx_exit);
825 824
826/* Module information */ 825/* Module information */
827MODULE_AUTHOR("Liam Girdwood <liam.girdwood@wolfsonmicro.com>"); 826MODULE_AUTHOR("Liam Girdwood <lrg@slimlogic.co.uk>");
828MODULE_DESCRIPTION("WM97xx Core - Touch Screen / AUX ADC / GPIO Driver"); 827MODULE_DESCRIPTION("WM97xx Core - Touch Screen / AUX ADC / GPIO Driver");
829MODULE_LICENSE("GPL"); 828MODULE_LICENSE("GPL");