diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2015-03-19 19:42:56 +0900 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-03-28 09:03:09 -0400 |
commit | ddf6bd4876a1838bdf3202b34f5a36f165c279b1 (patch) | |
tree | f21be52675252fd4e942130a3336556b9b970a6a /arch/arm/mach-bcm283x/timer.c | |
parent | 326a682358c16afcf2c7a9617e9811e72a1f0929 (diff) | |
download | u-boot-imx-ddf6bd4876a1838bdf3202b34f5a36f165c279b1.zip u-boot-imx-ddf6bd4876a1838bdf3202b34f5a36f165c279b1.tar.gz u-boot-imx-ddf6bd4876a1838bdf3202b34f5a36f165c279b1.tar.bz2 |
ARM: bcm283x: merge BCM2835/BCM2836 directories into mach-bcm283x
BCM2835 (used on Raspberry Pi) and BCM2836 (used on Raspberry Pi 2)
are similar enough. One of the biggest differences is the ARM
processor. It is reasonable to collect the source files into a
single place, arch/arm/mach-bcm283x/.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Diffstat (limited to 'arch/arm/mach-bcm283x/timer.c')
-rw-r--r-- | arch/arm/mach-bcm283x/timer.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/arch/arm/mach-bcm283x/timer.c b/arch/arm/mach-bcm283x/timer.c new file mode 100644 index 0000000..017907c --- /dev/null +++ b/arch/arm/mach-bcm283x/timer.c @@ -0,0 +1,58 @@ +/* + * (C) Copyright 2012 Stephen Warren + * + * 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 + * version 2 as published by the Free Software Foundation. + * + * 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. + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/timer.h> + +ulong get_timer_us(ulong base) +{ + struct bcm2835_timer_regs *regs = + (struct bcm2835_timer_regs *)BCM2835_TIMER_PHYSADDR; + + return readl(®s->clo) - base; +} + +ulong get_timer(ulong base) +{ + ulong us = get_timer_us(0); + us /= (1000000 / CONFIG_SYS_HZ); + us -= base; + return us; +} + +unsigned long long get_ticks(void) +{ + return get_timer(0); +} + +ulong get_tbclk(void) +{ + return CONFIG_SYS_HZ; +} + +void __udelay(unsigned long usec) +{ + ulong endtime; + signed long diff; + + endtime = get_timer_us(0) + usec; + + do { + ulong now = get_timer_us(0); + diff = endtime - now; + } while (diff >= 0); +} |