On Sun, 24 Feb 2008 18:45:54 +0100
Haavard Skinnemoen <hskinnemoen@atmel.com> wrote:
Happens. :)
More specifically (and all those patches are available now):
- AT91 needs clocksource/clockevent support for the SAM9 PIT timer;
- AVR32 needs more extensive clocksource/clockevent updates;
- Both also need platform device setup;
Merging these two patches before those is a perfectly safe NOP.
Because the AVR32 count/compare clocksource (architectural registers)
precludes using the "idle" state in the idle loop ... it counts CPU
cycles, which don't happen in the "idle" state.
Right.
Well, "more widely" tested. We've both observed it to work; basically
the same code has worked on AT91 for about a year now, too.
And that's why I suggest merging these parts, now that they're known to
work on both architectures. The arch-specific bits can follow at their
own pace, neither one blocking the other.
Conflicts there would be the easy part to deal with. They're all
specific to AVR32, and you can merge those in any convenient order.
Doesn't work as smoothly for the AT91 side ... but Andrew Victor has
very limited time any more for such stuff (these AT91 patches will
go through him first then Russell) so I'm not sure any added delays
there could hurt much.
In effect, I've had that last option as a series of quilt patches,
and posting these two is the first step in that merge sequence...
heck, they could merge right now into 2.6.25-rc3 and that would let
the two arch series merge at their own paces. (AVR32 direct from
you, AT91 very indirectly through Andrew then Russell.)
My personal priority is to get these patches into the merge queue(s)
so that they're no longer sitting on my disks and so that when I
want those platforms to have HRT and/or NO_HZ, it's already there.
I only "know" about currently announced ones. ;)
Me either, but at this point doing more than that seems to me
to land in that "overengineering" category...
An earlier version of the code did that. If you want to modify the
patch series to work that way, feel free. (Right now it'd be only
these two patches posted to LKML ... nobody's posted a driver for
e.g. 3-phase motor control, or servos with feedback loops, yet.)
I take it you don't have any real problem with non-support for
allocating a single TC channel. These TC blocks are quirky, and
it's a bit awkward to use just one at at time. (And that's not
only because having just sixteen bits for a timer is Not Enough!)
An earlier version of the code did something like that ... ;)
In that case the platform setup code handed a block of data to
the TC library code. That was more complicated than I wanted.
You're suggesting the TC library code does that instead, and
shift that issue to a mid-layer?
In practice, this version didn't end up being hard to use. All
I really noticed was the much-simplified platform support, which
came from using platform_device resources in the "usual way".
The chip specs say there are only 256 bytes of registers there,
no matter how the address decoding works. It could be argued either
way, but computing the "real resource size' involves avoidable math.
Concision is my friend. ;)
It's way better than indenting off the right margin of the page!
And per-channel IRQs too...
Well, if you want to take these patches off my hands and then be
responsible for merging them upstream, I won't object. :)
- Dave
--