From: Sonic Zhang <[email protected]>

A smbus quick transfer has no data after the address byte.

Signed-off-by: Sonic Zhang <[email protected]>
Signed-off-by: Mike Frysinger <[email protected]>
---
 drivers/i2c/busses/i2c-bfin-twi.c |   18 +++++++-----------
 1 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/i2c/busses/i2c-bfin-twi.c 
b/drivers/i2c/busses/i2c-bfin-twi.c
index d157105..02a8c86 100644
--- a/drivers/i2c/busses/i2c-bfin-twi.c
+++ b/drivers/i2c/busses/i2c-bfin-twi.c
@@ -158,18 +158,14 @@ static void bfin_twi_handle_interrupt(struct 
bfin_twi_iface *iface,
                if (mast_stat & BUFWRERR)
                        dev_dbg(&iface->adap.dev, "Buffer Write Error\n");
 
-               /* if both err and complete int stats are set, return proper
-                * results.
+               /* If it is a quick transfer, only address without data,
+                * not an err, return 1.
                 */
-               if (twi_int_status & MCOMP) {
-                       /* If it is a quick transfer, only address without data,
-                        * not an err, return 1.
-                        * If address is acknowledged return 1.
-                        */
-                       if ((iface->writeNum == 0 && (mast_stat & BUFRDERR))
-                               || !(mast_stat & ANAK))
-                               iface->result = 1;
-               }
+               if (iface->cur_mode == TWI_I2C_MODE_STANDARD &&
+                       iface->transPtr == NULL &&
+                       (twi_int_status & MCOMP) && (mast_stat & DNAK))
+                       iface->result = 1;
+
                complete(&iface->complete);
                return;
        }
-- 
1.6.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to