diff options
Diffstat (limited to 'drivers/clocksource/arm_arch_timer.c')
-rw-r--r-- | drivers/clocksource/arm_arch_timer.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index 57e823c44d2a..5163ec13429d 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c | |||
@@ -66,6 +66,7 @@ static int arch_timer_ppi[MAX_TIMER_PPI]; | |||
66 | static struct clock_event_device __percpu *arch_timer_evt; | 66 | static struct clock_event_device __percpu *arch_timer_evt; |
67 | 67 | ||
68 | static bool arch_timer_use_virtual = true; | 68 | static bool arch_timer_use_virtual = true; |
69 | static bool arch_timer_c3stop; | ||
69 | static bool arch_timer_mem_use_virtual; | 70 | static bool arch_timer_mem_use_virtual; |
70 | 71 | ||
71 | /* | 72 | /* |
@@ -263,7 +264,8 @@ static void __arch_timer_setup(unsigned type, | |||
263 | clk->features = CLOCK_EVT_FEAT_ONESHOT; | 264 | clk->features = CLOCK_EVT_FEAT_ONESHOT; |
264 | 265 | ||
265 | if (type == ARCH_CP15_TIMER) { | 266 | if (type == ARCH_CP15_TIMER) { |
266 | clk->features |= CLOCK_EVT_FEAT_C3STOP; | 267 | if (arch_timer_c3stop) |
268 | clk->features |= CLOCK_EVT_FEAT_C3STOP; | ||
267 | clk->name = "arch_sys_timer"; | 269 | clk->name = "arch_sys_timer"; |
268 | clk->rating = 450; | 270 | clk->rating = 450; |
269 | clk->cpumask = cpumask_of(smp_processor_id()); | 271 | clk->cpumask = cpumask_of(smp_processor_id()); |
@@ -665,6 +667,8 @@ static void __init arch_timer_init(struct device_node *np) | |||
665 | } | 667 | } |
666 | } | 668 | } |
667 | 669 | ||
670 | arch_timer_c3stop = !of_property_read_bool(np, "always-on"); | ||
671 | |||
668 | arch_timer_register(); | 672 | arch_timer_register(); |
669 | arch_timer_common_init(); | 673 | arch_timer_common_init(); |
670 | } | 674 | } |