MIPS: use common code from lib/time.c
PATCH 1/1 MIPS: use common code from lib/time.c
From: Thomas Langer <[email protected]>
The common code just needs the C0_COUNT as free running counter, without the need of writing and checking C0_COMPARE.
The function get_tbclk() is still implemented here instead of changing all places of CONFIG_SYS_MIPS_TIMER_FREQ to CONFIG_SYS_TIMER_RATE.
The change was tested on a MIPS32 system, but as the MIPS64 code was/is the same, this should be no problem.
--- arch/mips/cpu/mips32/time.c | 59 +++---------------------------------------- arch/mips/cpu/mips64/time.c | 59 +++---------------------------------------- 2 files changed, 8 insertions(+), 110 deletions(-)
arch/mips/cpu/mips32/time.c +4 -55
@@ -8,63 +8,12 @@#include <common.h> #include <asm/mipsregs.h> -static unsigned long timestamp; - -/* how many counter cycles in a jiffy */ -#define CYCLES_PER_JIFFY \ - (CONFIG_SYS_MIPS_TIMER_FREQ + CONFIG_SYS_HZ / 2) / CONFIG_SYS_HZ - -/* -* timer without interrupts -*/ - -int timer_init (void ) -{ -/* Set up the timer for the first expiration. */ -write_c0_compare (read_c0_count () +CYCLES_PER_JIFFY ); - -return 0 ; -} - -ulong get_timer (ulong base) -{ -unsigned int count; -unsigned int expirelo =read_c0_compare (); - -/* Check to see if we have missed any timestamps. */ - count =read_c0_count (); -while ((count - expirelo) <0x7fffffff ) { - expirelo +=CYCLES_PER_JIFFY ; - timestamp++; - } -write_c0_compare (expirelo); - -return timestamp - base; -} - -void __udelay (unsigned long usec) +unsigned long notrace timer_read_counter (void ) { -unsigned int tmo; - - tmo =read_c0_count () + (usec * (CONFIG_SYS_MIPS_TIMER_FREQ /1000000 )); -while ((tmo -read_c0_count ()) <0x7fffffff ) -/*NOP*/ ; +return read_c0_count (); } -/* -* This function is derived from PowerPC code (read timebase as long long). -* On MIPS it just returns the timer value. -*/ -unsigned long long get_ticks (void ) -{ -return get_timer (0 ); -} - -/* -* This function is derived from PowerPC code (timebase clock frequency). -* On MIPS it returns the number of timer ticks per second. -*/ -ulong get_tbclk (void ) +ulong notrace get_tbclk(void) { -return CONFIG_SYS_HZ ; +return CONFIG_SYS_MIPS_TIMER_FREQ ; }
arch/mips/cpu/mips64/time.c +4 -55
67 lines not on this page · raw message
Signature · 1 line
1.7.10.3
PATCH 1/1 MIPS: use common code from lib/time.c
Hi Thomas,
Quoted 8 lines · thomas.langer at lantiq.com
From: Thomas Langer <[email protected]>
The common code just needs the
C0_COUNTas free running counter, without the need of writing and checkingC0_COMPARE.The function
get_tbclk()is still implemented here instead of changing all places ofCONFIG_SYS_MIPS_TIMER_FREQtoCONFIG_SYS_TIMER_RATE.
Quoted 8 lines
The change was tested on a MIPS32 system, but as the MIPS64 code was/is the same, this should be no problem.
Signed-off-by Thomas Langer <[email protected]>--- arch/mips/cpu/mips32/time.c | 59 +++---------------------------------------- arch/mips/cpu/mips64/time.c | 59 +++---------------------------------------- 2 files changed, 8 insertions(+), 110 deletions(-)
applied to u-boot-mips/next, thanks
Signature · 1 line
- Daniel