diff options
author | Jonghwa Lee <jonghwa3.lee@samsung.com> | 2014-09-11 20:22:23 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 12:00:56 +0900 |
commit | cce628ffe47dc8b472eb5c1f5a6fcabbefda129c (patch) | |
tree | aa5b837d971e6992ef8a320ffe1bf645d33b6be6 /drivers | |
parent | 4f8d67564289768976d5a1b91b7b0b42506a5386 (diff) | |
download | linux-3.10-cce628ffe47dc8b472eb5c1f5a6fcabbefda129c.tar.gz linux-3.10-cce628ffe47dc8b472eb5c1f5a6fcabbefda129c.tar.bz2 linux-3.10-cce628ffe47dc8b472eb5c1f5a6fcabbefda129c.zip |
power: charger-manager: Use power_supply_changed() not private uevent.
Whenever battery status is changed, charger manager tries to trigger uevent
through private interface. This patch modifies it to use power_supply_changed()
since it belongs to power supply subsystem.
Change-Id: I9f25664a2196745f3a303d57ded073f5eb604180
Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/power/charger-manager.c | 81 |
1 files changed, 6 insertions, 75 deletions
diff --git a/drivers/power/charger-manager.c b/drivers/power/charger-manager.c index a8c73db2df2..1917a263472 100644 --- a/drivers/power/charger-manager.c +++ b/drivers/power/charger-manager.c @@ -35,18 +35,6 @@ #define CM_DEFAULT_RECHARGE_TEMP_DIFF 50 #define CM_DEFAULT_CHARGE_TEMP_MAX 500 -static const char * const default_event_names[] = { - [CM_EVENT_UNKNOWN] = "Unknown", - [CM_EVENT_BATT_FULL] = "Battery Full", - [CM_EVENT_BATT_IN] = "Battery Inserted", - [CM_EVENT_BATT_OUT] = "Battery Pulled Out", - [CM_EVENT_BATT_OVERHEAT] = "Battery Overheat", - [CM_EVENT_BATT_COLD] = "Battery Cold", - [CM_EVENT_EXT_PWR_IN_OUT] = "External Power Attach/Detach", - [CM_EVENT_CHG_START_STOP] = "Charging Start/Stop", - [CM_EVENT_OTHERS] = "Other battery events" -}; - /* * Regard CM_JIFFIES_SMALL jiffies is small enough to ignore for * delayed works so that we can run delayed works with CM_JIFFIES_SMALL @@ -63,8 +51,6 @@ static const char * const default_event_names[] = { */ #define CM_RTC_SMALL (2) -#define UEVENT_BUF_SIZE 32 - static LIST_HEAD(cm_list); static DEFINE_MUTEX(cm_list_mtx); @@ -401,61 +387,6 @@ static int try_charger_restart(struct charger_manager *cm) } /** - * uevent_notify - Let users know something has changed. - * @cm: the Charger Manager representing the battery. - * @event: the event string. - * - * If @event is null, it implies that uevent_notify is called - * by resume function. When called in the resume function, cm_suspended - * should be already reset to false in order to let uevent_notify - * notify the recent event during the suspend to users. While - * suspended, uevent_notify does not notify users, but tracks - * events so that uevent_notify can notify users later after resumed. - */ -static void uevent_notify(struct charger_manager *cm, const char *event) -{ - static char env_str[UEVENT_BUF_SIZE + 1] = ""; - static char env_str_save[UEVENT_BUF_SIZE + 1] = ""; - - if (cm_suspended) { - /* Nothing in suspended-event buffer */ - if (env_str_save[0] == 0) { - if (!strncmp(env_str, event, UEVENT_BUF_SIZE)) - return; /* status not changed */ - strncpy(env_str_save, event, UEVENT_BUF_SIZE); - return; - } - - if (!strncmp(env_str_save, event, UEVENT_BUF_SIZE)) - return; /* Duplicated. */ - strncpy(env_str_save, event, UEVENT_BUF_SIZE); - return; - } - - if (event == NULL) { - /* No messages pending */ - if (!env_str_save[0]) - return; - - strncpy(env_str, env_str_save, UEVENT_BUF_SIZE); - kobject_uevent(&cm->dev->kobj, KOBJ_CHANGE); - env_str_save[0] = 0; - - return; - } - - /* status not changed */ - if (!strncmp(env_str, event, UEVENT_BUF_SIZE)) - return; - - /* save the status and notify the update */ - strncpy(env_str, event, UEVENT_BUF_SIZE); - kobject_uevent(&cm->dev->kobj, KOBJ_CHANGE); - - dev_info(cm->dev, "%s\n", event); -} - -/** * fullbatt_vchk - Check voltage drop some times after "FULL" event. * * If a user has designated "fullbatt_vchkdrop_uV" values with @@ -485,7 +416,7 @@ static void fullbatt_vchk(struct charger_manager *cm) if (diff > desc->fullbatt_vchkdrop_uV) { try_charger_restart(cm); - uevent_notify(cm, "Recharging"); + power_supply_changed(&cm->charger_psy); } } @@ -516,7 +447,7 @@ static int check_charging_duration(struct charger_manager *cm) if (duration > desc->charging_max_duration_ms) { dev_info(cm->dev, "Charging duration exceed %ums\n", desc->charging_max_duration_ms); - uevent_notify(cm, "Discharging"); + power_supply_changed(&cm->charger_psy); try_charger_enable(cm, false); ret = true; } @@ -527,7 +458,7 @@ static int check_charging_duration(struct charger_manager *cm) is_ext_pwr_online(cm)) { dev_info(cm->dev, "Discharging duration exceed %ums\n", desc->discharging_max_duration_ms); - uevent_notify(cm, "Recharging"); + power_supply_changed(&cm->charger_psy); try_charger_enable(cm, true); ret = true; } @@ -606,7 +537,7 @@ static bool _cm_monitor(struct charger_manager *cm) if (temp_alrt) { cm->emergency_stop = temp_alrt; if (!try_charger_enable(cm, false)) - uevent_notify(cm, default_event_names[temp_alrt]); + power_supply_changed(&cm->charger_psy); /* * Check whole charging duration and discharing duration @@ -631,7 +562,7 @@ static bool _cm_monitor(struct charger_manager *cm) } else if (!cm->emergency_stop && is_full_charged(cm) && cm->charger_enabled) { dev_info(cm->dev, "EVENT_HANDLE: Battery Fully Charged\n"); - uevent_notify(cm, default_event_names[CM_EVENT_BATT_FULL]); + power_supply_changed(&cm->charger_psy); try_charger_enable(cm, false); @@ -640,7 +571,7 @@ static bool _cm_monitor(struct charger_manager *cm) cm->emergency_stop = 0; if (is_ext_pwr_online(cm)) { if (!try_charger_enable(cm, true)) - uevent_notify(cm, "CHARGING"); + power_supply_changed(&cm->charger_psy); } } |