Hi, > > > Cool. Here's a version that gets rid of the lookup table by encoding > > the > > > posted write pending bit into the reg offset. This should be OK, as > > the > > > functions are used within dmtimer.c only. I updated your changed patch with the couple things I mentioned below. I don't have a board handy now to check but changes are minor. One note is some more optimization could happen later on with reordering. The current usage in gptimer has dmtimer_set_load() followed by a dm_timer_start(). This causes a read/write/read/write of the CTRL register. Those writes could be collapsed into each other. With a load_start(). Others maybe elsewhere. Measurements seem to show timer CPU % usage dropping by /3 using the original patch. Perhaps a little better with this one. However, the timer still shows up in the profile list. > > Ok, that looks nice and will generate a bit better code. I thought > > briefly on that it but wanted the change to be small and was a little > > worried someone might use the offset somewhere else. But, they way you > > did it makes the 2nd aspect go away. > > > > * You have defined WPSHIFT to 8. However, that bit is currently taken > > by WP_TOCR. I chose 15 hoping if the register expanded it would be the > > last one in a u_int16 and still can be encoded in an op code as a shift > > value. A 16 would be a good codegen value, but always assume u_int32 > > register. As the registers are u_int32 in current implementations, > > probably 16 is a better value. > > OK, good catch. Now WPSHIFT is 16. I was only half getting the intent before. Now the offset looks like: 31:16[posting bit]15:0[offset]. I wonder if read/write reg check is reordered if the compiler is smart enough to not do the register read if first expression evaluates to 0. If( reg >> WPSHFIT) & (readl(xyz) & 0xff) > > > The init of other timers into posted mode is not done yet, so I > > changed > > > the timer->posted handling too. > > > > Not inited in software, BUT the power on reset of the timer module is to > > posted mode in reset. Its better to have someone shut it off in both > > places as its on by default. > > OK Now reset function does match hardware init default with posted on. > > I'll tweak the points mentioned and fix a typo in the description and > > send a version. > > OK I fixed the typo in the description. Regards, Richard W.
Attachment:
omap-dmtimer-posted-v3.patch
Description: omap-dmtimer-posted-v3.patch