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

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