i2c-omap: Add support for I2C_M_STOP message flag
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 24 Jul 2012 12:13:59 +0000 (14:13 +0200)
committerJean Delvare <khali@endymion.delvare>
Tue, 24 Jul 2012 12:13:59 +0000 (14:13 +0200)
Generate a stop condition after each message marked with I2C_M_STOP.

[JD: Add I2C_FUNC_PROTOCOL_MANGLING.]

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
drivers/i2c/busses/i2c-omap.c

index 801df60..c214833 100644 (file)
@@ -545,6 +545,8 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,
        if (dev->speed > 400)
                w |= OMAP_I2C_CON_OPMODE_HS;
 
+       if (msg->flags & I2C_M_STOP)
+               stop = 1;
        if (msg->flags & I2C_M_TEN)
                w |= OMAP_I2C_CON_XA;
        if (!(msg->flags & I2C_M_RD))
@@ -658,7 +660,8 @@ out:
 static u32
 omap_i2c_func(struct i2c_adapter *adap)
 {
-       return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK);
+       return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK) |
+              I2C_FUNC_PROTOCOL_MANGLING;
 }
 
 static inline void