Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[deliverable/linux.git] / drivers / clocksource / fsl_ftm_timer.c
index 517e1c7624d442f7de842fa011516415d86c66b3..738515b89073ccab553a35d6081ed78787984d12 100644 (file)
@@ -316,15 +316,16 @@ static int __init ftm_calc_closest_round_cyc(unsigned long freq)
        return 0;
 }
 
-static void __init ftm_timer_init(struct device_node *np)
+static int __init ftm_timer_init(struct device_node *np)
 {
        unsigned long freq;
-       int irq;
+       int ret, irq;
 
        priv = kzalloc(sizeof(*priv), GFP_KERNEL);
        if (!priv)
-               return;
+               return -ENOMEM;
 
+       ret = -ENXIO;
        priv->clkevt_base = of_iomap(np, 0);
        if (!priv->clkevt_base) {
                pr_err("ftm: unable to map event timer registers\n");
@@ -337,6 +338,7 @@ static void __init ftm_timer_init(struct device_node *np)
                goto err;
        }
 
+       ret = -EINVAL;
        irq = irq_of_parse_and_map(np, 0);
        if (irq <= 0) {
                pr_err("ftm: unable to get IRQ from DT, %d\n", irq);
@@ -349,18 +351,22 @@ static void __init ftm_timer_init(struct device_node *np)
        if (!freq)
                goto err;
 
-       if (ftm_calc_closest_round_cyc(freq))
+       ret = ftm_calc_closest_round_cyc(freq);
+       if (ret)
                goto err;
 
-       if (ftm_clocksource_init(freq))
+       ret = ftm_clocksource_init(freq);
+       if (ret)
                goto err;
 
-       if (ftm_clockevent_init(freq, irq))
+       ret = ftm_clockevent_init(freq, irq);
+       if (ret)
                goto err;
 
-       return;
+       return 0;
 
 err:
        kfree(priv);
+       return ret;
 }
 CLOCKSOURCE_OF_DECLARE(flextimer, "fsl,ftm-timer", ftm_timer_init);
This page took 0.043698 seconds and 5 git commands to generate.