summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/mrst-touchscreen/intel-mid-touch.c29
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 abba22f921b..031b2f8f555 100644
--- a/drivers/staging/mrst-touchscreen/intel-mid-touch.c
+++ b/drivers/staging/mrst-touchscreen/intel-mid-touch.c
@@ -157,8 +157,8 @@ static int mrstouch_pmic_id(uint *vendor, uint *rev)
*/
static int mrstouch_chan_parse(struct mrstouch_dev *tsdev)
{
- int err, i, j, found;
- u32 r32;
+ int err, i, found;
+ u8 r8;
found = -1;
@@ -166,15 +166,13 @@ static int mrstouch_chan_parse(struct mrstouch_dev *tsdev)
if (found >= 0)
break;
- err = intel_scu_ipc_ioread32(PMICADDR0, &r32);
+ err = intel_scu_ipc_ioread8(PMICADDR0 + i, &r8);
if (err)
return err;
- for (j = 0; j < 32; j+= 8) {
- if (((r32 >> j) & 0xFF) == END_OF_CHANNEL) {
- found = i;
- break;
- }
+ if (r8 == END_OF_CHANNEL) {
+ found = i;
+ break;
}
}
if (found < 0)
@@ -284,20 +282,17 @@ static int mrstouch_ts_chan_read(u16 offset, u16 chan, u16 *vp, u16 *vm)
*/
static int mrstouch_ts_chan_set(uint offset)
{
- int count;
u16 chan;
- u16 reg[5];
- u8 data[5];
+
+ int ret, count;
chan = PMICADDR0 + offset;
for (count = 0; count <= 3; count++) {
- reg[count] = chan++;
- data[count] = MRST_TS_CHAN10 + count;
+ ret = intel_scu_ipc_iowrite8(chan++, MRST_TS_CHAN10 + count);
+ if (ret)
+ return ret;
}
- reg[count] = chan;
- data[count] = END_OF_CHANNEL;
-
- return intel_scu_ipc_writev(reg, data, 5);
+ return intel_scu_ipc_iowrite8(chan++, END_OF_CHANNEL);
}
/* Initialize ADC */