diff options
author | Jean Delvare <khali@linux-fr.org> | 2005-09-25 10:50:06 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-10-28 17:02:07 -0400 |
commit | 4366dc946c01305cff49b07dabb806d2364f1edb (patch) | |
tree | 0cc9f6a086d47f3b8688f2f8c8ce6d924be97d03 /drivers/i2c | |
parent | cb929eae78ec0b243dbf58039bce4af354f6020c (diff) |
[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(-)
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/i2c-core.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 45aa0e54e297..b55097d57b7a 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -706,10 +706,6 @@ int i2c_probe(struct i2c_adapter *adapter, | |||
706 | int i, err; | 706 | int i, err; |
707 | int adap_id = i2c_adapter_id(adapter); | 707 | int adap_id = i2c_adapter_id(adapter); |
708 | 708 | ||
709 | /* Forget it if we can't probe using SMBUS_QUICK */ | ||
710 | if (! i2c_check_functionality(adapter,I2C_FUNC_SMBUS_QUICK)) | ||
711 | return -1; | ||
712 | |||
713 | /* Force entries are done first, and are not affected by ignore | 709 | /* Force entries are done first, and are not affected by ignore |
714 | entries */ | 710 | entries */ |
715 | if (address_data->forces) { | 711 | if (address_data->forces) { |
@@ -736,6 +732,17 @@ int i2c_probe(struct i2c_adapter *adapter, | |||
736 | } | 732 | } |
737 | } | 733 | } |
738 | 734 | ||
735 | /* Stop here if we can't use SMBUS_QUICK */ | ||
736 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) { | ||
737 | if (address_data->probe[0] == I2C_CLIENT_END | ||
738 | && address_data->normal_i2c[0] == I2C_CLIENT_END) | ||
739 | return 0; | ||
740 | |||
741 | dev_warn(&adapter->dev, "SMBus Quick command not supported, " | ||
742 | "can't probe for chips\n"); | ||
743 | return -1; | ||
744 | } | ||
745 | |||
739 | /* Probe entries are done second, and are not affected by ignore | 746 | /* Probe entries are done second, and are not affected by ignore |
740 | entries either */ | 747 | entries either */ |
741 | for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) { | 748 | for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) { |