ARM: bcm283x: Switch to generic timer
authorMarek Vasut <marex@denx.de>
Mon, 4 May 2015 20:54:37 +0000 (22:54 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Tue, 8 Sep 2015 20:47:09 +0000 (22:47 +0200)
Switch to generic timer implementation from lib/time.c .
This also fixes a signed overflow which was in __udelay()
implementation.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Tyler Baker <tyler.baker@linaro.org>
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
arch/arm/mach-bcm283x/Makefile
arch/arm/mach-bcm283x/timer.c [deleted file]
include/configs/rpi-common.h

index ac27d00..f0dadd0 100644 (file)
@@ -5,4 +5,4 @@
 #
 
 obj-$(CONFIG_TARGET_RPI) += lowlevel_init.o
-obj-y  += init.o reset.o timer.o mbox.o phys2bus.o
+obj-y  += init.o reset.o mbox.o phys2bus.o
diff --git a/arch/arm/mach-bcm283x/timer.c b/arch/arm/mach-bcm283x/timer.c
deleted file mode 100644 (file)
index 017907c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * (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(&regs->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);
-}
index 3121ac9..b54cf8b 100644 (file)
@@ -8,12 +8,18 @@
 #define _RPI_COMMON_H_
 
 #include <linux/sizes.h>
+#include <asm/arch/timer.h>
 
 /* Architecture, CPU, etc.*/
 #define CONFIG_SYS_GENERIC_BOARD
 #define CONFIG_BCM2835
 #define CONFIG_ARCH_CPU_INIT
 #define CONFIG_SYS_DCACHE_OFF
+
+#define CONFIG_SYS_TIMER_RATE          1000000
+#define CONFIG_SYS_TIMER_COUNTER       \
+       (&((struct bcm2835_timer_regs *)BCM2835_TIMER_PHYSADDR)->clo)
+
 /*
  * 2835 is a SKU in a series for which the 2708 is the first or primary SoC,
  * so 2708 has historically been used rather than a dedicated 2835 ID.