mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
i2c: Drop i2c_probe function
The legacy i2c_probe() function has no users left, get rid of it. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
parent
729d6dd571
commit
36789b5ea5
2 changed files with 0 additions and 145 deletions
|
@ -1032,144 +1032,7 @@ EXPORT_SYMBOL(i2c_master_recv);
|
||||||
* Will not work for 10-bit addresses!
|
* Will not work for 10-bit addresses!
|
||||||
* ----------------------------------------------------
|
* ----------------------------------------------------
|
||||||
*/
|
*/
|
||||||
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) {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 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. */
|
|
||||||
if (err == -ENODEV)
|
|
||||||
err = 0;
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
dev_warn(&adapter->dev, "Client creation failed at 0x%x (%d)\n",
|
|
||||||
addr, err);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
int i2c_probe(struct i2c_adapter *adapter,
|
|
||||||
const 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);
|
|
||||||
|
|
||||||
/* Force entries are done first, and are not affected by ignore
|
|
||||||
entries */
|
|
||||||
if (address_data->forces) {
|
|
||||||
const unsigned short * const *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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 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_dbg(&adapter->dev, "SMBus Quick command not supported, "
|
|
||||||
"can't probe for chips\n");
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 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;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(i2c_probe);
|
|
||||||
|
|
||||||
/* Separate detection function for new-style drivers */
|
|
||||||
static int i2c_detect_address(struct i2c_client *temp_client, int kind,
|
static int i2c_detect_address(struct i2c_client *temp_client, int kind,
|
||||||
struct i2c_driver *driver)
|
struct i2c_driver *driver)
|
||||||
{
|
{
|
||||||
|
|
|
@ -419,14 +419,6 @@ extern void i2c_release_client(struct i2c_client *client);
|
||||||
extern void i2c_clients_command(struct i2c_adapter *adap,
|
extern void i2c_clients_command(struct i2c_adapter *adap,
|
||||||
unsigned int cmd, void *arg);
|
unsigned int cmd, void *arg);
|
||||||
|
|
||||||
/* Detect function. It iterates over all possible addresses itself.
|
|
||||||
* It will only call found_proc if some client is connected at the
|
|
||||||
* specific address (unless a 'force' matched);
|
|
||||||
*/
|
|
||||||
extern int i2c_probe(struct i2c_adapter *adapter,
|
|
||||||
const struct i2c_client_address_data *address_data,
|
|
||||||
int (*found_proc) (struct i2c_adapter *, int, int));
|
|
||||||
|
|
||||||
extern struct i2c_adapter *i2c_get_adapter(int id);
|
extern struct i2c_adapter *i2c_get_adapter(int id);
|
||||||
extern void i2c_put_adapter(struct i2c_adapter *adap);
|
extern void i2c_put_adapter(struct i2c_adapter *adap);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue