aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/input/touchscreen/ads7846.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 7f384a694d80..54d433477860 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -72,10 +72,11 @@ struct ads7846 {
72 u16 vref_delay_usecs; 72 u16 vref_delay_usecs;
73 u16 x_plate_ohms; 73 u16 x_plate_ohms;
74 74
75 u8 read_x, read_y, read_z1, read_z2; 75 u8 read_x, read_y, read_z1, read_z2, pwrdown;
76 u16 dummy; /* for the pwrdown read */
76 struct ts_event tc; 77 struct ts_event tc;
77 78
78 struct spi_transfer xfer[8]; 79 struct spi_transfer xfer[10];
79 struct spi_message msg; 80 struct spi_message msg;
80 81
81 spinlock_t lock; 82 spinlock_t lock;
@@ -125,7 +126,9 @@ struct ads7846 {
125#define READ_Y (READ_12BIT_DFR(y) | ADS_PD10_ADC_ON) 126#define READ_Y (READ_12BIT_DFR(y) | ADS_PD10_ADC_ON)
126#define READ_Z1 (READ_12BIT_DFR(z1) | ADS_PD10_ADC_ON) 127#define READ_Z1 (READ_12BIT_DFR(z1) | ADS_PD10_ADC_ON)
127#define READ_Z2 (READ_12BIT_DFR(z2) | ADS_PD10_ADC_ON) 128#define READ_Z2 (READ_12BIT_DFR(z2) | ADS_PD10_ADC_ON)
128#define READ_X (READ_12BIT_DFR(x) | ADS_PD10_PDOWN) /* LAST */ 129
130#define READ_X (READ_12BIT_DFR(x) | ADS_PD10_ADC_ON)
131#define PWRDOWN (READ_12BIT_DFR(y) | ADS_PD10_PDOWN) /* LAST */
129 132
130/* single-ended samples need to first power up reference voltage; 133/* single-ended samples need to first power up reference voltage;
131 * we leave both ADC and VREF powered 134 * we leave both ADC and VREF powered
@@ -541,6 +544,18 @@ static int __devinit ads7846_probe(struct spi_device *spi)
541 x++; 544 x++;
542 x->rx_buf = &ts->tc.x; 545 x->rx_buf = &ts->tc.x;
543 x->len = 2; 546 x->len = 2;
547 spi_message_add_tail(x, &ts->msg);
548
549 /* power down */
550 x++;
551 ts->pwrdown = PWRDOWN;
552 x->tx_buf = &ts->pwrdown;
553 x->len = 1;
554 spi_message_add_tail(x, &ts->msg);
555
556 x++;
557 x->rx_buf = &ts->dummy;
558 x->len = 2;
544 CS_CHANGE(*x); 559 CS_CHANGE(*x);
545 spi_message_add_tail(x, &ts->msg); 560 spi_message_add_tail(x, &ts->msg);
546 561