mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
rtc: mv: add suspend/resume support for wakeup
Add PM suspend/resume callbacks to enable/disable IRQ wake for the RTC alarm interrupt. This allows the RTC alarm to wake the system from STR (e.g. via rtcwake -m mem -s N). Without this, the RTC IRQ is masked during suspend by the MPIC's IRQCHIP_MASK_ON_SUSPEND behavior, preventing alarm-based wakeup. Signed-off-by: Xue Lei <Xue.Lei@windriver.com> Link: https://patch.msgid.link/20260611023350.1370881-1-Xue.Lei@windriver.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
3319cfeeb8
commit
851d961ff2
|
|
@ -301,6 +301,28 @@ static const struct of_device_id rtc_mv_of_match_table[] = {
|
|||
MODULE_DEVICE_TABLE(of, rtc_mv_of_match_table);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int mv_rtc_suspend(struct device *dev)
|
||||
{
|
||||
struct rtc_plat_data *pdata = dev_get_drvdata(dev);
|
||||
|
||||
if (device_may_wakeup(dev) && pdata->irq >= 0)
|
||||
enable_irq_wake(pdata->irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mv_rtc_resume(struct device *dev)
|
||||
{
|
||||
struct rtc_plat_data *pdata = dev_get_drvdata(dev);
|
||||
|
||||
if (device_may_wakeup(dev) && pdata->irq >= 0)
|
||||
disable_irq_wake(pdata->irq);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(mv_rtc_pm_ops, mv_rtc_suspend, mv_rtc_resume);
|
||||
|
||||
/*
|
||||
* mv_rtc_remove() lives in .exit.text. For drivers registered via
|
||||
* module_platform_driver_probe() this is ok because they cannot get unbound at
|
||||
|
|
@ -312,6 +334,7 @@ static struct platform_driver mv_rtc_driver __refdata = {
|
|||
.driver = {
|
||||
.name = "rtc-mv",
|
||||
.of_match_table = of_match_ptr(rtc_mv_of_match_table),
|
||||
.pm = &mv_rtc_pm_ops,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user