]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
rtc: sh: assign correct interrupts with DT
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Thu, 27 Feb 2025 13:42:56 +0000 (14:42 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:04:06 +0000 (11:04 +0100)
[ Upstream commit 8f2efdbc303fe7baa83843d3290dd6ea5ba3276c ]

The DT bindings for this driver define the interrupts in the order as
they are numbered in the interrupt controller. The old platform_data,
however, listed them in a different order. So, for DT based platforms,
they are mixed up. Assign them specifically for DT, so we can keep the
bindings stable. After the fix, 'rtctest' passes again on the Renesas
Genmai board (RZ-A1 / R7S72100).

Fixes: dab5aec64bf5 ("rtc: sh: add support for rza series")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Link: https://lore.kernel.org/r/20250227134256.9167-11-wsa+renesas@sang-engineering.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/rtc/rtc-sh.c

index 9167b48014a1584c0b5a2f965e2ba9f2daf3e7b7..7d2367104a9bf8b5256929826d72c8aa5d781da9 100644 (file)
@@ -485,9 +485,15 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       rtc->periodic_irq = ret;
-       rtc->carry_irq = platform_get_irq(pdev, 1);
-       rtc->alarm_irq = platform_get_irq(pdev, 2);
+       if (!pdev->dev.of_node) {
+               rtc->periodic_irq = ret;
+               rtc->carry_irq = platform_get_irq(pdev, 1);
+               rtc->alarm_irq = platform_get_irq(pdev, 2);
+       } else {
+               rtc->alarm_irq = ret;
+               rtc->periodic_irq = platform_get_irq(pdev, 1);
+               rtc->carry_irq = platform_get_irq(pdev, 2);
+       }
 
        res = platform_get_resource(pdev, IORESOURCE_IO, 0);
        if (!res)