diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/mrst-touchscreen/intel-mid-touch.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/drivers/staging/mrst-touchscreen/intel-mid-touch.c b/drivers/staging/mrst-touchscreen/intel-mid-touch.c index 9333b9e0959..2b9a7864ee7 100644 --- a/drivers/staging/mrst-touchscreen/intel-mid-touch.c +++ b/drivers/staging/mrst-touchscreen/intel-mid-touch.c | |||
@@ -498,8 +498,8 @@ static int __devinit mrstouch_read_pmic_id(uint *vendor, uint *rev) | |||
498 | */ | 498 | */ |
499 | static int __devinit mrstouch_chan_parse(struct mrstouch_dev *tsdev) | 499 | static int __devinit mrstouch_chan_parse(struct mrstouch_dev *tsdev) |
500 | { | 500 | { |
501 | int err, i, j, found; | 501 | int err, i, found; |
502 | u32 r32; | 502 | u8 r8; |
503 | 503 | ||
504 | found = -1; | 504 | found = -1; |
505 | 505 | ||
@@ -507,15 +507,13 @@ static int __devinit mrstouch_chan_parse(struct mrstouch_dev *tsdev) | |||
507 | if (found >= 0) | 507 | if (found >= 0) |
508 | break; | 508 | break; |
509 | 509 | ||
510 | err = intel_scu_ipc_ioread32(PMICADDR0, &r32); | 510 | err = intel_scu_ipc_ioread8(PMICADDR0 + i, &r8); |
511 | if (err) | 511 | if (err) |
512 | return err; | 512 | return err; |
513 | 513 | ||
514 | for (j = 0; j < 32; j+= 8) { | 514 | if (r8 == END_OF_CHANNEL) { |
515 | if (((r32 >> j) & 0xFF) == END_OF_CHANNEL) { | 515 | found = i; |
516 | found = i; | 516 | break; |
517 | break; | ||
518 | } | ||
519 | } | 517 | } |
520 | } | 518 | } |
521 | if (found < 0) | 519 | if (found < 0) |
@@ -537,20 +535,17 @@ static int __devinit mrstouch_chan_parse(struct mrstouch_dev *tsdev) | |||
537 | */ | 535 | */ |
538 | static int __devinit mrstouch_ts_chan_set(uint offset) | 536 | static int __devinit mrstouch_ts_chan_set(uint offset) |
539 | { | 537 | { |
540 | int count; | ||
541 | u16 chan; | 538 | u16 chan; |
542 | u16 reg[5]; | 539 | |
543 | u8 data[5]; | 540 | int ret, count; |
544 | 541 | ||
545 | chan = PMICADDR0 + offset; | 542 | chan = PMICADDR0 + offset; |
546 | for (count = 0; count <= 3; count++) { | 543 | for (count = 0; count <= 3; count++) { |
547 | reg[count] = chan++; | 544 | ret = intel_scu_ipc_iowrite8(chan++, MRST_TS_CHAN10 + count); |
548 | data[count] = MRST_TS_CHAN10 + count; | 545 | if (ret) |
546 | return ret; | ||
549 | } | 547 | } |
550 | reg[count] = chan; | 548 | return intel_scu_ipc_iowrite8(chan++, END_OF_CHANNEL); |
551 | data[count] = END_OF_CHANNEL; | ||
552 | |||
553 | return intel_scu_ipc_writev(reg, data, 5); | ||
554 | } | 549 | } |
555 | 550 | ||
556 | /* Initialize ADC */ | 551 | /* Initialize ADC */ |