Merge tag 'mvebu-dt-fixes-non-crit-3.15' of git://git.infradead.org/linux-mvebu into...
[deliverable/linux.git] / drivers / rtc / rtc-sirfsoc.c
index 9e3cbce56ec1ccca2e62541361d7d4fb288c4a8c..76e38007ba90a5ae30c4d232f6477ea027f8045a 100644 (file)
@@ -331,39 +331,29 @@ static int sirfsoc_rtc_remove(struct platform_device *pdev)
        return 0;
 }
 
-#ifdef CONFIG_PM
-
+#ifdef CONFIG_PM_SLEEP
 static int sirfsoc_rtc_suspend(struct device *dev)
 {
-       struct platform_device *pdev = to_platform_device(dev);
-       struct sirfsoc_rtc_drv *rtcdrv = platform_get_drvdata(pdev);
+       struct sirfsoc_rtc_drv *rtcdrv = dev_get_drvdata(dev);
        rtcdrv->overflow_rtc =
                sirfsoc_rtc_iobrg_readl(rtcdrv->rtc_base + RTC_SW_VALUE);
 
        rtcdrv->saved_counter =
                sirfsoc_rtc_iobrg_readl(rtcdrv->rtc_base + RTC_CN);
        rtcdrv->saved_overflow_rtc = rtcdrv->overflow_rtc;
-       if (device_may_wakeup(&pdev->dev) && !enable_irq_wake(rtcdrv->irq))
+       if (device_may_wakeup(dev) && !enable_irq_wake(rtcdrv->irq))
                rtcdrv->irq_wake = 1;
 
        return 0;
 }
 
-static int sirfsoc_rtc_freeze(struct device *dev)
-{
-       sirfsoc_rtc_suspend(dev);
-
-       return 0;
-}
-
-static int sirfsoc_rtc_thaw(struct device *dev)
+static int sirfsoc_rtc_resume(struct device *dev)
 {
        u32 tmp;
-       struct sirfsoc_rtc_drv *rtcdrv;
-       rtcdrv = dev_get_drvdata(dev);
+       struct sirfsoc_rtc_drv *rtcdrv = dev_get_drvdata(dev);
 
        /*
-        * if resume from snapshot and the rtc power is losed,
+        * if resume from snapshot and the rtc power is lost,
         * restroe the rtc settings
         */
        if (SIRFSOC_RTC_CLK != sirfsoc_rtc_iobrg_readl(
@@ -403,57 +393,23 @@ static int sirfsoc_rtc_thaw(struct device *dev)
        sirfsoc_rtc_iobrg_writel(rtcdrv->overflow_rtc,
                        rtcdrv->rtc_base + RTC_SW_VALUE);
 
-       return 0;
-}
-
-static int sirfsoc_rtc_resume(struct device *dev)
-{
-       struct platform_device *pdev = to_platform_device(dev);
-       struct sirfsoc_rtc_drv *rtcdrv = platform_get_drvdata(pdev);
-       sirfsoc_rtc_thaw(dev);
-       if (device_may_wakeup(&pdev->dev) && rtcdrv->irq_wake) {
+       if (device_may_wakeup(dev) && rtcdrv->irq_wake) {
                disable_irq_wake(rtcdrv->irq);
                rtcdrv->irq_wake = 0;
        }
 
        return 0;
 }
-
-static int sirfsoc_rtc_restore(struct device *dev)
-{
-       struct platform_device *pdev = to_platform_device(dev);
-       struct sirfsoc_rtc_drv *rtcdrv = platform_get_drvdata(pdev);
-
-       if (device_may_wakeup(&pdev->dev) && rtcdrv->irq_wake) {
-               disable_irq_wake(rtcdrv->irq);
-               rtcdrv->irq_wake = 0;
-       }
-       return 0;
-}
-
-#else
-#define sirfsoc_rtc_suspend    NULL
-#define sirfsoc_rtc_resume     NULL
-#define sirfsoc_rtc_freeze     NULL
-#define sirfsoc_rtc_thaw       NULL
-#define sirfsoc_rtc_restore    NULL
 #endif
 
-static const struct dev_pm_ops sirfsoc_rtc_pm_ops = {
-       .suspend = sirfsoc_rtc_suspend,
-       .resume = sirfsoc_rtc_resume,
-       .freeze = sirfsoc_rtc_freeze,
-       .thaw = sirfsoc_rtc_thaw,
-       .restore = sirfsoc_rtc_restore,
-};
+static SIMPLE_DEV_PM_OPS(sirfsoc_rtc_pm_ops,
+               sirfsoc_rtc_suspend, sirfsoc_rtc_resume);
 
 static struct platform_driver sirfsoc_rtc_driver = {
        .driver = {
                .name = "sirfsoc-rtc",
                .owner = THIS_MODULE,
-#ifdef CONFIG_PM
                .pm = &sirfsoc_rtc_pm_ops,
-#endif
                .of_match_table = sirfsoc_rtc_of_match,
        },
        .probe = sirfsoc_rtc_probe,
This page took 0.024863 seconds and 5 git commands to generate.