aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorWolfram Sang <wsa@kernel.org>2021-07-20 22:28:56 +0200
committerWolfram Sang <wsa@kernel.org>2021-07-20 22:28:56 +0200
commita750bff5b99e4097de2fa0cf00b78abb98a3c0d2 (patch)
tree306ebef80a72d4218f7f51bce8149dc3507787bb /drivers/misc
parentLinux 5.14-rc2 (diff)
parentmisc: eeprom: at24: Always append device id even if label property is set. (diff)
downloadlinux-dev-a750bff5b99e4097de2fa0cf00b78abb98a3c0d2.tar.xz
linux-dev-a750bff5b99e4097de2fa0cf00b78abb98a3c0d2.zip
Merge tag 'at24-fixes-for-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into i2c/for-current
at24 fixes for v5.14 - fix a problem with repeating labels not getting a device id
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/eeprom/at24.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index 7a6f01ace78a..305ffad131a2 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -714,23 +714,20 @@ static int at24_probe(struct i2c_client *client)
}
/*
- * If the 'label' property is not present for the AT24 EEPROM,
- * then nvmem_config.id is initialised to NVMEM_DEVID_AUTO,
- * and this will append the 'devid' to the name of the NVMEM
- * device. This is purely legacy and the AT24 driver has always
- * defaulted to this. However, if the 'label' property is
- * present then this means that the name is specified by the
- * firmware and this name should be used verbatim and so it is
- * not necessary to append the 'devid'.
+ * We initialize nvmem_config.id to NVMEM_DEVID_AUTO even if the
+ * label property is set as some platform can have multiple eeproms
+ * with same label and we can not register each of those with same
+ * label. Failing to register those eeproms trigger cascade failure
+ * on such platform.
*/
+ nvmem_config.id = NVMEM_DEVID_AUTO;
+
if (device_property_present(dev, "label")) {
- nvmem_config.id = NVMEM_DEVID_NONE;
err = device_property_read_string(dev, "label",
&nvmem_config.name);
if (err)
return err;
} else {
- nvmem_config.id = NVMEM_DEVID_AUTO;
nvmem_config.name = dev_name(dev);
}