|
@@ -639,6 +639,30 @@ static void s5m_rtc_shutdown(struct platform_device *pdev)
|
|
s5m_rtc_enable_smpl(info, false);
|
|
s5m_rtc_enable_smpl(info, false);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int s5m_rtc_resume(struct device *dev)
|
|
|
|
+{
|
|
|
|
+ struct s5m_rtc_info *info = dev_get_drvdata(dev);
|
|
|
|
+ int ret = 0;
|
|
|
|
+
|
|
|
|
+ if (device_may_wakeup(dev))
|
|
|
|
+ ret = disable_irq_wake(info->irq);
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int s5m_rtc_suspend(struct device *dev)
|
|
|
|
+{
|
|
|
|
+ struct s5m_rtc_info *info = dev_get_drvdata(dev);
|
|
|
|
+ int ret = 0;
|
|
|
|
+
|
|
|
|
+ if (device_may_wakeup(dev))
|
|
|
|
+ ret = enable_irq_wake(info->irq);
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static SIMPLE_DEV_PM_OPS(s5m_rtc_pm_ops, s5m_rtc_suspend, s5m_rtc_resume);
|
|
|
|
+
|
|
static const struct platform_device_id s5m_rtc_id[] = {
|
|
static const struct platform_device_id s5m_rtc_id[] = {
|
|
{ "s5m-rtc", 0 },
|
|
{ "s5m-rtc", 0 },
|
|
};
|
|
};
|
|
@@ -647,6 +671,7 @@ static struct platform_driver s5m_rtc_driver = {
|
|
.driver = {
|
|
.driver = {
|
|
.name = "s5m-rtc",
|
|
.name = "s5m-rtc",
|
|
.owner = THIS_MODULE,
|
|
.owner = THIS_MODULE,
|
|
|
|
+ .pm = &s5m_rtc_pm_ops,
|
|
},
|
|
},
|
|
.probe = s5m_rtc_probe,
|
|
.probe = s5m_rtc_probe,
|
|
.shutdown = s5m_rtc_shutdown,
|
|
.shutdown = s5m_rtc_shutdown,
|