aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/touchscreen/ad7877.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c
index 5f0221cffef9..53f4d79ee530 100644
--- a/drivers/input/touchscreen/ad7877.c
+++ b/drivers/input/touchscreen/ad7877.c
@@ -230,6 +230,7 @@ static int ad7877_read(struct spi_device *spi, u16 reg)
230 AD7877_READADD(reg)); 230 AD7877_READADD(reg));
231 req->xfer[0].tx_buf = &req->command; 231 req->xfer[0].tx_buf = &req->command;
232 req->xfer[0].len = 2; 232 req->xfer[0].len = 2;
233 req->xfer[0].cs_change = 1;
233 234
234 req->xfer[1].rx_buf = &req->sample; 235 req->xfer[1].rx_buf = &req->sample;
235 req->xfer[1].len = 2; 236 req->xfer[1].len = 2;
@@ -295,20 +296,25 @@ static int ad7877_read_adc(struct spi_device *spi, unsigned command)
295 296
296 req->xfer[0].tx_buf = &req->reset; 297 req->xfer[0].tx_buf = &req->reset;
297 req->xfer[0].len = 2; 298 req->xfer[0].len = 2;
299 req->xfer[0].cs_change = 1;
298 300
299 req->xfer[1].tx_buf = &req->ref_on; 301 req->xfer[1].tx_buf = &req->ref_on;
300 req->xfer[1].len = 2; 302 req->xfer[1].len = 2;
301 req->xfer[1].delay_usecs = ts->vref_delay_usecs; 303 req->xfer[1].delay_usecs = ts->vref_delay_usecs;
304 req->xfer[1].cs_change = 1;
302 305
303 req->xfer[2].tx_buf = &req->command; 306 req->xfer[2].tx_buf = &req->command;
304 req->xfer[2].len = 2; 307 req->xfer[2].len = 2;
305 req->xfer[2].delay_usecs = ts->vref_delay_usecs; 308 req->xfer[2].delay_usecs = ts->vref_delay_usecs;
309 req->xfer[2].cs_change = 1;
306 310
307 req->xfer[3].rx_buf = &req->sample; 311 req->xfer[3].rx_buf = &req->sample;
308 req->xfer[3].len = 2; 312 req->xfer[3].len = 2;
313 req->xfer[3].cs_change = 1;
309 314
310 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/ 315 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/
311 req->xfer[4].len = 2; 316 req->xfer[4].len = 2;
317 req->xfer[4].cs_change = 1;
312 318
313 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/ 319 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/
314 req->xfer[5].len = 2; 320 req->xfer[5].len = 2;
@@ -640,17 +646,21 @@ static void ad7877_setup_ts_def_msg(struct spi_device *spi, struct ad7877 *ts)
640 646
641 ts->xfer[0].tx_buf = &ts->cmd_crtl1; 647 ts->xfer[0].tx_buf = &ts->cmd_crtl1;
642 ts->xfer[0].len = 2; 648 ts->xfer[0].len = 2;
649 ts->xfer[0].cs_change = 1;
643 650
644 spi_message_add_tail(&ts->xfer[0], m); 651 spi_message_add_tail(&ts->xfer[0], m);
645 652
646 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */ 653 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */
647 ts->xfer[1].len = 2; 654 ts->xfer[1].len = 2;
655 ts->xfer[1].cs_change = 1;
648 656
649 spi_message_add_tail(&ts->xfer[1], m); 657 spi_message_add_tail(&ts->xfer[1], m);
650 658
651 for (i = 0; i < 11; i++) { 659 for (i = 0; i < AD7877_NR_SENSE; i++) {
652 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i]; 660 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i];
653 ts->xfer[i + 2].len = 2; 661 ts->xfer[i + 2].len = 2;
662 if (i < (AD7877_NR_SENSE - 1))
663 ts->xfer[i + 2].cs_change = 1;
654 spi_message_add_tail(&ts->xfer[i + 2], m); 664 spi_message_add_tail(&ts->xfer[i + 2], m);
655 } 665 }
656} 666}