From 3b9b90f68f415e8f083ed01b7b220f51b337aadb Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Sat, 30 Jul 2011 22:57:48 +0800 Subject: [PATCH] Revert "power_supply: Hold a wake_lock while power supply change notifications are pending" This reverts commit cd1ffe8d5d97279f21dfc7098985a550fc0f428b. --- drivers/power/power_supply_core.c | 29 ++++------------------------- include/linux/power_supply.h | 4 ---- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 381460a1ca9c..cce75b40b435 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c @@ -38,40 +38,23 @@ static int __power_supply_changed_work(struct device *dev, void *data) static void power_supply_changed_work(struct work_struct *work) { - unsigned long flags; struct power_supply *psy = container_of(work, struct power_supply, changed_work); dev_dbg(psy->dev, "%s\n", __func__); - spin_lock_irqsave(&psy->changed_lock, flags); - if (psy->changed) { - psy->changed = false; - spin_unlock_irqrestore(&psy->changed_lock, flags); + class_for_each_device(power_supply_class, NULL, psy, + __power_supply_changed_work); - class_for_each_device(power_supply_class, NULL, psy, - __power_supply_changed_work); + power_supply_update_leds(psy); - power_supply_update_leds(psy); - - kobject_uevent(&psy->dev->kobj, KOBJ_CHANGE); - spin_lock_irqsave(&psy->changed_lock, flags); - } - if (!psy->changed) - wake_unlock(&psy->work_wake_lock); - spin_unlock_irqrestore(&psy->changed_lock, flags); + kobject_uevent(&psy->dev->kobj, KOBJ_CHANGE); } void power_supply_changed(struct power_supply *psy) { - unsigned long flags; - dev_dbg(psy->dev, "%s\n", __func__); - spin_lock_irqsave(&psy->changed_lock, flags); - psy->changed = true; - wake_lock(&psy->work_wake_lock); - spin_unlock_irqrestore(&psy->changed_lock, flags); schedule_work(&psy->changed_work); } EXPORT_SYMBOL_GPL(power_supply_changed); @@ -173,8 +156,6 @@ int power_supply_register(struct device *parent, struct power_supply *psy) } INIT_WORK(&psy->changed_work, power_supply_changed_work); - spin_lock_init(&psy->changed_lock); - wake_lock_init(&psy->work_wake_lock, WAKE_LOCK_SUSPEND, "power-supply"); rc = power_supply_create_attrs(psy); if (rc) @@ -191,7 +172,6 @@ int power_supply_register(struct device *parent, struct power_supply *psy) create_triggers_failed: power_supply_remove_attrs(psy); create_attrs_failed: - wake_lock_destroy(&psy->work_wake_lock); device_unregister(psy->dev); dev_create_failed: success: @@ -204,7 +184,6 @@ void power_supply_unregister(struct power_supply *psy) flush_scheduled_work(); power_supply_remove_triggers(psy); power_supply_remove_attrs(psy); - wake_lock_destroy(&psy->work_wake_lock); device_unregister(psy->dev); } EXPORT_SYMBOL_GPL(power_supply_unregister); diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index 01fa7c2428fe..b5d096d3a9be 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -14,7 +14,6 @@ #define __LINUX_POWER_SUPPLY_H__ #include -#include #include #include @@ -153,9 +152,6 @@ struct power_supply { /* private */ struct device *dev; struct work_struct changed_work; - spinlock_t changed_lock; - bool changed; - struct wake_lock work_wake_lock; #ifdef CONFIG_LEDS_TRIGGERS struct led_trigger *charging_full_trig; -- 2.34.1