
Dear Reinhard Meyer,
In message 4C98536C.6010003@emk-elektronik.de you wrote:
For me it seems useful to keep both functions and have ticks increment at a hardware-convenient rate. If the hardware timer can be prescaled to increment at 1000 Hz that is fine, but I see no immediate need for that. If the hardware cannot be prescaled, and software would need to do a 64 bit multiply/divide on each timer read, that would really be overkill.
Just FYI: the origin of these functions is (like usual) in the implementation for the Power Architecture.
There we have a 64 bit timebase register (split into two 32 bit registers, the upper half in tbu and the lower half in tbl). The timebase register gets incremented at a pretty high rate, usually every 4 or 16 system clocks).
get_ticks() just returns the content of the 64 bit timebase register.
[See also wait_ticks(0 which delays for a number of ticks, cf. "arch/powerpc/lib/ticks.S"]
get_tbclk() just returns the timebase clock (usually derived froom the system clock; see for exmaple "arch/powerpc/cpu/mpc5xxx/cpu.c": tbclk = (gd->bus_clk + 3L) / 4L; ).
Best regards,
Wolfgang Denk