aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clocksource/mips-gic-timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clocksource/mips-gic-timer.c')
-rw-r--r--drivers/clocksource/mips-gic-timer.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/clocksource/mips-gic-timer.c b/drivers/clocksource/mips-gic-timer.c
index 3bd31b1321f6..b81ed1a5342d 100644
--- a/drivers/clocksource/mips-gic-timer.c
+++ b/drivers/clocksource/mips-gic-timer.c
@@ -5,6 +5,7 @@
5 * 5 *
6 * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. 6 * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved.
7 */ 7 */
8#include <linux/clk.h>
8#include <linux/clockchips.h> 9#include <linux/clockchips.h>
9#include <linux/cpu.h> 10#include <linux/cpu.h>
10#include <linux/init.h> 11#include <linux/init.h>
@@ -133,6 +134,9 @@ static void __init __gic_clocksource_init(void)
133 clocksource_register_hz(&gic_clocksource, gic_frequency); 134 clocksource_register_hz(&gic_clocksource, gic_frequency);
134 135
135 gic_clockevent_init(); 136 gic_clockevent_init();
137
138 /* And finally start the counter */
139 gic_start_count();
136} 140}
137 141
138void __init gic_clocksource_init(unsigned int frequency) 142void __init gic_clocksource_init(unsigned int frequency)
@@ -146,11 +150,18 @@ void __init gic_clocksource_init(unsigned int frequency)
146 150
147static void __init gic_clocksource_of_init(struct device_node *node) 151static void __init gic_clocksource_of_init(struct device_node *node)
148{ 152{
153 struct clk *clk;
154
149 if (WARN_ON(!gic_present || !node->parent || 155 if (WARN_ON(!gic_present || !node->parent ||
150 !of_device_is_compatible(node->parent, "mti,gic"))) 156 !of_device_is_compatible(node->parent, "mti,gic")))
151 return; 157 return;
152 158
153 if (of_property_read_u32(node, "clock-frequency", &gic_frequency)) { 159 clk = of_clk_get(node, 0);
160 if (!IS_ERR(clk)) {
161 gic_frequency = clk_get_rate(clk);
162 clk_put(clk);
163 } else if (of_property_read_u32(node, "clock-frequency",
164 &gic_frequency)) {
154 pr_err("GIC frequency not specified.\n"); 165 pr_err("GIC frequency not specified.\n");
155 return; 166 return;
156 } 167 }