diff options
Diffstat (limited to 'drivers/i2c/i2c-core-base.c')
| -rw-r--r-- | drivers/i2c/i2c-core-base.c | 86 | 
1 files changed, 25 insertions, 61 deletions
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 5f6a4985f2bc..9f8dcd3f8385 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -896,29 +896,6 @@ struct i2c_client *i2c_new_dummy_device(struct i2c_adapter *adapter, u16 address  }  EXPORT_SYMBOL_GPL(i2c_new_dummy_device); -/** - * i2c_new_dummy - return a new i2c device bound to a dummy driver - * @adapter: the adapter managing the device - * @address: seven bit address to be used - * Context: can sleep - * - * This deprecated function has the same functionality as @i2c_new_dummy_device, - * it just returns NULL instead of an ERR_PTR in case of an error for - * compatibility with current I2C API. It will be removed once all users are - * converted. - * - * This returns the new i2c client, which should be saved for later use with - * i2c_unregister_device(); or NULL to indicate an error. - */ -struct i2c_client *i2c_new_dummy(struct i2c_adapter *adapter, u16 address) -{ -	struct i2c_client *ret; - -	ret = i2c_new_dummy_device(adapter, address); -	return IS_ERR(ret) ? NULL : ret; -} -EXPORT_SYMBOL_GPL(i2c_new_dummy); -  struct i2c_dummy_devres {  	struct i2c_client *client;  }; @@ -1656,6 +1633,12 @@ void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_de  		t->sda_fall_ns = t->scl_fall_ns;  	device_property_read_u32(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns); + +	device_property_read_u32(dev, "i2c-digital-filter-width-ns", +				 &t->digital_filter_width_ns); + +	device_property_read_u32(dev, "i2c-analog-filter-cutoff-frequency", +				 &t->analog_filter_cutoff_freq_hz);  }  EXPORT_SYMBOL_GPL(i2c_parse_fw_timings); @@ -1737,38 +1720,6 @@ EXPORT_SYMBOL(i2c_del_driver);  /* ------------------------------------------------------------------------- */ -/** - * i2c_use_client - increments the reference count of the i2c client structure - * @client: the client being referenced - * - * Each live reference to a client should be refcounted. The driver model does - * that automatically as part of driver binding, so that most drivers don't - * need to do this explicitly: they hold a reference until they're unbound - * from the device. - * - * A pointer to the client with the incremented reference counter is returned. - */ -struct i2c_client *i2c_use_client(struct i2c_client *client) -{ -	if (client && get_device(&client->dev)) -		return client; -	return NULL; -} -EXPORT_SYMBOL(i2c_use_client); - -/** - * i2c_release_client - release a use of the i2c client structure - * @client: the client being no longer referenced - * - * Must be called when a user of a client is finished with it. - */ -void i2c_release_client(struct i2c_client *client) -{ -	if (client) -		put_device(&client->dev); -} -EXPORT_SYMBOL(i2c_release_client); -  struct i2c_cmd_arg {  	unsigned	cmd;  	void		*arg; @@ -2271,10 +2222,10 @@ int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr)  EXPORT_SYMBOL_GPL(i2c_probe_func_quick_read);  struct i2c_client * -i2c_new_probed_device(struct i2c_adapter *adap, -		      struct i2c_board_info *info, -		      unsigned short const *addr_list, -		      int (*probe)(struct i2c_adapter *adap, unsigned short addr)) +i2c_new_scanned_device(struct i2c_adapter *adap, +		       struct i2c_board_info *info, +		       unsigned short const *addr_list, +		       int (*probe)(struct i2c_adapter *adap, unsigned short addr))  {  	int i; @@ -2304,11 +2255,24 @@ i2c_new_probed_device(struct i2c_adapter *adap,  	if (addr_list[i] == I2C_CLIENT_END) {  		dev_dbg(&adap->dev, "Probing failed, no device found\n"); -		return NULL; +		return ERR_PTR(-ENODEV);  	}  	info->addr = addr_list[i]; -	return i2c_new_device(adap, info); +	return i2c_new_client_device(adap, info); +} +EXPORT_SYMBOL_GPL(i2c_new_scanned_device); + +struct i2c_client * +i2c_new_probed_device(struct i2c_adapter *adap, +		      struct i2c_board_info *info, +		      unsigned short const *addr_list, +		      int (*probe)(struct i2c_adapter *adap, unsigned short addr)) +{ +	struct i2c_client *client; + +	client = i2c_new_scanned_device(adap, info, addr_list, probe); +	return IS_ERR(client) ? NULL : client;  }  EXPORT_SYMBOL_GPL(i2c_new_probed_device);  |