]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
Reduce OneNAND IPL common code
authorKyungmin Park <kmpark@infradead.org>
Tue, 3 Mar 2009 00:05:53 +0000 (09:05 +0900)
committerScott Wood <scottwood@freescale.com>
Mon, 23 Mar 2009 22:06:55 +0000 (17:06 -0500)
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>
onenand_ipl/onenand_boot.c
onenand_ipl/onenand_ipl.h

index aff62d29bb7d6d23fb36e895775b5c5c42e1c003..86428cc0525cadb5107717c164df2f086608f4ee 100644 (file)
 
 #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 (;;);
 }
index 3387998a97aa380357c04bc18adcf3c9ad7499c6..57e54f5cbcd0e1560fcead398901a307a716ea1b 100644 (file)
 
 #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)