#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 */
void hang(void)
{
- /* if board_hang() returns, hange here */
- printf("X-Loader hangs\n");
- for (;;);
+ for (;;);
}
#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)