Commit 196c7431 authored by Kyungmin Park's avatar Kyungmin Park Committed by Scott Wood
Browse files

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: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent 16f2f5a3
......@@ -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 (;;);
}
......@@ -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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment