diff options
author | Sivaram Nair <sivaramn@nvidia.com> | 2013-01-14 16:11:39 +0200 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2013-01-17 17:10:48 -0800 |
commit | 8ce9a56a1a6e3a7cf35481d457e0e99aa7b6ece9 (patch) | |
tree | 6b447e292248854be95a552d4da41ba1b9ac66f6 /drivers | |
parent | 50d9ba35309b3d3909559557494a4fb1599b8a4f (diff) |
power: max77665: pass CHGIN_ILIM to update_status
This is a WAR for problems mentioned in the bug report (see below).
Instead of passing true, the charging limit (a non-zero) value is passed
into the update_status callback function. This will be exploited by the
fuel guage driver in order to calculate the battery depletion values.
Bug 1214607
Change-Id: I16bdcd99aafd1e03d0377cb6849352dbaa1e2ad9
Signed-off-by: Sivaram Nair <sivaramn@nvidia.com>
(cherry picked from commit bf9d20d92ae4c2b5c4796260bc34901f4f5e9cb1)
Reviewed-on: http://git-master/r/191636
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/power/max77665-charger.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/power/max77665-charger.c b/drivers/power/max77665-charger.c index 6270fc18ee34..52331b44c559 100644 --- a/drivers/power/max77665-charger.c +++ b/drivers/power/max77665-charger.c @@ -302,6 +302,14 @@ error: static int max77665_enable_charger(struct max77665_charger *charger) { int ret = 0; + uint32_t val = 0; + int ilim; + + ret = max77665_read_reg(charger, MAX77665_CHG_CNFG_09, &val); + if (ret) + goto error; + val &= 0x7F; + ilim = max_t(int, 60, val * 20); if (charger->plat_data->update_status) charger->plat_data->update_status(false); @@ -316,7 +324,7 @@ static int max77665_enable_charger(struct max77665_charger *charger) power_supply_changed(&charger->usb); charger->plat_data->curr_lim = 500; if (charger->plat_data->update_status) - charger->plat_data->update_status(true); + charger->plat_data->update_status(ilim); } if (extcon_get_cable_state(charger->edev, "USB-Host")) { @@ -333,7 +341,7 @@ static int max77665_enable_charger(struct max77665_charger *charger) charger->ac_online = 1; power_supply_changed(&charger->ac); if (charger->plat_data->update_status) - charger->plat_data->update_status(true); + charger->plat_data->update_status(ilim); } ret = max77665_charger_init(charger); |