spin_lock_irqsave(&psy->changed_lock, flags);
}
if (!psy->changed)
- wake_unlock(&psy->work_wake_lock);
+ pm_relax(psy->dev);
spin_unlock_irqrestore(&psy->changed_lock, flags);
}
spin_lock_irqsave(&psy->changed_lock, flags);
psy->changed = true;
- wake_lock(&psy->work_wake_lock);
+ pm_stay_awake(psy->dev);
spin_unlock_irqrestore(&psy->changed_lock, flags);
schedule_work(&psy->changed_work);
}
goto device_add_failed;
spin_lock_init(&psy->changed_lock);
- wake_lock_init(&psy->work_wake_lock, WAKE_LOCK_SUSPEND, "power-supply");
+ rc = device_init_wakeup(dev, true);
+ if (rc)
+ goto wakeup_init_failed;
rc = psy_register_thermal(psy);
if (rc)
register_cooler_failed:
psy_unregister_thermal(psy);
register_thermal_failed:
- wake_lock_destroy(&psy->work_wake_lock);
+wakeup_init_failed:
device_del(dev);
kobject_set_name_failed:
device_add_failed:
power_supply_remove_triggers(psy);
psy_unregister_cooler(psy);
psy_unregister_thermal(psy);
- wake_lock_destroy(&psy->work_wake_lock);
device_unregister(psy->dev);
}
EXPORT_SYMBOL_GPL(power_supply_unregister);
#ifndef __LINUX_POWER_SUPPLY_H__
#define __LINUX_POWER_SUPPLY_H__
-#include <linux/wakelock.h>
#include <linux/workqueue.h>
#include <linux/leds.h>
struct work_struct changed_work;
spinlock_t changed_lock;
bool changed;
- struct wake_lock work_wake_lock;
#ifdef CONFIG_THERMAL
struct thermal_zone_device *tzd;
struct thermal_cooling_device *tcd;