diff options
Diffstat (limited to 'drivers/power/max17048_battery.c')
-rw-r--r-- | drivers/power/max17048_battery.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/power/max17048_battery.c b/drivers/power/max17048_battery.c index e5cdfa878267..e6dee61cc9b4 100644 --- a/drivers/power/max17048_battery.c +++ b/drivers/power/max17048_battery.c @@ -567,14 +567,30 @@ static int max17048_suspend(struct i2c_client *client, pm_message_t state) { struct max17048_chip *chip = i2c_get_clientdata(client); + int ret; cancel_delayed_work(&chip->work); + + ret = max17048_write_word(client, MAX17048_HIBRT, 0xffff); + if (ret < 0) { + dev_err(&client->dev, "failed in entering hibernate mode\n"); + return ret; + } + return 0; } static int max17048_resume(struct i2c_client *client) { struct max17048_chip *chip = i2c_get_clientdata(client); + int ret; + struct max17048_battery_model *mdata = chip->model_data; + + ret = max17048_write_word(client, MAX17048_HIBRT, mdata->hibernate); + if (ret < 0) { + dev_err(&client->dev, "failed in exiting hibernate mode\n"); + return ret; + } schedule_delayed_work(&chip->work, MAX17048_DELAY); return 0; |