static inline int usb_find_address(struct i2c_adapter *i2c_adap, struct i2c_msg *msg, int retries, unsigned char *add) { unsigned short flags = msg->flags; unsigned char addr; int ret; if ((flags & I2C_M_TEN)) { /* a ten bit address */ addr = 0xf0 | ((msg->addr >> 7) & 0x03); /* try extended address code... */ ret = try_write_address(i2c_adap, addr, retries); if (ret != 1) { err("died at extended address code, while writing"); return -EREMOTEIO; } add[0] = addr; if (flags & I2C_M_RD) { /* okay, now switch into reading mode */ addr |= 0x01; ret = try_read_address(i2c_adap, addr, retries); if (ret != 1) { err("died at extended address code, while reading"); return -EREMOTEIO; } } } else { /* normal 7bit address */
static inline int usb_find_address(struct i2c_adapter *i2c_adap, struct i2c_msg *msg, int retries, unsigned char *add) { unsigned short flags = msg->flags; unsigned char addr; int ret; addr = (msg->addr << 1); if (flags & I2C_M_RD) addr |= 1; add[0] = addr; if (flags & I2C_M_RD) ret = try_read_address(i2c_adap, addr, retries); else ret = try_write_address(i2c_adap, addr, retries); if (ret != 1) return -EREMOTEIO; return 0; }