From f6244c1d436c6f1c86ece74775ce4f2228f74281 Mon Sep 17 00:00:00 2001 From: Tomoya MORINAGA Date: Thu, 9 Jun 2011 11:29:29 +0900 Subject: [PATCH] --- yaml --- r: 260455 b: refs/heads/master c: 7a9c42ccc9fd4317383e55209f825f974e64aa99 h: refs/heads/master i: 260453: d6df50f2521f5a63dae01729d75a61426b9b3220 260451: a094d1c6598d5339cc545d8c8ed707020f5521fb 260447: 42d212a9439cff0177fc0cfe0b2ba458bfb8d12d v: v3 --- [refs] | 2 +- trunk/drivers/i2c/busses/i2c-eg20t.c | 39 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index eaf15af0a112..7000f32f13d2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5c470f39eea66ff00b31136f8bce9359d6b95375 +refs/heads/master: 7a9c42ccc9fd4317383e55209f825f974e64aa99 diff --git a/trunk/drivers/i2c/busses/i2c-eg20t.c b/trunk/drivers/i2c/busses/i2c-eg20t.c index 8abfa4a03ce1..9b072fd42108 100644 --- a/trunk/drivers/i2c/busses/i2c-eg20t.c +++ b/trunk/drivers/i2c/busses/i2c-eg20t.c @@ -673,25 +673,26 @@ static s32 pch_i2c_xfer(struct i2c_adapter *i2c_adap, /* transfer not completed */ adap->pch_i2c_xfer_in_progress = true; - pmsg = &msgs[0]; - pmsg->flags |= adap->pch_buff_mode_en; - status = pmsg->flags; - pch_dbg(adap, - "After invoking I2C_MODE_SEL :flag= 0x%x\n", status); - /* calculate sub address length and message length */ - /* these are applicable only for buffer mode */ - subaddrlen = pmsg->buf[0]; - /* calculate actual message length excluding - * the sub address fields */ - msglen = (pmsg->len) - (subaddrlen + 1); - if (status & (I2C_M_RD)) { - pch_dbg(adap, "invoking pch_i2c_readbytes\n"); - ret = pch_i2c_readbytes(i2c_adap, pmsg, (i + 1 == num), - (i == 0)); - } else { - pch_dbg(adap, "invoking pch_i2c_writebytes\n"); - ret = pch_i2c_writebytes(i2c_adap, pmsg, (i + 1 == num), - (i == 0)); + for (i = 0; i < num; i++) { + pmsg = &msgs[i]; + pmsg->flags |= adap->pch_buff_mode_en; + status = pmsg->flags; + pch_dbg(adap, + "After invoking I2C_MODE_SEL :flag= 0x%x\n", status); + /* calculate sub address length and message length */ + /* these are applicable only for buffer mode */ + subaddrlen = pmsg->buf[0]; + /* calculate actual message length excluding + * the sub address fields */ + msglen = (pmsg->len) - (subaddrlen + 1); + + if ((status & (I2C_M_RD)) != false) { + ret = pch_i2c_readbytes(i2c_adap, pmsg, (i + 1 == num), + (i == 0)); + } else { + ret = pch_i2c_writebytes(i2c_adap, pmsg, (i + 1 == num), + (i == 0)); + } } adap->pch_i2c_xfer_in_progress = false; /* transfer completed */