#include <version.h>
#include <asm/omap_common.h>
-void spl_nand_load_image(void)
+int spl_nand_load_image(void)
{
+ int ret;
struct image_header *header;
int *src __attribute__((unused));
int *dst __attribute__((unused));
- switch (omap_boot_mode()) {
- case NAND_MODE_HW_ECC:
- debug("spl: nand - using hw ecc\n");
- gpmc_init();
- nand_init();
- break;
- default:
- puts("spl: ERROR: This bootmode is not implemented - hanging");
- hang();
- }
+ debug("spl: nand - using hw ecc\n");
+ gpmc_init();
+ nand_init();
/*use CONFIG_SYS_TEXT_BASE as temporary storage area */
- header = (struct image_header *)(CONFIG_SYS_TEXT_BASE);
+ header = (struct image_header *)CONFIG_SYS_TEXT_BASE;
#ifdef CONFIG_SPL_OS_BOOT
if (!spl_start_uboot()) {
/*
nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS,
spl_image.size, (void *)spl_image.load_addr);
nand_deselect();
- return;
+ return 0;
} else {
printf("The Expected Linux image was not"
"found. Please check your NAND"
#endif
#endif
/* Load u-boot */
- nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
- CONFIG_SYS_NAND_PAGE_SIZE, (void *)header);
- spl_parse_image_header(header);
- nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
- spl_image.size, (void *)spl_image.load_addr);
+ ret = nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
+ CONFIG_SYS_NAND_PAGE_SIZE, (void *)header);
+ if (ret == 0) {
+ spl_parse_image_header(header);
+ ret = nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
+ spl_image.size, (void *)spl_image.load_addr);
+ }
nand_deselect();
+ return ret;
}
#elif defined(CONFIG_AM33XX) /* AM33XX */
#define BOOT_DEVICE_NAND 5
#define BOOT_DEVICE_MMC1 8
-#define BOOT_DEVICE_MMC2 0
+#define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
#define BOOT_DEVICE_UART 65
#define BOOT_DEVICE_MMC2_2 0xFF
#endif
int spl_start_uboot(void);
/* NAND SPL functions */
-void spl_nand_load_image(void);
+int spl_nand_load_image(void);
/* MMC SPL functions */
void spl_mmc_load_image(void);