Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
[deliverable/linux.git] / drivers / clocksource / timer-sun5i.c
index 24c83f9efd87f5f5df361eb9e4b0ecd76b6827f9..c184eb84101e9f9a72354baf4c87c4d2ada92d19 100644 (file)
@@ -311,33 +311,42 @@ err_free:
        return ret;
 }
 
-static void __init sun5i_timer_init(struct device_node *node)
+static int __init sun5i_timer_init(struct device_node *node)
 {
        struct reset_control *rstc;
        void __iomem *timer_base;
        struct clk *clk;
-       int irq;
+       int irq, ret;
 
        timer_base = of_io_request_and_map(node, 0, of_node_full_name(node));
-       if (IS_ERR(timer_base))
-               panic("Can't map registers");
+       if (IS_ERR(timer_base)) {
+               pr_err("Can't map registers");
+               return PTR_ERR(timer_base);;
+       }
 
        irq = irq_of_parse_and_map(node, 0);
-       if (irq <= 0)
-               panic("Can't parse IRQ");
+       if (irq <= 0) {
+               pr_err("Can't parse IRQ");
+               return -EINVAL;
+       }
 
        clk = of_clk_get(node, 0);
-       if (IS_ERR(clk))
-               panic("Can't get timer clock");
+       if (IS_ERR(clk)) {
+               pr_err("Can't get timer clock");
+               return PTR_ERR(clk);
+       }
 
        rstc = of_reset_control_get(node, NULL);
        if (!IS_ERR(rstc))
                reset_control_deassert(rstc);
 
-       sun5i_setup_clocksource(node, timer_base, clk, irq);
-       sun5i_setup_clockevent(node, timer_base, clk, irq);
+       ret = sun5i_setup_clocksource(node, timer_base, clk, irq);
+       if (ret)
+               return ret;
+
+       return sun5i_setup_clockevent(node, timer_base, clk, irq);
 }
 CLOCKSOURCE_OF_DECLARE(sun5i_a13, "allwinner,sun5i-a13-hstimer",
-                      sun5i_timer_init);
+                          sun5i_timer_init);
 CLOCKSOURCE_OF_DECLARE(sun7i_a20, "allwinner,sun7i-a20-hstimer",
-                      sun5i_timer_init);
+                          sun5i_timer_init);
This page took 0.026897 seconds and 5 git commands to generate.