.. | .. |
---|
519 | 519 | /* Write to Alarm register */ |
---|
520 | 520 | writel_relaxed(alrmar, rtc->base + regs->alrmar); |
---|
521 | 521 | |
---|
522 | | - if (alrm->enabled) |
---|
523 | | - stm32_rtc_alarm_irq_enable(dev, 1); |
---|
524 | | - else |
---|
525 | | - stm32_rtc_alarm_irq_enable(dev, 0); |
---|
526 | | - |
---|
| 522 | + stm32_rtc_alarm_irq_enable(dev, alrm->enabled); |
---|
527 | 523 | end: |
---|
528 | 524 | stm32_rtc_wpr_lock(rtc); |
---|
529 | 525 | |
---|
.. | .. |
---|
697 | 693 | { |
---|
698 | 694 | struct stm32_rtc *rtc; |
---|
699 | 695 | const struct stm32_rtc_registers *regs; |
---|
700 | | - struct resource *res; |
---|
701 | 696 | int ret; |
---|
702 | 697 | |
---|
703 | 698 | rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); |
---|
704 | 699 | if (!rtc) |
---|
705 | 700 | return -ENOMEM; |
---|
706 | 701 | |
---|
707 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
708 | | - rtc->base = devm_ioremap_resource(&pdev->dev, res); |
---|
| 702 | + rtc->base = devm_platform_ioremap_resource(pdev, 0); |
---|
709 | 703 | if (IS_ERR(rtc->base)) |
---|
710 | 704 | return PTR_ERR(rtc->base); |
---|
711 | 705 | |
---|
.. | .. |
---|
780 | 774 | |
---|
781 | 775 | rtc->irq_alarm = platform_get_irq(pdev, 0); |
---|
782 | 776 | if (rtc->irq_alarm <= 0) { |
---|
783 | | - dev_err(&pdev->dev, "no alarm irq\n"); |
---|
784 | 777 | ret = rtc->irq_alarm; |
---|
785 | 778 | goto err; |
---|
786 | 779 | } |
---|
.. | .. |
---|
906 | 899 | } |
---|
907 | 900 | |
---|
908 | 901 | ret = stm32_rtc_wait_sync(rtc); |
---|
909 | | - if (ret < 0) |
---|
| 902 | + if (ret < 0) { |
---|
| 903 | + if (rtc->data->has_pclk) |
---|
| 904 | + clk_disable_unprepare(rtc->pclk); |
---|
910 | 905 | return ret; |
---|
| 906 | + } |
---|
911 | 907 | |
---|
912 | 908 | if (device_may_wakeup(dev)) |
---|
913 | 909 | return disable_irq_wake(rtc->irq_alarm); |
---|