From: Esben Haabendal Date: Fri, 16 May 2025 07:23:39 +0000 (+0200) Subject: rtc: interface: Ensure alarm irq is enabled when UIE is enabled X-Git-Tag: v6.18-rc1~5^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9db26d5855d0374d4652487bfb5aacf40821c469;p=thirdparty%2Fkernel%2Flinux.git rtc: interface: Ensure alarm irq is enabled when UIE is enabled When setting a normal alarm, user-space is responsible for using RTC_AIE_ON/RTC_AIE_OFF to control if alarm irq should be enabled. But when RTC_UIE_ON is used, interrupts must be enabled so that the requested irq events are generated. When RTC_UIE_OFF is used, alarm irq is disabled if there are no other alarms queued, so this commit brings symmetry to that. Signed-off-by: Esben Haabendal Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20250516-rtc-uie-irq-fixes-v2-5-3de8e530a39e@geanix.com Signed-off-by: Alexandre Belloni --- diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index 6fafe2a4ae4f..b8b298efd9a9 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c @@ -617,6 +617,10 @@ int rtc_update_irq_enable(struct rtc_device *rtc, unsigned int enabled) rtc->uie_rtctimer.node.expires = ktime_add(now, onesec); rtc->uie_rtctimer.period = ktime_set(1, 0); err = rtc_timer_enqueue(rtc, &rtc->uie_rtctimer); + if (!err && rtc->ops && rtc->ops->alarm_irq_enable) + err = rtc->ops->alarm_irq_enable(rtc->dev.parent, 1); + if (err) + goto out; } else { rtc_timer_remove(rtc, &rtc->uie_rtctimer); }