On Thu, Nov 10, 2011 at 11:10 PM, Michal Simek <[email protected]> wrote: > 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));
Suggest expanding this code to check that the chosen timer meets the kernel requirements - IRQ connected, dual channel etc. If it fails, then perhaps fall through to finding the first suitable one, or panic()? > + 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; There is another issue I think - can we somehow mark the system timer instance as 'taken' so it can't be bound by another driver that might be compatible (esp. generic-uio for example). Currently if you mark the timer as generic-uio then a UIO app can mess with it - not good. John -- PetaLogix - Linux Solutions for a Reconfigurable World w: www.petalogix.com p: +61-7-30090663 f: +61-7-30090663 _______________________________________________ devicetree-discuss mailing list [email protected] https://lists.ozlabs.org/listinfo/devicetree-discuss
