if (kind < 0 && i2c_smbus_xfer(adapter, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL) < 0) return 0; 
if (kind < 0) { if (i2c_smbus_xfer(adapter, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL) < 0) return 0;  /* prevent 24RF08 corruption */ if ((addr & ~0x0f) == 0x50) i2c_smbus_xfer(adapter, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL); } 
static int i2c_probe_address(struct i2c_adapter *adapter, int addr, int kind,			     int (*found_proc) (struct i2c_adapter *, int, int)){	int err;	/* Make sure the address is valid */	if (addr < 0x03 || addr > 0x77) {		dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",			 addr);		return -EINVAL;	}	/* Skip if already in use */	if (i2c_check_addr(adapter, addr))		return 0;	/* Make sure there is something at this address, unless forced */	if (kind < 0	 && i2c_smbus_xfer(adapter, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL) < 0)		return 0;	/* Finally call the custom detection function */	err = found_proc(adapter, addr, kind);	/* -ENODEV can be returned if there is a chip at the given address	   but it isn't supported by this chip driver. We catch it here as	   this isn't an error. */	return (err == -ENODEV) ? 0 : err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4c9337da37c877e53a64696fc8524f642d446cba/i2c-core.c/clean/drivers/i2c/i2c-core.c