Merge branch 'master' of git://git.denx.de/u-boot-arm

This commit is contained in:
Wolfgang Denk 2010-12-14 00:06:00 +01:00
commit 63440c4a80
19 changed files with 65 additions and 85 deletions

View File

@ -234,7 +234,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -288,7 +288,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -203,7 +203,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -249,7 +249,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -240,7 +240,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -40,6 +40,8 @@
#include <common.h> #include <common.h>
#include <asm/io.h> #include <asm/io.h>
DECLARE_GLOBAL_DATA_PTR;
struct davinci_timer { struct davinci_timer {
u_int32_t pid12; u_int32_t pid12;
u_int32_t emumgt; u_int32_t emumgt;
@ -57,11 +59,9 @@ struct davinci_timer {
static struct davinci_timer * const timer = static struct davinci_timer * const timer =
(struct davinci_timer *)CONFIG_SYS_TIMERBASE; (struct davinci_timer *)CONFIG_SYS_TIMERBASE;
#define TIMER_LOAD_VAL (CONFIG_SYS_HZ_CLOCK / CONFIG_SYS_HZ) #define TIMER_LOAD_VAL 0xffffffff
#define TIM_CLK_DIV 16
static ulong timestamp; #define TIM_CLK_DIV 16
static ulong lastinc;
int timer_init(void) int timer_init(void)
{ {
@ -71,72 +71,51 @@ int timer_init(void)
writel(0x06 | ((TIM_CLK_DIV - 1) << 8), &timer->tgcr); writel(0x06 | ((TIM_CLK_DIV - 1) << 8), &timer->tgcr);
writel(0x0, &timer->tim34); writel(0x0, &timer->tim34);
writel(TIMER_LOAD_VAL, &timer->prd34); writel(TIMER_LOAD_VAL, &timer->prd34);
lastinc = 0;
timestamp = 0;
writel(2 << 22, &timer->tcr); writel(2 << 22, &timer->tcr);
gd->timer_rate_hz = CONFIG_SYS_HZ_CLOCK / TIM_CLK_DIV;
gd->timer_reset_value = 0;
return(0); return(0);
} }
void reset_timer(void) void reset_timer(void)
{ {
writel(0x0, &timer->tcr); gd->timer_reset_value = get_ticks();
writel(0x0, &timer->tim34);
lastinc = 0;
timestamp = 0;
writel(2 << 22, &timer->tcr);
} }
static ulong get_timer_raw(void) /*
* Get the current 64 bit timer tick count
*/
unsigned long long get_ticks(void)
{ {
ulong now = readl(&timer->tim34); unsigned long now = readl(&timer->tim34);
if (now >= lastinc) { /* increment tbu if tbl has rolled over */
/* normal mode */ if (now < gd->tbl)
timestamp += now - lastinc; gd->tbu++;
} else { gd->tbl = now;
/* overflow ... */
timestamp += now + TIMER_LOAD_VAL - lastinc; return (((unsigned long long)gd->tbu) << 32) | gd->tbl;
}
lastinc = now;
return timestamp;
} }
ulong get_timer(ulong base) ulong get_timer(ulong base)
{ {
return((get_timer_raw() / (TIMER_LOAD_VAL / TIM_CLK_DIV)) - base); unsigned long long timer_diff;
}
void set_timer(ulong t) timer_diff = get_ticks() - gd->timer_reset_value;
{
timestamp = t; return (timer_diff / (gd->timer_rate_hz / CONFIG_SYS_HZ)) - base;
} }
void __udelay(unsigned long usec) void __udelay(unsigned long usec)
{ {
ulong tmo; unsigned long long endtime;
ulong endtime;
signed long diff;
tmo = CONFIG_SYS_HZ_CLOCK / 1000; endtime = ((unsigned long long)usec * gd->timer_rate_hz) / 1000000UL;
tmo *= usec; endtime += get_ticks();
tmo /= (1000 * TIM_CLK_DIV);
endtime = get_timer_raw() + tmo; while (get_ticks() < endtime)
;
do {
ulong now = get_timer_raw();
diff = endtime - now;
} while (diff >= 0);
}
/*
* This function is derived from PowerPC code (read timebase as long long).
* On ARM it just returns the timer value.
*/
unsigned long long get_ticks(void)
{
return(get_timer(0));
} }
/* /*

View File

@ -239,7 +239,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -211,7 +211,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -207,7 +207,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -35,8 +35,8 @@
#include <common.h> #include <common.h>
#include <asm/io.h> #include <asm/io.h>
static ulong timestamp; DECLARE_GLOBAL_DATA_PTR;
static ulong lastinc;
static struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE; static struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
/* /*
@ -74,7 +74,7 @@ ulong get_timer(ulong base)
void set_timer(ulong t) void set_timer(ulong t)
{ {
timestamp = t; gd->tbl = t;
} }
/* delay x useconds */ /* delay x useconds */
@ -96,8 +96,8 @@ void __udelay(unsigned long usec)
void reset_timer_masked(void) void reset_timer_masked(void)
{ {
/* reset time, capture current incrementer value time */ /* reset time, capture current incrementer value time */
lastinc = readl(&timer_base->tcrr) / (TIMER_CLOCK / CONFIG_SYS_HZ); gd->lastinc = readl(&timer_base->tcrr) / (TIMER_CLOCK / CONFIG_SYS_HZ);
timestamp = 0; /* start "advancing" time stamp from 0 */ gd->tbl = 0; /* start "advancing" time stamp from 0 */
} }
ulong get_timer_masked(void) ulong get_timer_masked(void)
@ -105,14 +105,14 @@ ulong get_timer_masked(void)
/* current tick value */ /* current tick value */
ulong now = readl(&timer_base->tcrr) / (TIMER_CLOCK / CONFIG_SYS_HZ); ulong now = readl(&timer_base->tcrr) / (TIMER_CLOCK / CONFIG_SYS_HZ);
if (now >= lastinc) /* normal mode (non roll) */ if (now >= gd->lastinc) /* normal mode (non roll) */
/* move stamp fordward with absoulte diff ticks */ /* move stamp fordward with absoulte diff ticks */
timestamp += (now - lastinc); gd->tbl += (now - gd->lastinc);
else /* we have rollover of incrementer */ else /* we have rollover of incrementer */
timestamp += ((TIMER_LOAD_VAL / (TIMER_CLOCK / CONFIG_SYS_HZ)) gd->tbl += ((TIMER_LOAD_VAL / (TIMER_CLOCK / CONFIG_SYS_HZ))
- lastinc) + now; - gd->lastinc) + now;
lastinc = now; gd->lastinc = now;
return timestamp; return gd->tbl;
} }
/* /*

View File

@ -29,6 +29,7 @@
#include <asm/arch/sys_proto.h> #include <asm/arch/sys_proto.h>
#include <asm/arch/emif4.h> #include <asm/arch/emif4.h>
DECLARE_GLOBAL_DATA_PTR;
extern omap3_sysinfo sysinfo; extern omap3_sysinfo sysinfo;
static emif4_t *emif4_base = (emif4_t *)OMAP34XX_SDRC_BASE; static emif4_t *emif4_base = (emif4_t *)OMAP34XX_SDRC_BASE;
@ -139,7 +140,6 @@ void do_emif4_init(void)
*/ */
int dram_init(void) int dram_init(void)
{ {
DECLARE_GLOBAL_DATA_PTR;
unsigned int size0 = 0, size1 = 0; unsigned int size0 = 0, size1 = 0;
size0 = get_sdr_cs_size(CS0); size0 = get_sdr_cs_size(CS0);
@ -157,7 +157,6 @@ int dram_init(void)
void dram_init_banksize (void) void dram_init_banksize (void)
{ {
DECLARE_GLOBAL_DATA_PTR;
unsigned int size0 = 0, size1 = 0; unsigned int size0 = 0, size1 = 0;
size0 = get_sdr_cs_size(CS0); size0 = get_sdr_cs_size(CS0);

View File

@ -37,6 +37,7 @@
#include <asm/arch/mem.h> #include <asm/arch/mem.h>
#include <asm/arch/sys_proto.h> #include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
extern omap3_sysinfo sysinfo; extern omap3_sysinfo sysinfo;
static struct sdrc *sdrc_base = (struct sdrc *)OMAP34XX_SDRC_BASE; static struct sdrc *sdrc_base = (struct sdrc *)OMAP34XX_SDRC_BASE;
@ -172,7 +173,6 @@ void do_sdrc_init(u32 cs, u32 early)
*/ */
int dram_init(void) int dram_init(void)
{ {
DECLARE_GLOBAL_DATA_PTR;
unsigned int size0 = 0, size1 = 0; unsigned int size0 = 0, size1 = 0;
size0 = get_sdr_cs_size(CS0); size0 = get_sdr_cs_size(CS0);
@ -194,7 +194,6 @@ int dram_init(void)
void dram_init_banksize (void) void dram_init_banksize (void)
{ {
DECLARE_GLOBAL_DATA_PTR;
unsigned int size0 = 0, size1 = 0; unsigned int size0 = 0, size1 = 0;
size0 = get_sdr_cs_size(CS0); size0 = get_sdr_cs_size(CS0);

View File

@ -209,7 +209,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -333,7 +333,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -220,7 +220,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -287,7 +287,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -192,7 +192,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -196,7 +196,7 @@ fixabs:
mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */ mov r1, r1, LSR #4 /* r1 <- symbol index in .dynsym */
add r1, r10, r1 /* r1 <- address of symbol in table */ add r1, r10, r1 /* r1 <- address of symbol in table */
ldr r1, [r1, #4] /* r1 <- symbol value */ ldr r1, [r1, #4] /* r1 <- symbol value */
add r1, r9 /* r1 <- relocated sym addr */ add r1, r1, r9 /* r1 <- relocated sym addr */
b fixnext b fixnext
fixrel: fixrel:
/* relative fix: increase location by offset */ /* relative fix: increase location by offset */

View File

@ -50,7 +50,7 @@
/*=======*/ /*=======*/
#define DV_EVM #define DV_EVM
#define CONFIG_SYS_NAND_SMALLPAGE #define CONFIG_SYS_NAND_SMALLPAGE
#define CONFIG_SYS_USE_NOR #define CONFIG_SYS_USE_NAND
#define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_CPUINFO
/*===================*/ /*===================*/
/* SoC Configuration */ /* SoC Configuration */
@ -78,6 +78,7 @@
#define CONFIG_STACKSIZE (256*1024) /* regular stack */ #define CONFIG_STACKSIZE (256*1024) /* regular stack */
#define PHYS_SDRAM_1 0x80000000 /* DDR Start */ #define PHYS_SDRAM_1 0x80000000 /* DDR Start */
#define PHYS_SDRAM_1_SIZE 0x10000000 /* DDR size 256MB */ #define PHYS_SDRAM_1_SIZE 0x10000000 /* DDR size 256MB */
#define DDR_8BANKS /* 8-bank DDR2 (256MB) */ #define DDR_8BANKS /* 8-bank DDR2 (256MB) */
/*====================*/ /*====================*/
/* Serial Driver info */ /* Serial Driver info */
@ -228,11 +229,13 @@
#define CONFIG_PREBOOT "usb start" #define CONFIG_PREBOOT "usb start"
#endif #endif
#endif #endif
/*=======================*/
/* KGDB support (if any) */ #define CONFIG_MAX_RAM_BANK_SIZE (256 << 20) /* 256 MB */
/*=======================*/
#ifdef CONFIG_CMD_KGDB #define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */ #define CONFIG_SYS_INIT_RAM_SIZE 0x1000
#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */ #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + \
#endif CONFIG_SYS_INIT_RAM_SIZE - \
GENERATED_GBL_DATA_SIZE)
#endif /* __CONFIG_H */ #endif /* __CONFIG_H */