aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-snvs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-snvs.c')
-rw-r--r--drivers/rtc/rtc-snvs.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c
index 0479e807a776..d87a85cefb66 100644
--- a/drivers/rtc/rtc-snvs.c
+++ b/drivers/rtc/rtc-snvs.c
@@ -322,6 +322,13 @@ static int snvs_rtc_suspend(struct device *dev)
322 if (device_may_wakeup(dev)) 322 if (device_may_wakeup(dev))
323 enable_irq_wake(data->irq); 323 enable_irq_wake(data->irq);
324 324
325 return 0;
326}
327
328static int snvs_rtc_suspend_noirq(struct device *dev)
329{
330 struct snvs_rtc_data *data = dev_get_drvdata(dev);
331
325 if (data->clk) 332 if (data->clk)
326 clk_disable_unprepare(data->clk); 333 clk_disable_unprepare(data->clk);
327 334
@@ -331,23 +338,28 @@ static int snvs_rtc_suspend(struct device *dev)
331static int snvs_rtc_resume(struct device *dev) 338static int snvs_rtc_resume(struct device *dev)
332{ 339{
333 struct snvs_rtc_data *data = dev_get_drvdata(dev); 340 struct snvs_rtc_data *data = dev_get_drvdata(dev);
334 int ret;
335 341
336 if (device_may_wakeup(dev)) 342 if (device_may_wakeup(dev))
337 disable_irq_wake(data->irq); 343 return disable_irq_wake(data->irq);
338 344
339 if (data->clk) { 345 return 0;
340 ret = clk_prepare_enable(data->clk); 346}
341 if (ret) 347
342 return ret; 348static int snvs_rtc_resume_noirq(struct device *dev)
343 } 349{
350 struct snvs_rtc_data *data = dev_get_drvdata(dev);
351
352 if (data->clk)
353 return clk_prepare_enable(data->clk);
344 354
345 return 0; 355 return 0;
346} 356}
347 357
348static const struct dev_pm_ops snvs_rtc_pm_ops = { 358static const struct dev_pm_ops snvs_rtc_pm_ops = {
349 .suspend_noirq = snvs_rtc_suspend, 359 .suspend = snvs_rtc_suspend,
350 .resume_noirq = snvs_rtc_resume, 360 .suspend_noirq = snvs_rtc_suspend_noirq,
361 .resume = snvs_rtc_resume,
362 .resume_noirq = snvs_rtc_resume_noirq,
351}; 363};
352 364
353#define SNVS_RTC_PM_OPS (&snvs_rtc_pm_ops) 365#define SNVS_RTC_PM_OPS (&snvs_rtc_pm_ops)