--- zzzz-none-000/linux-2.6.19.2/Documentation/mips/time.README 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5504/linux-2.6.19.2/Documentation/mips/time.README 2007-01-11 07:38:19.000000000 +0000 @@ -38,14 +38,19 @@ a) Implements functions required by Linux common code: time_init + do_gettimeofday + do_settimeofday b) provides an abstraction of RTC and null RTC implementation as default. extern unsigned long (*rtc_get_time)(void); extern int (*rtc_set_time)(unsigned long); - c) high-level and low-level timer interrupt routines where the timer - interrupt source may or may not be the CPU timer. The high-level - routine is dispatched through do_IRQ() while the low-level is + c) a set of gettimeoffset functions for different CPUs and different + needs. + + d) high-level and low-level timer interrupt routines where the timer + interrupt source may or may not be the CPU timer. The high-level + routine is dispatched through do_IRQ() while the low-level is dispatched in assemably code (usually int-handler.S) @@ -68,7 +73,8 @@ c) (optional) board-specific RTC routines. d) (optional) mips_hpt_frequency - It must be definied if the board - is using CPU counter for timer interrupt. + is using CPU counter for timer interrupt or it is using fixed rate + gettimeoffset(). PORTING GUIDE @@ -83,6 +89,16 @@ If the answer is no, you need a timer to provide the timer interrupt at 100 HZ speed. + You cannot use the fast gettimeoffset functions, i.e., + + unsigned long fixed_rate_gettimeoffset(void); + unsigned long calibrate_div32_gettimeoffset(void); + unsigned long calibrate_div64_gettimeoffset(void); + + You can use null_gettimeoffset() will gives the same time resolution as + jiffy. Or you can implement your own gettimeoffset (probably based on + some ad hoc hardware on your machine.) + c) The following sub steps assume your CPU has counter register. Do you plan to use the CPU counter register as the timer interrupt or use an exnternal timer? @@ -107,8 +123,8 @@ board_time_init() - a) (optional) set up RTC routines, b) (optional) calibrate and set the mips_hpt_frequency - (only needed if you intended to use cpu counter as timer interrupt - source) + (only needed if you intended to use fixed_rate_gettimeoffset + or use cpu counter as timer interrupt source) plat_timer_setup() - a) (optional) over-write any choices made above by time_init(). @@ -138,8 +154,8 @@ For example, you may define your own timer interrupt routine, which does some of its own processing and then calls timer_interrupt(). -You can also over-ride any of the built-in functions (RTC routines -and/or timer interrupt routine). +You can also over-ride any of the built-in functions (gettimeoffset, +RTC routines and/or timer interrupt routine). PORTING NOTES FOR SMP @@ -171,3 +187,10 @@ You can also do the low-level version of those interrupt routines, following similar dispatching routes described above. + +Note about do_gettimeoffset(): + + It is very likely the CPU counter registers are not sync'ed up in a SMP box. + Therefore you cannot really use the many of the existing routines that + are based on CPU counter. You should wirte your own gettimeoffset rouinte + if you want intra-jiffy resolution.