Hi Bartosz, On Mon, Aug 31, 2020 at 07:21:39PM +0200, Bartosz Golaszewski wrote: > 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 Sure. Regards, Vadym Kochan