diff options
author | Jean-Jacques Hiblot <jjhiblot@ti.com> | 2018-12-07 14:50:38 +0100 |
---|---|---|
committer | Heiko Schocher <hs@denx.de> | 2018-12-10 06:03:45 +0100 |
commit | f32a8007ef0fcc1a8f27e0cb444f6861163b03f6 (patch) | |
tree | 7940a854e832cd363c39326d377679bd947707b7 /drivers/i2c/i2c-uclass.c | |
parent | 65a97e7fcf54feb7c4ebe1aee8a572830af4cf51 (diff) | |
download | u-boot-f32a8007ef0fcc1a8f27e0cb444f6861163b03f6.tar.gz |
dm: i2c: Make i2c_get_chip_for_busnum() fail if the chip is not detected
i2c_get_chip_for_busnum() really should check the presence of the chip on
the bus. Most of the users of this function assume that this is done.
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'drivers/i2c/i2c-uclass.c')
-rw-r--r-- | drivers/i2c/i2c-uclass.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c index c5a3c4e201..975318e5f2 100644 --- a/drivers/i2c/i2c-uclass.c +++ b/drivers/i2c/i2c-uclass.c @@ -347,6 +347,17 @@ int i2c_get_chip_for_busnum(int busnum, int chip_addr, uint offset_len, debug("Cannot find I2C bus %d\n", busnum); return ret; } + + /* detect the presence of the chip on the bus */ + ret = i2c_probe_chip(bus, chip_addr, 0); + debug("%s: bus='%s', address %02x, ret=%d\n", __func__, bus->name, + chip_addr, ret); + if (ret) { + debug("Cannot detect I2C chip %02x on bus %d\n", chip_addr, + busnum); + return ret; + } + ret = i2c_get_chip(bus, chip_addr, offset_len, devp); if (ret) { debug("Cannot find I2C chip %02x on bus %d\n", chip_addr, |