[RFC v2 6/9] arm/dt: add devicetree support to sp804 timer support

Grant Likely grant.likely at secretlab.ca
Tue Dec 13 11:29:17 EST 2011


On Dec 12, 2011 4:54 PM, "Rob Herring" <robherring2 at gmail.com> wrote:
>
> Grant,
>
> On 12/12/2011 04:02 PM, Grant Likely wrote:
> > This patch adds support to the sp804 code for retrieving timer
> > configuration from the device tree.  sp804 channels can be used as
> > a clock event device or a clock source.
> >
> > Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
> > Cc: Russell King <linux at arm.linux.org.uk>
> > ---
>
> [snip]
>
> > +
> > +     /*
> > +      * Figure out how to use this clock
> > +      *
> > +      * Note: This is kind of ugly since it requires linux-specific
> > +      * properties in the device tree so that Linux knows which sp804
> > +      * channels can be used as the clock source and the clock events
> > +      * trigger.  Something OS agnostic would be nicer, but it isn't
> > +      * obvious what that should look like.
> > +      */
> > +     if (of_get_property(node, "linux,clock-source", NULL)) {
> > +             __sp804_clocksource_init(base, node->full_name, clk);
> > +     } else if (of_get_property(node, "linux,clockevents-device",
NULL)) {
> > +             irq = irq_of_parse_and_map(node, 0);
> > +             __sp804_clockevents_init(base, irq, node->full_name, clk);
>
> At least in the case of highbank, there is no interrupt connected for
> 2nd timer in the h/w. So we could use that fact and presence of a clock
> for each timer to determine which to use. Some of the ARM boards have 2
> sp804's (4 timers) though and you could use any combination I think.
> Does it really matter which one is selected as long as it meets the
> needs of the OS? Yes, we could think of possible scenarios that don't
> work, but it's not likely to see a slew of new platforms with sp804's as
> new ARM core integrate the timers in. Although, bcmring is a bit strange
> setting up 2 clksrc's, but that doesn't really present a problem.

Interesting idea. I'll take a look at that tomorrow. It would be nice to be
rid of that hack. I was mostly concerned about sp804s getting clocked from
different sources and if there were any constraints I didn't understand.

> The fact that you split the timer to 2 nodes is a bit of Linux's needs
> defining the binding. The h/w block is a block with 2 timers. It's not
> really split. The block does have a single set of primecell ID registers
> at 0xfe0 for example.

Yeah, I kind of bodged it that way because it was easier. I realized it
probably should remain as one node when I wrote it. I'll take another look
tomorrow.

g.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/devicetree-discuss/attachments/20111212/96ec7a1a/attachment.html>


More information about the devicetree-discuss mailing list