Eliminate register address #defines by using C structs, and move the
rest of the header contents into timer.c.

Cc: Alessandro Rubini <rub...@unipv.it>
Acked-by: Michael Brandt <michael.bra...@stericsson.com>
Signed-off-by: Rabin Vincent <rabin.vinc...@stericsson.com>
---
 cpu/arm926ejs/nomadik/timer.c      |   45 ++++++++++++++++++------
 include/asm-arm/arch-nomadik/mtu.h |   66 ------------------------------------
 2 files changed, 34 insertions(+), 77 deletions(-)
 delete mode 100644 include/asm-arm/arch-nomadik/mtu.h

diff --git a/cpu/arm926ejs/nomadik/timer.c b/cpu/arm926ejs/nomadik/timer.c
index fdab650..0aeeb63 100644
--- a/cpu/arm926ejs/nomadik/timer.c
+++ b/cpu/arm926ejs/nomadik/timer.c
@@ -22,7 +22,25 @@
 
 #include <common.h>
 #include <asm/io.h>
-#include <asm/arch/mtu.h>
+
+struct mtu {
+       uint    imsc;
+       uint    ris;
+       uint    mis;
+       uint    icr;
+       struct mtu_timer {
+               uint    lr;
+               uint    val;
+               uint    cr;
+               uint    bglr;
+       } timer[4];
+};
+
+#define MTU_CRn_ENA            0x80
+#define MTU_CRn_PRESCALE_1     0x00
+#define MTU_CRn_PRESCALE_16    0x04
+#define MTU_CRn_PRESCALE_256   0x08
+#define MTU_CRn_32BITS         0x02
 
 /*
  * The timer is a decrementer, we'll left it free running at 2.4MHz.
@@ -32,14 +50,19 @@
 #define COUNT_TO_USEC(x)       ((x) * 5 / 12)  /* overflows at 6min */
 #define USEC_TO_COUNT(x)       ((x) * 12 / 5)  /* overflows at 6min */
 
-/* macro to read the decrementing 32 bit timer as an increasing count */
-#define READ_TIMER() (0 - readl(CONFIG_SYS_TIMERBASE + MTU_VAL(0)))
+static const struct mtu_timer *timer
+       = &((struct mtu *) CONFIG_SYS_TIMERBASE)->timer[0];
+
+/* read the decrementing 32 bit timer as an increasing count */
+static ulong read_timer(void)
+{
+       return 0 - readl(&timer->val);
+}
 
 /* Configure a free-running, auto-wrap counter with no prescaler */
 int timer_init(void)
 {
-       writel(MTU_CRn_ENA | MTU_CRn_PRESCALE_1 | MTU_CRn_32BITS,
-              CONFIG_SYS_TIMERBASE + MTU_CR(0));
+       writel(MTU_CRn_ENA | MTU_CRn_PRESCALE_1 | MTU_CRn_32BITS, &timer->cr);
        reset_timer();
        return 0;
 }
@@ -48,21 +71,21 @@ int timer_init(void)
 void reset_timer(void)
 {
        ulong val;
-       writel(0, CONFIG_SYS_TIMERBASE + MTU_LR(0));
+       writel(0, &timer->lr);
        /*
         * The load-register isn't really immediate: it changes on clock
         * edges, so we must wait for our newly-written value to appear.
         * Since we might miss reading 0, wait for any change in value.
         */
-       val = READ_TIMER();
-       while (READ_TIMER() == val)
+       val = read_timer();
+       while (read_timer() == val)
                ;
 }
 
 /* Return how many HZ passed since "base" */
 ulong get_timer(ulong base)
 {
-       ulong hz = READ_TIMER() / (TIMER_CLOCK / CONFIG_SYS_HZ);
+       ulong hz = read_timer() / (TIMER_CLOCK / CONFIG_SYS_HZ);
        return hz - base;
 }
 
@@ -71,8 +94,8 @@ void __udelay(unsigned long usec)
 {
        ulong ini, end;
 
-       ini = READ_TIMER();
+       ini = read_timer();
        end = ini + USEC_TO_COUNT(usec);
-       while ((signed)(end - READ_TIMER()) > 0)
+       while ((signed)(end - read_timer()) > 0)
                ;
 }
diff --git a/include/asm-arm/arch-nomadik/mtu.h 
b/include/asm-arm/arch-nomadik/mtu.h
deleted file mode 100644
index a87be9e..0000000
--- a/include/asm-arm/arch-nomadik/mtu.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * (C) Copyright 2009 Alessandro Rubini
- *
- * 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
- */
-
-#ifndef __ASM_ARCH_MTU_H
-#define __ASM_ARCH_MTU_H
-
-/*
- * The MTU device hosts four different counters, with 4 set of
- * registers. These are register names.
- */
-
-#define MTU_IMSC       0x00    /* Interrupt mask set/clear */
-#define MTU_RIS                0x04    /* Raw interrupt status */
-#define MTU_MIS                0x08    /* Masked interrupt status */
-#define MTU_ICR                0x0C    /* Interrupt clear register */
-
-/* per-timer registers take 0..3 as argument */
-#define MTU_LR(x)      (0x10 + 0x10 * (x) + 0x00)      /* Load value */
-#define MTU_VAL(x)     (0x10 + 0x10 * (x) + 0x04)      /* Current value */
-#define MTU_CR(x)      (0x10 + 0x10 * (x) + 0x08)      /* Control reg */
-#define MTU_BGLR(x)    (0x10 + 0x10 * (x) + 0x0c)      /* At next overflow */
-
-/* bits for the control register */
-#define MTU_CRn_ENA            0x80
-#define MTU_CRn_PERIODIC       0x40    /* if 0 = free-running */
-#define MTU_CRn_PRESCALE_MASK  0x0c
-#define MTU_CRn_PRESCALE_1             0x00
-#define MTU_CRn_PRESCALE_16            0x04
-#define MTU_CRn_PRESCALE_256           0x08
-#define MTU_CRn_32BITS         0x02
-#define MTU_CRn_ONESHOT                0x01    /* if 0 = wraps reloading from 
BGLR*/
-
-/* Other registers are usual amba/primecell registers, currently not used */
-#define MTU_ITCR       0xff0
-#define MTU_ITOP       0xff4
-
-#define MTU_PERIPH_ID0 0xfe0
-#define MTU_PERIPH_ID1 0xfe4
-#define MTU_PERIPH_ID2 0xfe8
-#define MTU_PERIPH_ID3 0xfeC
-
-#define MTU_PCELL0     0xff0
-#define MTU_PCELL1     0xff4
-#define MTU_PCELL2     0xff8
-#define MTU_PCELL3     0xffC
-
-#endif /* __ASM_ARCH_MTU_H */
-- 
1.7.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to