mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
Add charger power watt uevent
Support charger power watt uevent to notify BatteryService the charger power capability. Filter uevent by uevent message POWER_SUPPLY_POWER_WATT= to parse the charger power in watt. Change-Id: I9Montana081355e68b281825476d241f570d3118c5fb Signed-off-by: Yonghua Yan <yanyh2@motorola.com> Reviewed-on: https://gerrit.mot.com/2276713 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Jianqi Yang <yangj@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
473692abb9
commit
0769972de6
1 changed files with 20 additions and 0 deletions
|
|
@ -68,6 +68,7 @@ enum {
|
|||
NOTIFY_EVENT_TYPE_CHG_RATE = 0,
|
||||
NOTIFY_EVENT_TYPE_LPD_PRESENT,
|
||||
NOTIFY_EVENT_TYPE_VBUS_PRESENT,
|
||||
NOTIFY_EVENT_TYPE_POWER_WATT,
|
||||
};
|
||||
|
||||
static char *charge_rate[] = {
|
||||
|
|
@ -214,6 +215,7 @@ struct mmi_charger_chip {
|
|||
int max_charger_rate;
|
||||
bool vbus_present;
|
||||
bool lpd_present;
|
||||
int power_watt;
|
||||
|
||||
int suspended;
|
||||
int demo_mode;
|
||||
|
|
@ -345,6 +347,8 @@ static ssize_t state_sync_store(struct device *dev,
|
|||
NOTIFY_EVENT_TYPE_LPD_PRESENT);
|
||||
mmi_notify_charger_event(this_chip,
|
||||
NOTIFY_EVENT_TYPE_VBUS_PRESENT);
|
||||
mmi_notify_charger_event(this_chip,
|
||||
NOTIFY_EVENT_TYPE_POWER_WATT);
|
||||
mutex_unlock(&this_chip->charger_lock);
|
||||
cancel_delayed_work(&this_chip->heartbeat_work);
|
||||
schedule_delayed_work(&this_chip->heartbeat_work,
|
||||
|
|
@ -1683,6 +1687,11 @@ static void mmi_notify_charger_event(struct mmi_charger_chip *chip, int type)
|
|||
"POWER_SUPPLY_VBUS_PRESENT=%s",
|
||||
chip->vbus_present? "true" : "false");
|
||||
break;
|
||||
case NOTIFY_EVENT_TYPE_POWER_WATT:
|
||||
scnprintf(event_string, CHG_SHOW_MAX_SIZE,
|
||||
"POWER_SUPPLY_POWER_WATT=%d",
|
||||
chip->power_watt / 1000);
|
||||
break;
|
||||
default:
|
||||
mmi_err(chip, "Invalid notify event type %d\n", type);
|
||||
kfree(event_string);
|
||||
|
|
@ -1888,6 +1897,7 @@ static void mmi_update_battery_status(struct mmi_charger_chip *chip)
|
|||
struct mmi_battery_info *batt_info = NULL;
|
||||
bool vbus_present = false;
|
||||
bool lpd_present = false;
|
||||
int power_watt = 0;
|
||||
|
||||
mutex_lock(&chip->battery_lock);
|
||||
list_for_each_entry(charger, &chip->charger_list, list) {
|
||||
|
|
@ -1917,6 +1927,9 @@ static void mmi_update_battery_status(struct mmi_charger_chip *chip)
|
|||
if (battery->charger_rate < charger_rate)
|
||||
battery->charger_rate = charger_rate;
|
||||
|
||||
if (charger->chg_info.chrg_pmax_mw > power_watt)
|
||||
power_watt = charger->chg_info.chrg_pmax_mw;
|
||||
|
||||
/* update charging status */
|
||||
if (batt_info->batt_status == POWER_SUPPLY_STATUS_FULL ||
|
||||
battery->status == POWER_SUPPLY_STATUS_FULL ||
|
||||
|
|
@ -2006,6 +2019,13 @@ static void mmi_update_battery_status(struct mmi_charger_chip *chip)
|
|||
vbus_present? "present" : "absent");
|
||||
}
|
||||
|
||||
if (chip->power_watt != power_watt) {
|
||||
mmi_changed = true;
|
||||
chip->power_watt = power_watt;
|
||||
mmi_notify_charger_event(chip, NOTIFY_EVENT_TYPE_POWER_WATT);
|
||||
mmi_info(chip, "charger power is %d mW\n", power_watt);
|
||||
}
|
||||
|
||||
list_for_each_entry(battery, &chip->battery_list, list) {
|
||||
if (batt_health == POWER_SUPPLY_HEALTH_UNKNOWN) {
|
||||
batt_health = battery->health;
|
||||
|
|
|
|||
Loading…
Reference in a new issue