diff options
author | Jonghwa Lee <jonghwa3.lee@samsung.com> | 2014-10-21 16:38:58 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 12:01:02 +0900 |
commit | 361f1558dfc48cab51df9d2194fcb1301dcb65e9 (patch) | |
tree | ed83ce2072e0bca93beef0a9b2153a1e8c64783d | |
parent | 0f5bcde2ecd7e9900791b2ce0b087623dc150d7c (diff) | |
download | linux-3.10-361f1558dfc48cab51df9d2194fcb1301dcb65e9.tar.gz linux-3.10-361f1558dfc48cab51df9d2194fcb1301dcb65e9.tar.bz2 linux-3.10-361f1558dfc48cab51df9d2194fcb1301dcb65e9.zip |
power: charger-manager: Get external power souce information only from EXTCON.
When charger-manager checks whether external power source is available,
it gets information from charger IC driver. However, it's not correct source,
charger IC doesn't have responsibilty to give cable connection status.
The charger-manager already gets cable information from EXTCON susbsystem,
so it can re-use it.
Change-Id: I408546beefe63707fcb927db7d92c4005f3848f8
Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
-rw-r--r-- | drivers/power/charger-manager.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/power/charger-manager.c b/drivers/power/charger-manager.c index 774f9cb6dcc..572c0fb7450 100644 --- a/drivers/power/charger-manager.c +++ b/drivers/power/charger-manager.c @@ -110,28 +110,27 @@ static bool is_batt_present(struct charger_manager *cm) * is_ext_pwr_online - See if an external power source is attached to charge * @cm: the Charger Manager representing the battery. * - * Returns true if at least one of the chargers of the battery has an external - * power source attached to charge the battery regardless of whether it is - * actually charging or not. + * Returns true if there is external power source. + * Cable connection information is only obtained by EXTCON class notification. */ static bool is_ext_pwr_online(struct charger_manager *cm) { - union power_supply_propval val; - bool online = false; - int i, ret; + struct charger_desc *desc = cm->desc; + struct charger_regulator *regulators = desc->charger_regulators; + struct charger_cable *cables; + int i, j, num_cables; /* If at least one of them has one, it's yes. */ - for (i = 0; i < cm->desc->num_chargers; i++) { - ret = cm->charger_stat[i]->get_property( - cm->charger_stat[i], - POWER_SUPPLY_PROP_ONLINE, &val); - if (ret == 0 && val.intval) { - online = true; - break; + for (i = 0; i < desc->num_charger_regulators; i++) { + cables = regulators[i].cables; + num_cables = regulators[i].num_cables; + for (j = 0; j < num_cables; j++) { + if (cables[j].attached) + return true; } } - return online; + return false; } /** |