Hi Divagar, On Mon, Sep 04, 2017 at 12:10:45PM +0530, Divagar Mohandass wrote: > Currently the device is kept in D0, there is an opportunity > to save power by enabling runtime pm. > > Device can be daisy chained from PMIC and we can't rely on I2C core > for auto resume/suspend. Driver will decide when to resume/suspend. > > Signed-off-by: Divagar Mohandass <divagar.mohandass@xxxxxxxxx> > --- > drivers/misc/eeprom/at24.c | 40 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c > index 2199c42..03f5cb7 100644 > --- a/drivers/misc/eeprom/at24.c > +++ b/drivers/misc/eeprom/at24.c > @@ -750,9 +782,12 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) > err = at24_read(at24, 0, &test_byte, 1); You do pm_runtime_put()s here and drop the ones below as it's needed unconditionally. Then I think we're done. > if (err) { > err = -ENODEV; > + pm_runtime_put(&client->dev); > goto err_clients; > } > > + pm_runtime_put(&client->dev); > + > at24->nvmem_config.name = dev_name(&client->dev); > at24->nvmem_config.dev = &client->dev; > at24->nvmem_config.read_only = !writable; -- Kind regards, Sakari Ailus e-mail: sakari.ailus@xxxxxx