Skip to content

Commit 58cd9e0

Browse files
author
Wolfram Sang
committed
Merge tag 'at24-fixes-for-v6.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into i2c/for-current
at24 fixes for v6.9-rc6 - move the nvmem registration after the test one-byte read to improve the situation with a race condition in nvmem - fix the DT schema for ST M24C64-D
2 parents ed30a4a + f42c970 commit 58cd9e0

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

Documentation/devicetree/bindings/eeprom/at24.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,10 @@ properties:
6868
pattern: cs16$
6969
- items:
7070
pattern: c32$
71-
- items:
72-
pattern: c32d-wl$
7371
- items:
7472
pattern: cs32$
7573
- items:
7674
pattern: c64$
77-
- items:
78-
pattern: c64d-wl$
7975
- items:
8076
pattern: cs64$
8177
- items:
@@ -136,6 +132,7 @@ properties:
136132
- renesas,r1ex24128
137133
- samsung,s524ad0xd1
138134
- const: atmel,24c128
135+
- pattern: '^atmel,24c(32|64)d-wl$' # Actual vendor is st
139136

140137
label:
141138
description: Descriptive name of the EEPROM.

drivers/misc/eeprom/at24.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -758,15 +758,6 @@ static int at24_probe(struct i2c_client *client)
758758
}
759759
pm_runtime_enable(dev);
760760

761-
at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
762-
if (IS_ERR(at24->nvmem)) {
763-
pm_runtime_disable(dev);
764-
if (!pm_runtime_status_suspended(dev))
765-
regulator_disable(at24->vcc_reg);
766-
return dev_err_probe(dev, PTR_ERR(at24->nvmem),
767-
"failed to register nvmem\n");
768-
}
769-
770761
/*
771762
* Perform a one-byte test read to verify that the chip is functional,
772763
* unless powering on the device is to be avoided during probe (i.e.
@@ -782,6 +773,15 @@ static int at24_probe(struct i2c_client *client)
782773
}
783774
}
784775

776+
at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
777+
if (IS_ERR(at24->nvmem)) {
778+
pm_runtime_disable(dev);
779+
if (!pm_runtime_status_suspended(dev))
780+
regulator_disable(at24->vcc_reg);
781+
return dev_err_probe(dev, PTR_ERR(at24->nvmem),
782+
"failed to register nvmem\n");
783+
}
784+
785785
/* If this a SPD EEPROM, probe for DDR3 thermal sensor */
786786
if (cdata == &at24_data_spd)
787787
at24_probe_temp_sensor(client);

0 commit comments

Comments
 (0)