diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
index 3bcc7cf..54a3b5e 100644
--- a/drivers/rtc/interface.c
+++ b/drivers/rtc/interface.c
@@ -778,16 +778,10 @@ static int rtc_timer_enqueue(struct rtc_device
*rtc, struct rtc_timer *timer)

 static void rtc_alarm_disable(struct rtc_device *rtc)
 {
-	struct rtc_wkalrm alarm;
-	struct rtc_time tm;
-
-	__rtc_read_time(rtc, &tm);
-
-	alarm.time = rtc_ktime_to_tm(ktime_add(rtc_tm_to_ktime(tm),
-				     ktime_set(300, 0)));
-	alarm.enabled = 0;
+	if (!rtc->ops || !rtc->ops->alarm_irq_enable)
+		return;

-	___rtc_set_alarm(rtc, &alarm);
+	rtc->ops->alarm_irq_enable(rtc->dev.parent, false);
 }

