summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyungmin Park <kmpark@infradead.org>2009-03-03 09:05:53 +0900
committerScott Wood <scottwood@freescale.com>2009-03-23 17:06:55 -0500
commit196c74311f394c6eb08bd9ab07a35671299b9851 (patch)
tree135d65adf5740204502bb6c89ff482edbd021c48
parent16f2f5a351004129e79e79816697a367fd9e5446 (diff)
downloadu-boot-imx-196c74311f394c6eb08bd9ab07a35671299b9851.zip
u-boot-imx-196c74311f394c6eb08bd9ab07a35671299b9851.tar.gz
u-boot-imx-196c74311f394c6eb08bd9ab07a35671299b9851.tar.bz2
Reduce OneNAND IPL common code
OneNAND IPL has common codes for RAM init, load data, and jump to 2nd bootloader, but it's common code used about 300~400 bytes. So board specific codes, such as lowlevel_init, can't has enough code. It make a difficult to implement OneNAND IPL. his patch make this common code as small as possible. and give lowlevel_init can have more codes. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
-rw-r--r--onenand_ipl/onenand_boot.c36
-rw-r--r--onenand_ipl/onenand_ipl.h6
2 files changed, 2 insertions, 40 deletions
diff --git a/onenand_ipl/onenand_boot.c b/onenand_ipl/onenand_boot.c
index aff62d2..86428cc 100644
--- a/onenand_ipl/onenand_boot.c
+++ b/onenand_ipl/onenand_boot.c
@@ -28,46 +28,16 @@
#include "onenand_ipl.h"
-#ifdef CONFIG_SYS_PRINTF
-int print_info(void)
-{
- printf(XLOADER_VERSION);
-
- return 0;
-}
-#endif
-
typedef int (init_fnc_t)(void);
-init_fnc_t *init_sequence[] = {
- board_init, /* basic board dependent setup */
-#ifdef CONFIG_SYS_PRINTF
- serial_init, /* serial communications setup */
- print_info,
-#endif
- NULL,
-};
-
void start_oneboot(void)
{
- init_fnc_t **init_fnc_ptr;
uchar *buf;
- for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
- if ((*init_fnc_ptr)() != 0)
- hang();
- }
-
buf = (uchar *) CONFIG_SYS_LOAD_ADDR;
- if (!onenand_read_block0(buf))
- buf += ONENAND_BLOCK_SIZE;
-
- if (buf == (uchar *)CONFIG_SYS_LOAD_ADDR)
- hang();
+ onenand_read_block0(buf);
- /* go run U-Boot and never return */
- printf("Starting OS Bootloader...\n");
((init_fnc_t *)CONFIG_SYS_LOAD_ADDR)();
/* should never come here */
@@ -75,7 +45,5 @@ void start_oneboot(void)
void hang(void)
{
- /* if board_hang() returns, hange here */
- printf("X-Loader hangs\n");
- for (;;);
+ for (;;);
}
diff --git a/onenand_ipl/onenand_ipl.h b/onenand_ipl/onenand_ipl.h
index 3387998..57e54f5 100644
--- a/onenand_ipl/onenand_ipl.h
+++ b/onenand_ipl/onenand_ipl.h
@@ -23,12 +23,6 @@
#include <linux/mtd/onenand_regs.h>
-#define ONENAND_BLOCK_SIZE 2048
-
-#ifndef CONFIG_SYS_PRINTF
-#define printf(format, args...)
-#endif
-
#define onenand_readw(a) readw(a)
#define onenand_writew(v, a) writew(v, a)