From: "Peter A. G. Crosthwaite" <[email protected]>
This lets a dts author flag a particular timer in the system as the system timer. If the chosen node contains a "system-timer=<&foo>" entry than that handle will be used to determine the system timer. In no such entry exists then the first found timer will be used (current behaviour). Signed-off-by: Peter A. G. Crosthwaite <[email protected]> Signed-off-by: Michal Simek <[email protected]> --- arch/microblaze/kernel/timer.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c index 91804cd..c289412 100644 --- a/arch/microblaze/kernel/timer.c +++ b/arch/microblaze/kernel/timer.c @@ -267,11 +267,15 @@ void __init time_init(void) NULL }; - for (i = 0; timer_list[i] != NULL; i++) { + prop = of_get_property(of_chosen, "system-timer", NULL); + if (prop) + timer = of_find_node_by_phandle(be32_to_cpup(prop)); + else + printk(KERN_INFO "No chosen timer found, using default\n"); + + for (i = 0; timer_list[i] != NULL && !timer; i++) timer = of_find_compatible_node(NULL, NULL, timer_list[i]); - if (timer) - break; - } + BUG_ON(!timer); timer_baseaddr = be32_to_cpup(of_get_property(timer, "reg", NULL)); -- 1.7.5.4 _______________________________________________ devicetree-discuss mailing list [email protected] https://lists.ozlabs.org/listinfo/devicetree-discuss
