]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/rtc/rtc-max77686.c
rtc: max77686: Allow the max77686 rtc to wakeup the system
[linux-beck.git] / drivers / rtc / rtc-max77686.c
index d20a7f0786ebd9540625caa57c7609412569354f..c1c6055ccb71e4212767b1d26500fa8ddde475cb 100644 (file)
@@ -583,6 +583,33 @@ static void max77686_rtc_shutdown(struct platform_device *pdev)
 #endif /* MAX77686_RTC_WTSR_SMPL */
 }
 
+#ifdef CONFIG_PM_SLEEP
+static int max77686_rtc_suspend(struct device *dev)
+{
+       if (device_may_wakeup(dev)) {
+               struct max77686_rtc_info *info = dev_get_drvdata(dev);
+
+               return enable_irq_wake(info->virq);
+       }
+
+       return 0;
+}
+
+static int max77686_rtc_resume(struct device *dev)
+{
+       if (device_may_wakeup(dev)) {
+               struct max77686_rtc_info *info = dev_get_drvdata(dev);
+
+               return disable_irq_wake(info->virq);
+       }
+
+       return 0;
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(max77686_rtc_pm_ops,
+                        max77686_rtc_suspend, max77686_rtc_resume);
+
 static const struct platform_device_id rtc_id[] = {
        { "max77686-rtc", 0 },
        {},
@@ -592,6 +619,7 @@ static struct platform_driver max77686_rtc_driver = {
        .driver         = {
                .name   = "max77686-rtc",
                .owner  = THIS_MODULE,
+               .pm     = &max77686_rtc_pm_ops,
        },
        .probe          = max77686_rtc_probe,
        .shutdown       = max77686_rtc_shutdown,