diff options
Diffstat (limited to 'drivers/rtc/rtc-snvs.c')
-rw-r--r-- | drivers/rtc/rtc-snvs.c | 30 |
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 | |||
328 | static 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) | |||
331 | static int snvs_rtc_resume(struct device *dev) | 338 | static 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; | 348 | static 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 | ||
348 | static const struct dev_pm_ops snvs_rtc_pm_ops = { | 358 | static 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) |