olpc_battery: Add wakeup support
Battery and AC events can now be used to wake up the system from suspend. Signed-off-by: Daniel Drake <dsd@laptop.org> Acked-by: Andres Salomon <dilinger@queued.net> Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
This commit is contained in:
parent
c3503fd025
commit
cae659af87
|
@ -533,6 +533,24 @@ void olpc_battery_trigger_uevent(unsigned long cause)
|
||||||
kobject_uevent(&olpc_bat.dev->kobj, KOBJ_CHANGE);
|
kobject_uevent(&olpc_bat.dev->kobj, KOBJ_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int olpc_battery_suspend(struct platform_device *pdev,
|
||||||
|
pm_message_t state)
|
||||||
|
{
|
||||||
|
if (device_may_wakeup(olpc_ac.dev))
|
||||||
|
olpc_ec_wakeup_set(EC_SCI_SRC_ACPWR);
|
||||||
|
else
|
||||||
|
olpc_ec_wakeup_clear(EC_SCI_SRC_ACPWR);
|
||||||
|
|
||||||
|
if (device_may_wakeup(olpc_bat.dev))
|
||||||
|
olpc_ec_wakeup_set(EC_SCI_SRC_BATTERY | EC_SCI_SRC_BATSOC
|
||||||
|
| EC_SCI_SRC_BATERR);
|
||||||
|
else
|
||||||
|
olpc_ec_wakeup_clear(EC_SCI_SRC_BATTERY | EC_SCI_SRC_BATSOC
|
||||||
|
| EC_SCI_SRC_BATERR);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int __devinit olpc_battery_probe(struct platform_device *pdev)
|
static int __devinit olpc_battery_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -578,6 +596,11 @@ static int __devinit olpc_battery_probe(struct platform_device *pdev)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto error_failed;
|
goto error_failed;
|
||||||
|
|
||||||
|
if (olpc_ec_wakeup_available()) {
|
||||||
|
device_set_wakeup_capable(olpc_ac.dev, true);
|
||||||
|
device_set_wakeup_capable(olpc_bat.dev, true);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error_failed:
|
error_failed:
|
||||||
|
@ -612,6 +635,7 @@ static struct platform_driver olpc_battery_drv = {
|
||||||
},
|
},
|
||||||
.probe = olpc_battery_probe,
|
.probe = olpc_battery_probe,
|
||||||
.remove = __devexit_p(olpc_battery_remove),
|
.remove = __devexit_p(olpc_battery_remove),
|
||||||
|
.suspend = olpc_battery_suspend,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init olpc_bat_init(void)
|
static int __init olpc_bat_init(void)
|
||||||
|
|
Loading…
Reference in a new issue