diff options
-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; } /** |