Merge tag 'dt-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / drivers / clocksource / timer-fttmr010.c
index edb1d5f..126fb1f 100644 (file)
@@ -271,9 +271,7 @@ static irqreturn_t ast2600_timer_interrupt(int irq, void *dev_id)
 }
 
 static int __init fttmr010_common_init(struct device_node *np,
-               bool is_aspeed,
-               int (*timer_shutdown)(struct clock_event_device *),
-               irq_handler_t irq_handler)
+                                      bool is_aspeed, bool is_ast2600)
 {
        struct fttmr010 *fttmr010;
        int irq;
@@ -374,8 +372,6 @@ static int __init fttmr010_common_init(struct device_node *np,
                                     fttmr010->tick_rate);
        }
 
-       fttmr010->timer_shutdown = timer_shutdown;
-
        /*
         * Setup clockevent timer (interrupt-driven) on timer 1.
         */
@@ -383,8 +379,18 @@ static int __init fttmr010_common_init(struct device_node *np,
        writel(0, fttmr010->base + TIMER1_LOAD);
        writel(0, fttmr010->base + TIMER1_MATCH1);
        writel(0, fttmr010->base + TIMER1_MATCH2);
-       ret = request_irq(irq, irq_handler, IRQF_TIMER,
-                         "FTTMR010-TIMER1", &fttmr010->clkevt);
+
+       if (is_ast2600) {
+               fttmr010->timer_shutdown = ast2600_timer_shutdown;
+               ret = request_irq(irq, ast2600_timer_interrupt,
+                                 IRQF_TIMER, "FTTMR010-TIMER1",
+                                 &fttmr010->clkevt);
+       } else {
+               fttmr010->timer_shutdown = fttmr010_timer_shutdown;
+               ret = request_irq(irq, fttmr010_timer_interrupt,
+                                 IRQF_TIMER, "FTTMR010-TIMER1",
+                                 &fttmr010->clkevt);
+       }
        if (ret) {
                pr_err("FTTMR010-TIMER1 no IRQ\n");
                goto out_unmap;
@@ -432,23 +438,17 @@ out_disable_clock:
 
 static __init int ast2600_timer_init(struct device_node *np)
 {
-       return fttmr010_common_init(np, true,
-                       ast2600_timer_shutdown,
-                       ast2600_timer_interrupt);
+       return fttmr010_common_init(np, true, true);
 }
 
 static __init int aspeed_timer_init(struct device_node *np)
 {
-       return fttmr010_common_init(np, true,
-                       fttmr010_timer_shutdown,
-                       fttmr010_timer_interrupt);
+       return fttmr010_common_init(np, true, false);
 }
 
 static __init int fttmr010_timer_init(struct device_node *np)
 {
-       return fttmr010_common_init(np, false,
-                       fttmr010_timer_shutdown,
-                       fttmr010_timer_interrupt);
+       return fttmr010_common_init(np, false, false);
 }
 
 TIMER_OF_DECLARE(fttmr010, "faraday,fttmr010", fttmr010_timer_init);