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;
}