hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/rtc/rtc-stm32.c
....@@ -519,11 +519,7 @@
519519 /* Write to Alarm register */
520520 writel_relaxed(alrmar, rtc->base + regs->alrmar);
521521
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);
527523 end:
528524 stm32_rtc_wpr_lock(rtc);
529525
....@@ -697,15 +693,13 @@
697693 {
698694 struct stm32_rtc *rtc;
699695 const struct stm32_rtc_registers *regs;
700
- struct resource *res;
701696 int ret;
702697
703698 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
704699 if (!rtc)
705700 return -ENOMEM;
706701
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);
709703 if (IS_ERR(rtc->base))
710704 return PTR_ERR(rtc->base);
711705
....@@ -780,7 +774,6 @@
780774
781775 rtc->irq_alarm = platform_get_irq(pdev, 0);
782776 if (rtc->irq_alarm <= 0) {
783
- dev_err(&pdev->dev, "no alarm irq\n");
784777 ret = rtc->irq_alarm;
785778 goto err;
786779 }
....@@ -906,8 +899,11 @@
906899 }
907900
908901 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);
910905 return ret;
906
+ }
911907
912908 if (device_may_wakeup(dev))
913909 return disable_irq_wake(rtc->irq_alarm);