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 <jjhib...@ti.com>

---

Changes in v3:
- removed commit introducing dm_i2c_probe_device(). Instead probe the
  presence of the chip on the I2C bus in i2c_get_chip_for_busnum().

Changes in v2: None

 drivers/i2c/i2c-uclass.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
index c5a3c4e..975318e 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,
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to