On Tue, Mar 05, 2013 at 11:53:02AM +0800, Feng Tang wrote: > > // Drops some small precision along the way but is simple.. > > static inline u64 cyclecounter_cyc2ns_128(const struct cyclecounter *cc, > > cycle_t cycles) > > { > > u64 max = U64_MAX/cc->mult; > > u64 num = cycles/max; > > u64 result = num * ((max * cc->mult) >> cc->shift); > > return result + cyclecounter_cyc2ns(cc, cycles - num*cc->mult); > > } > > Your way is surely more accurate, if maintainers are ok with adding > the new API, I will use it.
Okay, give it a good look though, I only wrote it out in email, never tested it :) > > You may want to also CC the maintainers of all the ARM subsystems that > > use read_persistent_clock and check with them to ensure this new > > interface will let them migrate their implementations as well. > > Maybe I didn't get it well, my patches didn't change the > read_persistent_clock(), but inject a new way of counting suspended > time. It should have no functional changes to existing platforms. Right, your patches are fine stand alone. The ARM case of plat-omap/counter_32k.c would ideally be converted to use your new API though, that is what I ment about involving them. I'm not sure about mach-tegra/timer.c though - it seems to be using a counter as well but somehow sharing registers with the RTC? Regards, Jason -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/