]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
rtc: sh: remove update interrupt handling
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Thu, 27 Feb 2025 13:42:57 +0000 (14:42 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Tue, 8 Apr 2025 13:56:19 +0000 (15:56 +0200)
Since commit e428c6a2772b ("RTC: Clean out UIE icotl implementations"),
the flag for UIE cannot be set anymore. Because UIE is now handled via
regular alarms and a timerqueue by the RTC core, the UIE handling code
can simply go away now.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Link: https://lore.kernel.org/r/20250227134256.9167-12-wsa+renesas@sang-engineering.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-sh.c

index 3409f5764224855271731523049772d30ebd6946..f8227a71084a9fc120b4a30370584fc6baa79399 100644 (file)
@@ -75,7 +75,6 @@
 /* Period Bits */
 #define PF_HP          0x100   /* Enable Half Period to support 8,32,128Hz */
 #define PF_COUNT       0x200   /* Half periodic counter */
-#define PF_OXS         0x400   /* Periodic One x Second */
 #define PF_KOU         0x800   /* Kernel or User periodic request 1=kernel */
 #define PF_MASK                0xf00
 
@@ -107,22 +106,6 @@ struct sh_rtc {
        unsigned short          periodic_freq;
 };
 
-static int __sh_rtc_interrupt(struct sh_rtc *rtc)
-{
-       unsigned int tmp, pending;
-
-       tmp = readb(rtc->regbase + RCR1);
-       pending = tmp & RCR1_CF;
-       tmp &= ~RCR1_CF;
-       writeb(tmp, rtc->regbase + RCR1);
-
-       /* Users have requested One x Second IRQ */
-       if (pending && rtc->periodic_freq & PF_OXS)
-               rtc_update_irq(rtc->rtc_dev, 1, RTC_UF | RTC_IRQF);
-
-       return pending;
-}
-
 static int __sh_rtc_alarm(struct sh_rtc *rtc)
 {
        unsigned int tmp, pending;
@@ -162,18 +145,6 @@ static int __sh_rtc_periodic(struct sh_rtc *rtc)
        return pending;
 }
 
-static irqreturn_t sh_rtc_interrupt(int irq, void *dev_id)
-{
-       struct sh_rtc *rtc = dev_id;
-       int ret;
-
-       spin_lock(&rtc->lock);
-       ret = __sh_rtc_interrupt(rtc);
-       spin_unlock(&rtc->lock);
-
-       return IRQ_RETVAL(ret);
-}
-
 static irqreturn_t sh_rtc_alarm(int irq, void *dev_id)
 {
        struct sh_rtc *rtc = dev_id;
@@ -204,8 +175,7 @@ static irqreturn_t sh_rtc_shared(int irq, void *dev_id)
        int ret;
 
        spin_lock(&rtc->lock);
-       ret = __sh_rtc_interrupt(rtc);
-       ret |= __sh_rtc_alarm(rtc);
+       ret = __sh_rtc_alarm(rtc);
        ret |= __sh_rtc_periodic(rtc);
        spin_unlock(&rtc->lock);
 
@@ -236,9 +206,6 @@ static int sh_rtc_proc(struct device *dev, struct seq_file *seq)
        struct sh_rtc *rtc = dev_get_drvdata(dev);
        unsigned int tmp;
 
-       tmp = readb(rtc->regbase + RCR1);
-       seq_printf(seq, "carry_IRQ\t: %s\n", (tmp & RCR1_CIE) ? "yes" : "no");
-
        tmp = readb(rtc->regbase + RCR2);
        seq_printf(seq, "periodic_IRQ\t: %s\n",
                   (tmp & RCR2_PESMASK) ? "yes" : "no");
@@ -320,10 +287,6 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
                tm->tm_sec--;
 #endif
 
-       /* only keep the carry interrupt enabled if UIE is on */
-       if (!(rtc->periodic_freq & PF_OXS))
-               sh_rtc_setcie(dev, 0);
-
        dev_dbg(dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
                "mday=%d, mon=%d, year=%d, wday=%d\n",
                __func__,
@@ -577,15 +540,6 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
                        goto err_unmap;
                }
 
-               ret = devm_request_irq(&pdev->dev, rtc->carry_irq,
-                               sh_rtc_interrupt, 0, "sh-rtc carry", rtc);
-               if (unlikely(ret)) {
-                       dev_err(&pdev->dev,
-                               "request carry IRQ failed with %d, IRQ %d\n",
-                               ret, rtc->carry_irq);
-                       goto err_unmap;
-               }
-
                ret = devm_request_irq(&pdev->dev, rtc->alarm_irq,
                                sh_rtc_alarm, 0, "sh-rtc alarm", rtc);
                if (unlikely(ret)) {