Revert "power_supply: Hold a wake_lock while power supply change notifications are...
author黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:57:48 +0000 (22:57 +0800)
committer黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:57:48 +0000 (22:57 +0800)
This reverts commit cd1ffe8d5d97279f21dfc7098985a550fc0f428b.

drivers/power/power_supply_core.c
include/linux/power_supply.h

index 381460a1ca9c2b447f44081ecba2f9db7a6080ce..cce75b40b4351b3c8de85261855f4b970f2a94ac 100644 (file)
@@ -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);
index 01fa7c2428fef0fc7c26cfe3f720f5ab133567da..b5d096d3a9be22ffccf69782a49dc75c01b7a4a8 100644 (file)
@@ -14,7 +14,6 @@
 #define __LINUX_POWER_SUPPLY_H__
 
 #include <linux/device.h>
-#include <linux/wakelock.h>
 #include <linux/workqueue.h>
 #include <linux/leds.h>
 
@@ -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;