diff options
author | Shinya Kuribayashi <skuribay@pobox.com> | 2011-05-07 00:18:13 +0900 |
---|---|---|
committer | Shinya Kuribayashi <skuribay@pobox.com> | 2011-05-10 00:12:31 +0900 |
commit | 68cebb8027c282a949ac0ca7dcb5baabd1c6879a (patch) | |
tree | 43082c3da2b94caab4622480520465e0855e65a9 /arch/mips/lib | |
parent | 660da0947abff3bc98bb0baa37a6db5050ff46d6 (diff) | |
download | u-boot-imx-68cebb8027c282a949ac0ca7dcb5baabd1c6879a.zip u-boot-imx-68cebb8027c282a949ac0ca7dcb5baabd1c6879a.tar.gz u-boot-imx-68cebb8027c282a949ac0ca7dcb5baabd1c6879a.tar.bz2 |
MIPS: Move timer code to arch/mips/cpu/$(CPU)/
Current timer routines (arch/mips/lib/timer.c) are implemented assuming
that MIPS32 coprocessor (CP0) resources, Counter and Compare registers
in this case, are available. But this doesn't always work.
We need to make sure that all MIPS-based systems don't necessarily use
CP0 counter/compare registers as time keeping resources. And some MIPS
variant processors might come with different hardware specs with genuine
MIPS32 CP0 registers.
With this change, each $(CPU)/ directory can have its own timer code.
Signed-off-by: Shinya Kuribayashi <skuribay@pobox.com>
Diffstat (limited to 'arch/mips/lib')
-rw-r--r-- | arch/mips/lib/Makefile | 1 | ||||
-rw-r--r-- | arch/mips/lib/time.c | 98 |
2 files changed, 0 insertions, 99 deletions
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 4e90704..9244f31 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -33,7 +33,6 @@ COBJS-y += bootm_qemu_mips.o else COBJS-y += bootm.o endif -COBJS-y += time.o SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y)) diff --git a/arch/mips/lib/time.c b/arch/mips/lib/time.c deleted file mode 100644 index 0e66441..0000000 --- a/arch/mips/lib/time.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * (C) Copyright 2003 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#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. */ - timestamp = 0; - write_c0_compare(read_c0_count() + CYCLES_PER_JIFFY); - - return 0; -} - -void reset_timer(void) -{ - timestamp = 0; - write_c0_compare(read_c0_count() + CYCLES_PER_JIFFY); -} - -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 set_timer(ulong t) -{ - timestamp = t; - write_c0_compare(read_c0_count() + CYCLES_PER_JIFFY); -} - -void __udelay(unsigned long usec) -{ - unsigned int tmo; - - tmo = read_c0_count() + (usec * (CONFIG_SYS_MIPS_TIMER_FREQ / 1000000)); - while ((tmo - read_c0_count()) < 0x7fffffff) - /*NOP*/; -} - -/* - * 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) -{ - return CONFIG_SYS_HZ; -} |