diff options
author | Micha Kalfon <smichak.uv@gmail.com> | 2009-02-11 19:50:11 +0200 |
---|---|---|
committer | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2009-02-20 03:24:08 +0100 |
commit | 94a3312920b6f9b5da27309549fb73650718c10a (patch) | |
tree | 9999ba7c12e606405953d549c842130044322c9f /cpu/pxa/interrupts.c | |
parent | e5e88c3614b79b54719905f66aefb51f9494bc1f (diff) | |
download | u-boot-imx-94a3312920b6f9b5da27309549fb73650718c10a.zip u-boot-imx-94a3312920b6f9b5da27309549fb73650718c10a.tar.gz u-boot-imx-94a3312920b6f9b5da27309549fb73650718c10a.tar.bz2 |
pxa: fixing get_timer to return time in miliseconds.
Fixing the get_timer function to return time in miliseconds instead of
ticks. Also fixed PXA boards to use the conventional value of 1000 for
CONFIG_SYS_HZ.
Signed-off-by: Micha Kalfon <smichak.uv@gmail.com>
Diffstat (limited to 'cpu/pxa/interrupts.c')
-rw-r--r-- | cpu/pxa/interrupts.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/cpu/pxa/interrupts.c b/cpu/pxa/interrupts.c index ec8fb9e..40d8bf2 100644 --- a/cpu/pxa/interrupts.c +++ b/cpu/pxa/interrupts.c @@ -33,6 +33,14 @@ #error: interrupts not implemented yet #endif +#if defined(CONFIG_PXA27X) || defined(CONFIG_CPU_MONAHANS) +#define TIMER_FREQ_HZ 3250000 +#elif defined(CONFIG_PXA250) +#define TIMER_FREQ_HZ 3686400 +#else +#error "Timer frequency unknown - please config PXA CPU type" +#endif + int interrupt_init (void) { /* nothing happens here - we don't setup any IRQs */ @@ -67,7 +75,10 @@ void reset_timer_masked (void) ulong get_timer_masked (void) { - return OSCR; + unsigned long long ticks = get_ticks(); + + return (((ticks / TIMER_FREQ_HZ) * 1000) + + ((ticks % TIMER_FREQ_HZ) * 1000) / TIMER_FREQ_HZ); } void udelay_masked (unsigned long usec) @@ -78,17 +89,17 @@ void udelay_masked (unsigned long usec) if (usec >= 1000) { tmo = usec / 1000; - tmo *= CONFIG_SYS_HZ; + tmo *= TIMER_FREQ_HZ; tmo /= 1000; } else { - tmo = usec * CONFIG_SYS_HZ; + tmo = usec * TIMER_FREQ_HZ; tmo /= (1000*1000); } - endtime = get_timer_masked () + tmo; + endtime = get_ticks() + tmo; do { - ulong now = get_timer_masked (); + ulong now = get_ticks(); diff = endtime - now; } while (diff >= 0); } @@ -99,7 +110,7 @@ void udelay_masked (unsigned long usec) */ unsigned long long get_ticks(void) { - return get_timer(0); + return OSCR; } /* @@ -109,6 +120,6 @@ unsigned long long get_ticks(void) ulong get_tbclk (void) { ulong tbclk; - tbclk = CONFIG_SYS_HZ; + tbclk = TIMER_FREQ_HZ; return tbclk; } |