misc: i2c_eeprom: verify that the chip is functional at probe()
authorBaruch Siach <baruch@tkos.co.il>
Mon, 5 Aug 2019 06:03:30 +0000 (09:03 +0300)
committerHeiko Schocher <hs@denx.de>
Tue, 27 Aug 2019 04:26:49 +0000 (06:26 +0200)
Read a single byte from EEPROM to verify that it is actually there.

This is equivalent to Linux kernel commit 00f0ea70d2b8 ("eeprom: at24:
check if the chip is functional in probe()").

Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
hs: fixed style check prefer kernel type 'u8' over 'uint8_t'

drivers/misc/i2c_eeprom.c

index f25d0540075d55db29ba8eb256034146fbcd24a7..8f2349ad5a79dc17856d87559be799a7fb3b193c 100644 (file)
@@ -84,6 +84,14 @@ static int i2c_eeprom_std_ofdata_to_platdata(struct udevice *dev)
 
 static int i2c_eeprom_std_probe(struct udevice *dev)
 {
+       u8 test_byte;
+       int ret;
+
+       /* Verify that the chip is functional */
+       ret = i2c_eeprom_read(dev, 0, &test_byte, 1);
+       if (ret)
+               return -ENODEV;
+
        return 0;
 }