#endif
extern ulong __init_end;
-extern ulong _end;
+extern ulong __bss_end__;
ulong monitor_flash_len;
#if defined(CONFIG_CMD_BEDBUG)
static int init_baudrate (void)
{
- char tmp[64]; /* long enough for environment variables */
- int i = getenv_f("baudrate", tmp, sizeof (tmp));
-
- gd->baudrate = (i > 0)
- ? (int) simple_strtoul (tmp, NULL, 10)
- : CONFIG_BAUDRATE;
- return (0);
+ gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
+ return 0;
}
/***********************************************************************/
}
int board_flash_wp_on(void) __attribute__((weak, alias("__board_flash_wp_on")));
+void __cpu_secondary_init_r(void)
+{
+}
+void cpu_secondary_init_r(void)
+__attribute__((weak, alias("__cpu_secondary_init_r")));
+
static int init_func_ram (void)
{
#ifdef CONFIG_BOARD_TYPES
gd_t *id;
init_fnc_t **init_fnc_ptr;
#ifdef CONFIG_PRAM
- int i;
ulong reg;
- uchar tmp[64]; /* long enough for environment variables */
#endif
/* Pointer is writable since we allocated a register for it */
* - monitor code
* - board info struct
*/
- len = (ulong)&_end - CONFIG_SYS_MONITOR_BASE;
+ len = (ulong)&__bss_end__ - CONFIG_SYS_MONITOR_BASE;
/*
* Subtract specified amount of memory to hide so that it won't
/*
* reserve protected RAM
*/
- i = getenv_f("pram", (char *)tmp, sizeof (tmp));
- reg = (i > 0) ? simple_strtoul ((const char *)tmp, NULL, 10) : CONFIG_PRAM;
+ reg = getenv_ulong("pram", 10, CONFIG_PRAM);
addr -= (reg << 10); /* size is in kB */
- debug ("Reserving %ldk for protected RAM at %08lx\n", reg, addr);
+ debug("Reserving %ldk for protected RAM at %08lx\n", reg, addr);
#endif /* CONFIG_PRAM */
/* round down to next 4 kB limit */
debug ("Top of RAM usable for U-Boot at: %08lx\n", addr);
#ifdef CONFIG_LCD
+#ifdef CONFIG_FB_ADDR
+ gd->fb_base = CONFIG_FB_ADDR;
+#else
/* reserve memory for LCD display (always full pages) */
addr = lcd_setmem (addr);
gd->fb_base = addr;
+#endif /* CONFIG_FB_ADDR */
#endif /* CONFIG_LCD */
#if defined(CONFIG_VIDEO) && defined(CONFIG_8xx)
/* relocate environment function pointers etc. */
env_relocate ();
+ /*
+ * after non-volatile devices & environment is setup and cpu code have
+ * another round to deal with any initialization that might require
+ * full access to the environment or loading of some image (firmware)
+ * from a non-volatile device
+ */
+ cpu_secondary_init_r();
+
/*
* Fill in missing fields of bd_info.
* We do this here, where we have "normal" access to the
udelay (20);
- set_timer (0);
-
/* Initialize from environment */
- if ((s = getenv ("loadaddr")) != NULL) {
- load_addr = simple_strtoul (s, NULL, 16);
- }
+ load_addr = getenv_ulong("loadaddr", 16, load_addr);
#if defined(CONFIG_CMD_NET)
if ((s = getenv ("bootfile")) != NULL) {
copy_filename (BootFile, s, sizeof (BootFile));
WATCHDOG_RESET ();
-#if defined(CONFIG_DTT) /* Digital Thermometers and Thermostats */
- dtt_init ();
-#endif
#if defined(CONFIG_CMD_SCSI)
WATCHDOG_RESET ();
puts ("SCSI: ");
bb_miiphy_init();
#endif
#if defined(CONFIG_CMD_NET)
-#if defined(CONFIG_NET_MULTI)
WATCHDOG_RESET ();
puts ("Net: ");
-#endif
eth_initialize (bd);
#endif
* taking into account the protected RAM at top of memory
*/
{
- ulong pram;
+ ulong pram = 0;
uchar memsz[32];
-#ifdef CONFIG_PRAM
- char *s;
- if ((s = getenv ("pram")) != NULL) {
- pram = simple_strtoul (s, NULL, 10);
- } else {
- pram = CONFIG_PRAM;
- }
-#else
- pram=0;
+#ifdef CONFIG_PRAM
+ pram = getenv_ulong("pram", 10, CONFIG_PRAM);
#endif
#ifdef CONFIG_LOGBUFFER
#ifndef CONFIG_ALT_LB_ADDR