On Mon, Aug 31, 2020 at 3:56 AM Vadym Kochan <vadym.kochan@xxxxxxxxxxx> wrote: > > During nvmem_register() the nvmem core sends notifications when: > > - cell added > - nvmem added > > and during these notifications some callback func may access the nvmem > device, which will fail in case of at24 eeprom because regulator and pm > are enabled after nvmem_register(). > > Signed-off-by: Vadym Kochan <vadym.kochan@xxxxxxxxxxx> > --- > v3: > 1) at24 driver enables regulator and pm state machine after nvmem > registration which does not allow to use it on handing NVMEM_PRE_ADD event. > > drivers/misc/eeprom/at24.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c > index 2591c21b2b5d..26a23abc053d 100644 > --- a/drivers/misc/eeprom/at24.c > +++ b/drivers/misc/eeprom/at24.c > @@ -692,10 +692,6 @@ static int at24_probe(struct i2c_client *client) > nvmem_config.word_size = 1; > nvmem_config.size = byte_len; > > - at24->nvmem = devm_nvmem_register(dev, &nvmem_config); > - if (IS_ERR(at24->nvmem)) > - return PTR_ERR(at24->nvmem); > - > i2c_set_clientdata(client, at24); > > err = regulator_enable(at24->vcc_reg); > @@ -708,6 +704,13 @@ static int at24_probe(struct i2c_client *client) > pm_runtime_set_active(dev); > pm_runtime_enable(dev); > > + at24->nvmem = devm_nvmem_register(dev, &nvmem_config); > + if (IS_ERR(at24->nvmem)) { > + pm_runtime_disable(dev); > + regulator_disable(at24->vcc_reg); > + return PTR_ERR(at24->nvmem); > + } > + > /* > * Perform a one-byte test read to verify that the > * chip is functional. > -- > 2.17.1 > Good catch! Thanks for the patch. Can I queue it for fixes independently from the earlier patches in this series? Bart