|
@@ -66,6 +66,7 @@ static int arch_timer_ppi[MAX_TIMER_PPI];
|
|
static struct clock_event_device __percpu *arch_timer_evt;
|
|
static struct clock_event_device __percpu *arch_timer_evt;
|
|
|
|
|
|
static bool arch_timer_use_virtual = true;
|
|
static bool arch_timer_use_virtual = true;
|
|
|
|
+static bool arch_timer_c3stop;
|
|
static bool arch_timer_mem_use_virtual;
|
|
static bool arch_timer_mem_use_virtual;
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -263,7 +264,8 @@ static void __arch_timer_setup(unsigned type,
|
|
clk->features = CLOCK_EVT_FEAT_ONESHOT;
|
|
clk->features = CLOCK_EVT_FEAT_ONESHOT;
|
|
|
|
|
|
if (type == ARCH_CP15_TIMER) {
|
|
if (type == ARCH_CP15_TIMER) {
|
|
- clk->features |= CLOCK_EVT_FEAT_C3STOP;
|
|
|
|
|
|
+ if (arch_timer_c3stop)
|
|
|
|
+ clk->features |= CLOCK_EVT_FEAT_C3STOP;
|
|
clk->name = "arch_sys_timer";
|
|
clk->name = "arch_sys_timer";
|
|
clk->rating = 450;
|
|
clk->rating = 450;
|
|
clk->cpumask = cpumask_of(smp_processor_id());
|
|
clk->cpumask = cpumask_of(smp_processor_id());
|
|
@@ -665,6 +667,8 @@ static void __init arch_timer_init(struct device_node *np)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ arch_timer_c3stop = !of_property_read_bool(np, "always-on");
|
|
|
|
+
|
|
arch_timer_register();
|
|
arch_timer_register();
|
|
arch_timer_common_init();
|
|
arch_timer_common_init();
|
|
}
|
|
}
|