Merge branch 'vmwgfx-fixes-5.1' of git://people.freedesktop.org/~thomash/linux into...
[linux-2.6-block.git] / drivers / clocksource / timer-integrator-ap.c
index 76e526f58620909884cd9517209ed7b7673dc2c1..19fb7de4b928847fd89d337750b927174deb1cab 100644 (file)
@@ -181,8 +181,7 @@ static int __init integrator_ap_timer_init_of(struct device_node *node)
        int irq;
        struct clk *clk;
        unsigned long rate;
-       struct device_node *pri_node;
-       struct device_node *sec_node;
+       struct device_node *alias_node;
 
        base = of_io_request_and_map(node, 0, "integrator-timer");
        if (IS_ERR(base))
@@ -204,7 +203,18 @@ static int __init integrator_ap_timer_init_of(struct device_node *node)
                return err;
        }
 
-       pri_node = of_find_node_by_path(path);
+       alias_node = of_find_node_by_path(path);
+
+       /*
+        * The pointer is used as an identifier not as a pointer, we
+        * can drop the refcount on the of__node immediately after
+        * getting it.
+        */
+       of_node_put(alias_node);
+
+       if (node == alias_node)
+               /* The primary timer lacks IRQ, use as clocksource */
+               return integrator_clocksource_init(rate, base);
 
        err = of_property_read_string(of_aliases,
                                "arm,timer-secondary", &path);
@@ -213,14 +223,11 @@ static int __init integrator_ap_timer_init_of(struct device_node *node)
                return err;
        }
 
+       alias_node = of_find_node_by_path(path);
 
-       sec_node = of_find_node_by_path(path);
-
-       if (node == pri_node)
-               /* The primary timer lacks IRQ, use as clocksource */
-               return integrator_clocksource_init(rate, base);
+       of_node_put(alias_node);
 
-       if (node == sec_node) {
+       if (node == alias_node) {
                /* The secondary timer will drive the clock event */
                irq = irq_of_parse_and_map(node, 0);
                return integrator_clockevent_init(rate, base, irq);