google_battery: send uevent when fan level changed
Bug: 197006883
Change-Id: I22194a70874d9e688ccb9bbe7ce8c297fa37c847
Signed-off-by: Ken Yang <[email protected]>
diff --git a/google_battery.c b/google_battery.c
index 350b6a9..88bc0a2 100644
--- a/google_battery.c
+++ b/google_battery.c
@@ -1120,28 +1120,32 @@
const char *reason, void *vote)
{
struct batt_drv *batt_drv = gvotable_get_data(el);
+ const int last_lvl = batt_drv->fan_last_level;
int lvl = GVOTABLE_PTR_TO_INT(vote);
if (!batt_drv)
return 0;
- if (batt_drv->fan_last_level != lvl) {
- pr_debug("FAN_LEVEL %d->%d reason=%s\n",
- batt_drv->fan_last_level, lvl, reason ? reason : "<>");
+ if (batt_drv->fan_last_level == lvl)
+ return 0;
- if (!chg_state_is_disconnected(&batt_drv->chg_state)) {
- logbuffer_log(batt_drv->ttf_stats.ttf_log,
- "FAN_LEVEL %d->%d reason=%s",
- batt_drv->fan_last_level, lvl,
- reason ? reason : "<>");
+ pr_debug("FAN_LEVEL %d->%d reason=%s\n",
+ batt_drv->fan_last_level, lvl, reason ? reason : "<>");
- batt_drv->fan_last_level = lvl;
- if (batt_drv->psy)
- power_supply_changed(batt_drv->psy);
- } else {
- /* Disconnected */
- batt_drv->fan_last_level = lvl;
- }
+ batt_drv->fan_last_level = lvl;
+
+ if (!chg_state_is_disconnected(&batt_drv->chg_state)) {
+
+ logbuffer_log(batt_drv->ttf_stats.ttf_log,
+ "FAN_LEVEL %d->%d reason=%s",
+ last_lvl, lvl,
+ reason ? reason : "<>");
+
+ /*
+ * Send the uevent by kobject API to distinguish the uevent sent by
+ * power_supply_changed() since fan_level is not a standard power_supply_property
+ */
+ kobject_uevent(&batt_drv->device->kobj, KOBJ_CHANGE);
}
return 0;