| From c36748ac545421d94a5091c754414c0f3664bf10 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= <jglisse@redhat.com> |
| Date: Thu, 1 Jul 2021 08:28:25 -0700 |
| Subject: misc: eeprom: at24: Always append device id even if label property is set. |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Jérôme Glisse <jglisse@redhat.com> |
| |
| commit c36748ac545421d94a5091c754414c0f3664bf10 upstream. |
| |
| We need to append device id even if eeprom have a label property 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 failures on such platform (system is no longer working). |
| |
| This fix regression on such platform introduced with 4e302c3b568e |
| |
| Reported-by: Alexander Fomichev <fomichev.ru@gmail.com> |
| Fixes: 4e302c3b568e ("misc: eeprom: at24: fix NVMEM name with custom AT24 device name") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Jérôme Glisse <jglisse@redhat.com> |
| Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/misc/eeprom/at24.c | 17 +++++++---------- |
| 1 file changed, 7 insertions(+), 10 deletions(-) |
| |
| --- a/drivers/misc/eeprom/at24.c |
| +++ b/drivers/misc/eeprom/at24.c |
| @@ -714,23 +714,20 @@ static int at24_probe(struct i2c_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); |
| } |
| |