mirror of https://gitee.com/openkylin/linux.git
[PATCH] i2c: Adjust i2c_probe() for busses without SMBUS_QUICK
Move the check for SMBUS_QUICK in i2c_probe() after the forced addresses have been handled. This makes it possible for a driver to leave the probed address lists empty, only providing forced addresses, and get i2c_probe to work even if the bus doesn't support SMBUS_QUICK. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> drivers/i2c/i2c-core.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
This commit is contained in:
parent
cb929eae78
commit
4366dc946c
|
@ -706,10 +706,6 @@ int i2c_probe(struct i2c_adapter *adapter,
|
|||
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) {
|
||||
|
@ -736,6 +732,17 @@ int i2c_probe(struct i2c_adapter *adapter,
|
|||
}
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
/* 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) {
|
||||
|
|
Loading…
Reference in New Issue