diff options
author | Darbha Sriharsha <dsriharsha@nvidia.com> | 2013-03-15 12:28:32 +0530 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2013-03-18 17:24:53 -0700 |
commit | 29105b44ca749a2ac82349be9bf06a083a80877a (patch) | |
tree | b943f81620e353be3459facf11c9447df34f20b6 /drivers/power | |
parent | 762c897f0ccd4bf3282cd8f97c869b07f3feba45 (diff) |
power: sbs-battery: Use dev_pm_ops for suspend/resume
This change is intended to modify sbs-battery fuel
gauge driver to use dev_pm_ops to specify suspend/resume
operations in place of the legacy method.
Bug 1249600
Change-Id: Ied18fac007ccaafe3113594dbc0c4eda18dcbd1f
Signed-off-by: Darbha Sriharsha <dsriharsha@nvidia.com>
Reviewed-on: http://git-master/r/209897
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/sbs-battery.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/power/sbs-battery.c b/drivers/power/sbs-battery.c index a568d60b51dc..2f68b09dd01f 100644 --- a/drivers/power/sbs-battery.c +++ b/drivers/power/sbs-battery.c @@ -1,7 +1,7 @@ /* * Gas Gauge driver for SBS Compliant Batteries * - * Copyright (c) 2010-2013, NVIDIA Corporation. + * Copyright (c) 2010-2013, NVIDIA Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -884,17 +884,18 @@ static void sbs_shutdown(struct i2c_client *client) } #if defined CONFIG_PM -static int sbs_suspend(struct i2c_client *client, - pm_message_t state) +static int sbs_suspend(struct device *dev) { - struct sbs_info *chip = i2c_get_clientdata(client); + struct i2c_client *i2c = to_i2c_client(dev); + struct sbs_info *chip = i2c_get_clientdata(i2c); s32 ret; if (chip->poll_time > 0) cancel_delayed_work_sync(&chip->work); /* write to manufacturer access with sleep command */ - ret = sbs_write_word_data(client, sbs_data[REG_MANUFACTURER_DATA].addr, + ret = sbs_write_word_data(chip->client, + sbs_data[REG_MANUFACTURER_DATA].addr, MANUFACTURER_ACCESS_SLEEP); if (chip->is_present && ret < 0) return ret; @@ -902,9 +903,10 @@ static int sbs_suspend(struct i2c_client *client, return 0; } -static int sbs_resume(struct i2c_client *client) +static int sbs_resume(struct device *dev) { - struct sbs_info *chip = i2c_get_clientdata(client); + struct i2c_client *i2c = to_i2c_client(dev); + struct sbs_info *chip = i2c_get_clientdata(i2c); schedule_delayed_work(&chip->work, HZ); return 0; @@ -921,16 +923,20 @@ static const struct i2c_device_id sbs_id[] = { }; MODULE_DEVICE_TABLE(i2c, sbs_id); +static const struct dev_pm_ops sbs_battery_pm_ops = { + .suspend = sbs_suspend, + .resume = sbs_resume, +}; + static struct i2c_driver sbs_battery_driver = { .probe = sbs_probe, .remove = __devexit_p(sbs_remove), - .suspend = sbs_suspend, - .resume = sbs_resume, .id_table = sbs_id, .shutdown = sbs_shutdown, .driver = { .name = "sbs-battery", .of_match_table = sbs_dt_ids, + .pm = &sbs_battery_pm_ops, }, }; module_i2c_driver(sbs_battery_driver); |