diff options
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/i2c-core.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index df937df845eb..cf14ca063181 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -1464,14 +1464,18 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver) | |||
1464 | struct i2c_client * | 1464 | struct i2c_client * |
1465 | i2c_new_probed_device(struct i2c_adapter *adap, | 1465 | i2c_new_probed_device(struct i2c_adapter *adap, |
1466 | struct i2c_board_info *info, | 1466 | struct i2c_board_info *info, |
1467 | unsigned short const *addr_list) | 1467 | unsigned short const *addr_list, |
1468 | int (*probe)(struct i2c_adapter *, unsigned short addr)) | ||
1468 | { | 1469 | { |
1469 | int i; | 1470 | int i; |
1470 | 1471 | ||
1471 | /* Stop here if the bus doesn't support probing */ | 1472 | if (!probe) { |
1472 | if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) { | 1473 | /* Stop here if the bus doesn't support probing */ |
1473 | dev_err(&adap->dev, "Probing not supported\n"); | 1474 | if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) { |
1474 | return NULL; | 1475 | dev_err(&adap->dev, "Probing not supported\n"); |
1476 | return NULL; | ||
1477 | } | ||
1478 | probe = i2c_default_probe; | ||
1475 | } | 1479 | } |
1476 | 1480 | ||
1477 | for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) { | 1481 | for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) { |
@@ -1490,7 +1494,7 @@ i2c_new_probed_device(struct i2c_adapter *adap, | |||
1490 | } | 1494 | } |
1491 | 1495 | ||
1492 | /* Test address responsiveness */ | 1496 | /* Test address responsiveness */ |
1493 | if (i2c_default_probe(adap, addr_list[i])) | 1497 | if (probe(adap, addr_list[i])) |
1494 | break; | 1498 | break; |
1495 | } | 1499 | } |
1496 | 1500 | ||