Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bc54e69 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] pxa/sa1100: replace wakeup support



Replace wakeup support using the alarm via the SA1100 RTC driver on
SA1100 and PXA platforms.  This allows RTC alarm wakeup to be enabled
via sysfs using the conventional attributes.

Acked-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 4ae7806f
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -337,6 +337,8 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
	if (IS_ERR(rtc))
		return PTR_ERR(rtc);

	device_init_wakeup(&pdev->dev, 1);

	platform_set_drvdata(pdev, rtc);

	return 0;
@@ -352,9 +354,38 @@ static int sa1100_rtc_remove(struct platform_device *pdev)
	return 0;
}

#ifdef CONFIG_PM
static int sa1100_rtc_suspend(struct platform_device *pdev, pm_message_t state)
{
	if (pdev->dev.power.power_state.event != state.event) {
		if (state.event == PM_EVENT_SUSPEND &&
		    device_may_wakeup(&pdev->dev))
			enable_irq_wake(IRQ_RTCAlrm);

		pdev->dev.power.power_state = state;
	}
	return 0;
}

static int sa1100_rtc_resume(struct platform_device *pdev)
{
	if (pdev->dev.power.power_state.event != PM_EVENT_ON) {
		if (device_may_wakeup(&pdev->dev))
			disable_irq_wake(IRQ_RTCAlrm);
		pdev->dev.power.power_state = PMSG_ON;
	}
	return 0;
}
#else
#define sa1100_rtc_suspend	NULL
#define sa1100_rtc_resume	NULL
#endif

static struct platform_driver sa1100_rtc_driver = {
	.probe		= sa1100_rtc_probe,
	.remove		= sa1100_rtc_remove,
	.suspend	= sa1100_rtc_suspend,
	.resume		= sa1100_rtc_resume,
	.driver		= {
		.name		= "sa1100-rtc",
	},