}  /* Stop here if we can't use SMBUS_QUICK */ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) { if (address_data->probe[0] == I2C_CLIENT_END && address_data->normal_i2c[0] == I2C_CLIENT_END) return 0;  dev_warn(&adapter->dev, "SMBus Quick command not supported, " "can't probe for chips\n"); return -1; 
int i2c_probe(struct i2c_adapter *adapter,	      struct i2c_client_address_data *address_data,	      int (*found_proc) (struct i2c_adapter *, int, int)){	int i, err;	int adap_id = i2c_adapter_id(adapter);	/* Forget it if we can't probe using SMBUS_QUICK */	if (! i2c_check_functionality(adapter,I2C_FUNC_SMBUS_QUICK))		return -1;	/* Force entries are done first, and are not affected by ignore	   entries */	if (address_data->forces) {		unsigned short **forces = address_data->forces;		int kind;		for (kind = 0; forces[kind]; kind++) {			for (i = 0; forces[kind][i] != I2C_CLIENT_END;			     i += 2) {				if (forces[kind][i] == adap_id				 || forces[kind][i] == ANY_I2C_BUS) {					dev_dbg(&adapter->dev, "found force "						"parameter for adapter %d, "						"addr 0x%02x, kind %d\n",						adap_id, forces[kind][i + 1],						kind);					err = i2c_probe_address(adapter,						forces[kind][i + 1],						kind, found_proc);					if (err)						return err;				}			}		}	}	/* Probe entries are done second, and are not affected by ignore	   entries either */	for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) {		if (address_data->probe[i] == adap_id		 || address_data->probe[i] == ANY_I2C_BUS) {			dev_dbg(&adapter->dev, "found probe parameter for "				"adapter %d, addr 0x%02x\n", adap_id,				address_data->probe[i + 1]);			err = i2c_probe_address(adapter,						address_data->probe[i + 1],						-1, found_proc);			if (err)				return err;		}	}	/* Normal entries are done last, unless shadowed by an ignore entry */	for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) {		int j, ignore;		ignore = 0;		for (j = 0; address_data->ignore[j] != I2C_CLIENT_END;		     j += 2) {			if ((address_data->ignore[j] == adap_id ||			     address_data->ignore[j] == ANY_I2C_BUS)			 && address_data->ignore[j + 1]			    == address_data->normal_i2c[i]) {				dev_dbg(&adapter->dev, "found ignore "					"parameter for adapter %d, "					"addr 0x%02x\n", adap_id,					address_data->ignore[j + 1]);			}			ignore = 1;			break;		}		if (ignore)			continue;		dev_dbg(&adapter->dev, "found normal entry for adapter %d, "			"addr 0x%02x\n", adap_id,			address_data->normal_i2c[i]);		err = i2c_probe_address(adapter, address_data->normal_i2c[i],					-1, found_proc);		if (err)			return err;	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4366dc946c01305cff49b07dabb806d2364f1edb/i2c-core.c/clean/drivers/i2c/i2c-core.c