the write-protected part of the flash memory.
* Allow printing of image timestamps even when no RTC support is
available (option CONFIG_TIMESTAMP); fix byteorder problems in
timestamp code.
* Enable Modem Support on TRAB
+======================================================================
+Modifications since 1.2.1:
+======================================================================
+
+* ARM: Do not include BSS segment in the calculation of the size of
+ the write-protected part of the flash memory.
+
+* Allow printing of image timestamps even when no RTC support is
+ available (option CONFIG_TIMESTAMP); fix byteorder problems in
+ timestamp code.
+
+* Patch by David Müller, 12 Oct 2002:
+ - common/cmd_i2c.c
+ endian problem on ARM platform fixed (Not sure if i found all)
+
+ - cpu/arm920t/Makefile
+ - cpu/arm920t/speed.c
+ provide interface to "clock maschine" of S3C24xx chips
+
+ - cpu/arm920t/interrupts.c
+ make use of new "clocks" interface to simpifiy things
+
+ - cpu/arm920t/serial.c
+ make use of new "clocks" interface to simplifiy things
+
+ - lib_arm/board.c
+ move interrupt_init() up in table so udelay() is available
+ in env_init()
+
+ - include/common.h
+ added "noreturn" attribute to hang() -> fixes compiler warning
+ added prototypes for functions defined in cpu/arm920t/speed.c
+
+ - include/configs/smdk2400.h
+ - include/configs/smdk2410.h
+ - include/configs/trab.h
+ added CONFIG_PLL_INPUT_FREQ value used by cpu/arm920t/speed.c
+
+
======================================================================
Modifications for 1.2.1:
======================================================================
CONFIG_RTC_MC146818 - use MC146818 RTC
CONFIG_RTC_DS1337 - use Maxim, Inc. DS1337 RTC
+- Timestamp Support:
+
+ When CONFIG_TIMESTAMP is selected, the timestamp
+ (date and time) of an image is printed by image
+ commands like bootm or iminfo. This option is
+ automatically enabled when you select CFG_CMD_DATE .
+
- Partition Support:
CONFIG_MAC_PARTITION and/or CONFIG_DOS_PARTITION
and/or CONFIG_ISO_PARTITION
*/
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
*/
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
*/
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
/* Protect monitor and environment sectors
*/
- flash_protect (FLAG_PROTECT_SET,
- CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
- &flash_info[0]);
-
- flash_protect (FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
+ flash_protect ( FLAG_PROTECT_SET,
+ CFG_FLASH_BASE,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
+ &flash_info[0]);
+
+ flash_protect ( FLAG_PROTECT_SET,
+ CFG_ENV_ADDR,
+ CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
return size;
}
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
*/
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
*/
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
*/
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
#else
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
/* #define DEBUG */
#include <common.h>
+#include <environment.h>
#define FLASH_BANK_SIZE 0x1000000 /* 2 x 8 MB */
#define MAIN_SECT_SIZE 0x40000 /* 2 x 128 kB */
*/
flash_protect ( FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect ( FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
flash_protect(FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect(FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
/* #define DEBUG */
#include <common.h>
+#include <environment.h>
ulong myflush (void);
*/
flash_protect ( FLAG_PROTECT_SET,
CFG_FLASH_BASE,
- CFG_FLASH_BASE + _armboot_end - _armboot_start,
+ CFG_FLASH_BASE + _armboot_end_data - _armboot_start,
&flash_info[0]);
flash_protect ( FLAG_PROTECT_SET,
. = ALIGN(4);
.got : { *(.got) }
+ armboot_end_data = .;
+
. = ALIGN(4);
.bss : { *(.bss) }
#include <malloc.h>
#include <zlib.h>
#include <asm/byteorder.h>
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
+#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
#include <rtc.h>
#endif
void
print_image_hdr (image_header_t *hdr)
{
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
- time_t timestamp = (time_t)hdr->ih_time;
+#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
+ time_t timestamp = (time_t)ntohl(hdr->ih_time);
struct rtc_time tm;
#endif
printf (" Image Name: %.*s\n", IH_NMLEN, hdr->ih_name);
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
+#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
to_tm (timestamp, &tm);
printf (" Created: %4d-%02d-%02d %2d:%02d:%02d UTC\n",
tm.tm_year, tm.tm_mon, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
-#endif /* CFG_CMD_DATE */
+#endif /* CFG_CMD_DATE, CONFIG_TIMESTAMP */
printf (" Image Type: "); print_type(hdr); printf ("\n");
printf (" Data Size: %d Bytes = ", ntohl(hdr->ih_size));
print_size (ntohl(hdr->ih_size), "\n");
#include <command.h>
#include <cmd_i2c.h>
#include <i2c.h>
+#include <asm/byteorder.h>
#if (CONFIG_COMMANDS & CFG_CMD_I2C)
if(i2c_read(chip, addr, alen, (char *)&data, size) != 0) {
printf("\nError reading the chip,\n");
} else {
+ data = cpu_to_be32(data);
if(size == 1) {
printf(" %02lx", (data >> 24) & 0x000000FF);
} else if(size == 2) {
} else if(size == 2) {
data = data << 16;
}
+ data = be32_to_cpu(data);
nbytes = endp - console_buffer;
if (nbytes) {
#ifdef CONFIG_BOOT_RETRY_TIME
.word _start
/*
- * Note: armboot_end is defined by the (board-dependent) linker script
+ * Note: _armboot_end_data and _armboot_end are defined
+ * by the (board-dependent) linker script.
+ * _armboot_end_data is the first usable FLASH address after armboot
*/
+.globl _armboot_end_data
+_armboot_end_data:
+ .word armboot_end_data
.globl _armboot_end
_armboot_end:
.word armboot_end
LIB = lib$(CPU).a
START = start.o
-OBJS = serial.o interrupts.o cpu.o
+OBJS = serial.o interrupts.o cpu.o speed.o
all: .depend $(START) $(LIB)
#include <asm/proc-armv/ptrace.h>
extern void reset_cpu(ulong addr);
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
-extern void samsung_get_fclk(void);
-/* this is the same as PCLK, needed to calculate timer_load_val */
-extern unsigned int samsung_uartclk;
int timer_load_val = 0;
-#endif
-
-/* for 10 ms clock period @ 50 MHz with 4 bit divider = 1/2 (default) */
-/* and prescaler = 16 */
-#define TIMER_LOAD_VAL 15625
/* macro to read the 16 bit timer */
#define READ_TIMER (rTCNTO4 & 0xffff)
/* use PWM Timer 4 because it has no output */
/* prescaler for Timer 4 is 16 */
rTCFG0 = 0x0f00;
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
if (timer_load_val == 0)
{
- if (samsung_uartclk == 0)
- samsung_get_fclk();
/*
* for 10 ms clock period @ PCLK with 4 bit divider = 1/2
* (default) and prescaler = 16. Should be 10390
* @33.25MHz and 15625 @ 50 MHz
*/
- timer_load_val = samsung_uartclk/(2 * 16 * 100);
+ timer_load_val = get_PCLK()/(2 * 16 * 100);
}
/* load value for 10 ms timeout */
lastdec = rTCNTB4 = timer_load_val;
-#elif defined(CONFIG_SMDK2410)
- /* load value for 10 ms timeout, assumes PCLK is 30 MHz !! */
- lastdec = rTCNTB4 = TIMER_LOAD_VAL;
-#endif
/* auto load, manual update of Timer 4 */
rTCON = 0x600000;
/* auto load, start Timer 4 */
ulong tmo;
tmo = usec / 1000;
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
tmo *= (timer_load_val * 100);
-#elif defined(CONFIG_SMDK2410)
- tmo *= CFG_HZ;
-#endif
tmo /= 1000;
tmo += get_timer (0);
timestamp += lastdec - now;
} else {
/* we have an overflow ... */
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
timestamp += lastdec + timer_load_val - now;
-#elif defined(CONFIG_SMDK2410)
- timestamp += lastdec + TIMER_LOAD_VAL - now;
-#endif
}
lastdec = now;
ulong tmo;
tmo = usec / 1000;
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
tmo *= (timer_load_val * 100);
-#elif defined(CONFIG_SMDK2410)
- tmo *= CFG_HZ;
-#endif
tmo /= 1000;
reset_timer_masked ();
*/
#include <common.h>
-#include <arm920t.h>
#if defined(CONFIG_S3C2400) || defined(CONFIG_TRAB)
#include <s3c2400.h>
#elif defined(CONFIG_S3C2410)
#include <s3c2410.h>
#endif
-unsigned int br[] = { 1562, 780, 390, 194, 32, 15 };
-
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
-/* dynamically determine the clock values */
-static unsigned int samsung_fclk = 0;
-unsigned int samsung_uartclk;
-void samsung_get_fclk(void)
-{
- unsigned int mpllcon = rMPLLCON;
- unsigned int clkdivn = rCLKDIVN & 3;
- int clk_factor[4] = {1, 2, 2, 4};
-
- /* the S3C2400 uses a 12 MHz xtal */
- /* formula from page 6-22 */
- samsung_fclk = ((12000000 * (8 + ((mpllcon & 0xff000) >> 12)))/((2 + ((mpllcon & 0x1f0) >> 4)) * (1 << (mpllcon & 3))));
- samsung_uartclk = samsung_fclk/clk_factor[clkdivn];
-}
-#endif
void serial_setbrg (void)
{
int i;
unsigned int reg = 0;
-#if defined(CONFIG_SMDK2400) || defined(CONFIG_TRAB)
- if (samsung_fclk == 0 || samsung_uartclk == 0)
- samsung_get_fclk();
-
- /* value is calculated so : (int)(PCLK/16./baudrate) -1 */
- reg = samsung_uartclk/(16 * gd->baudrate) - 1;
-#elif defined(CONFIG_SMDK2410)
- /* this assumes a PCLK of 50.7 MHz */
/* value is calculated so : (int)(PCLK/16./baudrate) -1 */
- if (gd->baudrate == 1200)
- reg = 2639;
- else if (gd->baudrate == 9600)
- reg = 329;
- else if (gd->baudrate == 19200)
- reg = 164;
- else if (gd->baudrate == 38400)
- reg = 82;
- else if (gd->baudrate == 57600)
- reg = 54;
- else if (gd->baudrate == 115200)
- reg = 27;
- else
- hang ();
-#else
-# error Bord config missing
-#endif
+ reg = get_PCLK() / (16 * gd->baudrate) - 1;
#ifdef CONFIG_SERIAL1
/* FIFO enable, Tx/Rx FIFO clear */
--- /dev/null
+/*
+ * (C) Copyright 2001-2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * (C) Copyright 2002
+ * David Mueller, ELSOFT AG, d.mueller@elsoft.ch
+ *
+ * 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
+ */
+
+/* This code should work for both the S3C2400 and the S3C2410
+ * as they seem to have the same PLL and clock machinery inside.
+ * The different address mapping is handled by the s3c24xx.h files below.
+ */
+
+#include <common.h>
+#if defined(CONFIG_S3C2400)
+#include <s3c2400.h>
+#elif defined(CONFIG_S3C2410)
+#include <s3c2410.h>
+#endif
+
+#define MPLL 0
+#define UPLL 1
+
+/* ------------------------------------------------------------------------- */
+/* NOTE: This describes the proper use of this file.
+ *
+ * CONFIG_PLL_INPUT_FREQ should be defined as the input frequency of the PLL.
+ *
+ * get_FCLK(), get_HCLK(), get_PCLK() and get_UCLK() return the clock of
+ * the specified bus in HZ.
+ */
+/* ------------------------------------------------------------------------- */
+
+static ulong get_PLLCLK(int pllreg)
+{
+ ulong r, m, p, s;
+
+ if (pllreg == MPLL)
+ r = rMPLLCON;
+ else if (pllreg == UPLL)
+ r = rUPLLCON;
+ else
+ hang();
+
+ m = ((r & 0xFF000) >> 12) + 8;
+ p = ((r & 0x003F0) >> 4) + 2;
+ s = r & 0x3;
+
+ return((CONFIG_PLL_INPUT_FREQ * m) / (p << s));
+}
+
+/* return FCLK frequency */
+ulong get_FCLK(void)
+{
+ return(get_PLLCLK(MPLL));
+}
+
+/* return HCLK frequency */
+ulong get_HCLK(void)
+{
+ ulong clkdiv = rCLKDIVN;
+
+ return((clkdiv & 0x2) ? get_FCLK()/2 : get_FCLK());
+}
+
+/* return PCLK frequency */
+ulong get_PCLK(void)
+{
+ ulong clkdiv = rCLKDIVN;
+
+ return((clkdiv & 0x1) ? get_HCLK()/2 : get_HCLK());
+}
+
+/* return UCLK frequency */
+ulong get_UCLK(void)
+{
+ return(get_PLLCLK(UPLL));
+}
.word _start
/*
- * Note: armboot_end is defined by the (board-dependent) linker script
+ * Note: _armboot_end_data and _armboot_end are defined
+ * by the (board-dependent) linker script.
+ * _armboot_end_data is the first usable FLASH address after armboot
*/
+.globl _armboot_end_data
+_armboot_end_data:
+ .word armboot_end_data
.globl _armboot_end
_armboot_end:
.word armboot_end
.word _start
/*
- * Note: armboot_end is defined by the (board-dependent) linker script
+ * Note: _armboot_end_data and _armboot_end are defined
+ * by the (board-dependent) linker script.
+ * _armboot_end_data is the first usable FLASH address after armboot
*/
+.globl _armboot_end_data
+_armboot_end_data:
+ .word armboot_end_data
.globl _armboot_end
_armboot_end:
.word armboot_end
.word _start
/*
- * Note: armboot_end is defined by the (board-dependent) linker script
+ * Note: _armboot_end_data and _armboot_end are defined
+ * by the (board-dependent) linker script.
+ * _armboot_end_data is the first usable FLASH address after armboot
*/
+.globl _armboot_end_data
+_armboot_end_data:
+ .word armboot_end_data
.globl _armboot_end
_armboot_end:
.word armboot_end
#define _PPCBOOT_ARM_H_ 1
/* for the following variables, see start.S */
-extern ulong _armboot_start; /* code start */
-extern ulong _armboot_end; /* code end */
-extern ulong IRQ_STACK_START; /* top of IRQ stack */
-extern ulong FIQ_STACK_START; /* top of FIQ stack */
-extern ulong _armboot_real_end; /* first usable RAM address */
+extern ulong _armboot_start; /* code start */
+extern ulong _armboot_end_data; /* code + data end */
+extern ulong _armboot_end; /* BSS end */
+extern ulong IRQ_STACK_START; /* top of IRQ stack */
+extern ulong FIQ_STACK_START; /* top of FIQ stack */
+extern ulong _armboot_real_end; /* first usable RAM address */
/* cpu/.../cpu.c */
int cpu_init(void);
int serial_buffered_tstc (void);
#endif /* CONFIG_SERIAL_SOFTWARE_FIFO */
-void hang (void);
+void hang (void) __attribute__ ((noreturn));
/* */
long int initdram (int);
ulong get_OPB_freq (void);
ulong get_PCI_freq (void);
#endif
-
+#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
+ulong get_FCLK (void);
+ulong get_HCLK (void);
+ulong get_PCLK (void);
+ulong get_UCLK (void);
+#endif
ulong get_bus_freq (ulong);
#if defined(CONFIG_4xx) || defined(CONFIG_IOP480)
#define CONFIG_S3C2400 1 /* in a SAMSUNG S3C2400 SoC */
#define CONFIG_SMDK2400 1 /* on an SAMSUNG SMDK2400 Board */
+/* input clock of PLL */
+#define CONFIG_PLL_INPUT_FREQ 12000000 /* SMDK2400 has 12 MHz input clock */
#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
#define CONFIG_BAUDRATE 115200
+#define CONFIG_TIMESTAMP 1 /* Print timestamp info for images */
+
#ifndef USE_920T_MMU
#define CONFIG_COMMANDS_tmp (CONFIG_CMD_DFL & ~CFG_CMD_CACHE)
#else
#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
+/* input clock of PLL */
+#define CONFIG_PLL_INPUT_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
+
+
#define USE_920T_MMU 1
#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
#define CONFIG_TRAB 1 /* on a TRAB Board */
#undef CONFIG_TRAB_50MHZ /* run the CPU at 50 MHz */
+/* input clock of PLL */
+#define CONFIG_PLL_INPUT_FREQ 12000000 /* TRAB has 12 MHz input clock */
+
#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
#define CONFIG_HWFLOW /* include RTS/CTS flow control support */
-#undef CONFIG_MODEM_SUPPORT /* enable modem initialization stuff */
+#define CONFIG_MODEM_SUPPORT /* enable modem initialization stuff */
#define CONFIG_MODEM_KEY_MAGIC "23" /* hold down these keys to enable modem */
#define CONFIG_BAUDRATE 115200
+#define CONFIG_TIMESTAMP 1 /* Print timestamp info for images */
+
#ifdef CONFIG_HWFLOW
#define CONFIG_COMMANDS_ADD_HWFLOW CFG_CMD_HWFLOW
#else
#ifndef USE_920T_MMU
#define CONFIG_COMMANDS ((CONFIG_CMD_DFL & ~CFG_CMD_CACHE) | \
- CFG_CMD_BSP | \
+ CFG_CMD_BSP | \
CONFIG_COMMANDS_ADD_HWFLOW | \
CONFIG_COMMANDS_ADD_VFD )
#else
-#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
- CFG_CMD_BSP | \
+#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
+ CFG_CMD_BSP | \
CONFIG_COMMANDS_ADD_HWFLOW | \
CONFIG_COMMANDS_ADD_VFD )
#endif
/*
- * (C) Copyright 2000
+ * (C) Copyright 2000-2002
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
#ifndef __VERSION_H__
#define __VERSION_H__
-#define PPCBOOT_VERSION "PPCBoot 1.2.1"
+#define PPCBOOT_VERSION "PPCBoot 1.2.2"
#endif /* __VERSION_H__ */
{
printf ("\n\n%s\n\n", version_string);
- printf ("ARMBoot code: %08lx -> %08lx\n",
- _armboot_start, _armboot_end);
+ printf ("ARMBoot code: %08lX -> %08lX BSS: -> %08lX\n",
+ _armboot_start, _armboot_end_data, _armboot_end);
#ifdef CONFIG_USE_IRQ
printf ("IRQ Stack: %08lx\n", IRQ_STACK_START);
printf ("FIQ Stack: %08lx\n", FIQ_STACK_START);
init_fnc_t *init_sequence[] = {
cpu_init, /* basic cpu dependent setup */
board_init, /* basic board dependent setup */
+ interrupt_init, /* set up exceptions */
env_init, /* initialize environment */
init_baudrate, /* initialze baudrate settings */
serial_init, /* serial communications setup */
display_banner,
- interrupt_init, /* set up exceptions */
dram_init, /* configure available RAM banks */
display_dram_config,
#include <command.h>
#include <rtc.h>
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
+#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
#define FEBRUARY 2
#define STARTOFTIME 1970