From: Jean Delvare Subject: i2c: Bus drivers don't have to support I2C_M_REV_DIR_ADDR I2C bus drivers don't have to support I2C_M_REV_DIR_ADDR. It is a deviation from the I2C specification, which only makes sense to implement when really needed. Signed-off-by: Jean Delvare Cc: Ben Dooks --- drivers/i2c/busses/i2c-iop3xx.c | 6 ------ drivers/i2c/busses/i2c-mv64xxx.c | 3 --- drivers/i2c/busses/i2c-powermac.c | 2 -- 3 files changed, 11 deletions(-) --- linux-2.6.32-rc3.orig/drivers/i2c/busses/i2c-iop3xx.c 2009-10-10 14:08:39.000000000 +0200 +++ linux-2.6.32-rc3/drivers/i2c/busses/i2c-iop3xx.c 2009-10-10 14:21:42.000000000 +0200 @@ -56,12 +56,6 @@ iic_cook_addr(struct i2c_msg *msg) if (msg->flags & I2C_M_RD) addr |= 1; - /* - * Read or Write? - */ - if (msg->flags & I2C_M_REV_DIR_ADDR) - addr ^= 1; - return addr; } --- linux-2.6.32-rc3.orig/drivers/i2c/busses/i2c-mv64xxx.c 2009-10-10 14:08:39.000000000 +0200 +++ linux-2.6.32-rc3/drivers/i2c/busses/i2c-mv64xxx.c 2009-10-10 14:21:42.000000000 +0200 @@ -338,9 +338,6 @@ mv64xxx_i2c_prepare_for_io(struct mv64xx if (msg->flags & I2C_M_RD) dir = 1; - if (msg->flags & I2C_M_REV_DIR_ADDR) - dir ^= 1; - if (msg->flags & I2C_M_TEN) { drv_data->addr1 = 0xf0 | (((u32)msg->addr & 0x300) >> 7) | dir; drv_data->addr2 = (u32)msg->addr & 0xff; --- linux-2.6.32-rc3.orig/drivers/i2c/busses/i2c-powermac.c 2009-10-10 14:21:16.000000000 +0200 +++ linux-2.6.32-rc3/drivers/i2c/busses/i2c-powermac.c 2009-10-10 14:21:42.000000000 +0200 @@ -162,8 +162,6 @@ static int i2c_powermac_master_xfer( str return -EINVAL; read = (msgs->flags & I2C_M_RD) != 0; addrdir = (msgs->addr << 1) | read; - if (msgs->flags & I2C_M_REV_DIR_ADDR) - addrdir ^= 1; rc = pmac_i2c_open(bus, 0); if (rc) {