i2c-powermac: Reject unsupported I2C transactions
authorJean Delvare <khali@linux-fr.org>
Sun, 6 Dec 2009 16:06:17 +0000 (17:06 +0100)
committerJean Delvare <khali@linux-fr.org>
Sun, 6 Dec 2009 16:06:17 +0000 (17:06 +0100)
The i2c-powermac driver doesn't support arbitrary multi-message I2C
transactions, only SMBus ones. Make it clear by returning an error if
a multi-message I2C transaction is attempted. This is better than only
processing the first message, because most callers won't recover from
the short transaction. Anyone wishing to issue multi-message
transactions should use the SMBus API instead of the raw I2C API.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Tested-by: Michel Daenzer <michel@daenzer.net>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
drivers/i2c/busses/i2c-powermac.c

index 3c9d71f60187ac6f979027238e31d4230cd5a764..a74f3bab05b8b271b40709b4edc5836b2ac20a06 100644 (file)
@@ -146,6 +146,12 @@ static int i2c_powermac_master_xfer(       struct i2c_adapter *adap,
        int                     read;
        int                     addrdir;
 
+       if (num != 1) {
+               dev_err(&adap->dev,
+                       "Multi-message I2C transactions not supported\n");
+               return -EOPNOTSUPP;
+       }
+
        if (msgs->flags & I2C_M_TEN)
                return -EINVAL;
        read = (msgs->flags & I2C_M_RD) != 0;