diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
index b6bf57f25cc9e520ca31d642eea1616b9132f82b..601b053bc0e5782924ff2d3a3c97d332d26c2ac3 100644
--- a/drivers/rtc/interface.c
+++ b/drivers/rtc/interface.c
@@ -688,7 +688,7 @@ int rtc_irq_set_freq(struct rtc_device *rtc, struct rtc_task *task, int freq)
 	int err = 0;
 	unsigned long flags;
 
-	if (freq <= 0)
+	if (freq <= 0 || freq > 5000)
 		return -EINVAL;
 
 	spin_lock_irqsave(&rtc->irq_task_lock, flags);