summary refs log tree commit diff
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
parent2734d6c1b1a089fb593ef6a23d4b70903526fe0c (diff)
parentc36748ac545421d94a5091c754414c0f3664bf10 (diff)
downloadlinux-a750bff5b99e4097de2fa0cf00b78abb98a3c0d2.tar.gz
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);
 	}