|
@@ -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,
|