diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c index 5252ce4cbda4ec..68cfb6d6e7efaa 100644 --- a/drivers/rtc/rtc-sun6i.c +++ b/drivers/rtc/rtc-sun6i.c @@ -679,7 +679,6 @@ static const struct rtc_class_ops sun6i_rtc_ops = { .alarm_irq_enable = sun6i_rtc_alarm_irq_enable }; -#ifdef CONFIG_PM_SLEEP /* Enable IRQ wake on suspend, to wake up from RTC. */ static int sun6i_rtc_suspend(struct device *dev) { @@ -692,7 +691,7 @@ static int sun6i_rtc_suspend(struct device *dev) } /* Disable IRQ wake on resume. */ -static int sun6i_rtc_resume(struct device *dev) +static int __maybe_unused sun6i_rtc_resume(struct device *dev) { struct sun6i_rtc_dev *chip = dev_get_drvdata(dev); @@ -701,7 +700,6 @@ static int sun6i_rtc_resume(struct device *dev) return 0; } -#endif static SIMPLE_DEV_PM_OPS(sun6i_rtc_pm_ops, sun6i_rtc_suspend, sun6i_rtc_resume); @@ -817,6 +815,11 @@ static int sun6i_rtc_probe(struct platform_device *pdev) return 0; } +static void sun6i_rtc_shutdown(struct platform_device *pdev) +{ + sun6i_rtc_suspend(&pdev->dev); +} + /* * As far as RTC functionality goes, all models are the same. The * datasheets claim that different models have different number of @@ -839,6 +842,7 @@ MODULE_DEVICE_TABLE(of, sun6i_rtc_dt_ids); static struct platform_driver sun6i_rtc_driver = { .probe = sun6i_rtc_probe, + .shutdown = sun6i_rtc_shutdown, .driver = { .name = "sun6i-rtc", .of_match_table = sun6i_rtc_dt_ids,