|
|
@ -26,6 +26,7 @@ |
|
|
|
#include <asm/u-boot.h> |
|
|
|
#include <asm/u-boot.h> |
|
|
|
#include <asm/utils.h> |
|
|
|
#include <asm/utils.h> |
|
|
|
#include <asm/arch/sys_proto.h> |
|
|
|
#include <asm/arch/sys_proto.h> |
|
|
|
|
|
|
|
#include <nand.h> |
|
|
|
#include <mmc.h> |
|
|
|
#include <mmc.h> |
|
|
|
#include <fat.h> |
|
|
|
#include <fat.h> |
|
|
|
#include <timestamp_autogenerated.h> |
|
|
|
#include <timestamp_autogenerated.h> |
|
|
@ -173,7 +174,7 @@ end: |
|
|
|
hang(); |
|
|
|
hang(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void mmc_load_image(void) __attribute__((unused)); |
|
|
|
static void mmc_load_image(void) |
|
|
|
static void mmc_load_image(void) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct mmc *mmc; |
|
|
|
struct mmc *mmc; |
|
|
@ -207,12 +208,48 @@ static void mmc_load_image(void) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_SPL_NAND_SUPPORT |
|
|
|
|
|
|
|
static void nand_load_image(void) __attribute__ ((unused)); |
|
|
|
|
|
|
|
static void nand_load_image(void) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
struct image_header *header; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gpmc_init(); |
|
|
|
|
|
|
|
nand_init(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*use CONFIG_SYS_TEXT_BASE as temporary storage area */ |
|
|
|
|
|
|
|
header = (struct image_header *)(CONFIG_SYS_TEXT_BASE); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_NAND_ENV_DST |
|
|
|
|
|
|
|
nand_spl_load_image(CONFIG_ENV_OFFSET, |
|
|
|
|
|
|
|
CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); |
|
|
|
|
|
|
|
parse_image_header(header); |
|
|
|
|
|
|
|
nand_spl_load_image(CONFIG_ENV_OFFSET, image_size, |
|
|
|
|
|
|
|
(void *)image_load_addr); |
|
|
|
|
|
|
|
#ifdef CONFIG_ENV_OFFSET_REDUND |
|
|
|
|
|
|
|
nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, |
|
|
|
|
|
|
|
CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); |
|
|
|
|
|
|
|
parse_image_header(header); |
|
|
|
|
|
|
|
nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, image_size, |
|
|
|
|
|
|
|
(void *)image_load_addr); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
/* Load u-boot */ |
|
|
|
|
|
|
|
nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS, |
|
|
|
|
|
|
|
CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); |
|
|
|
|
|
|
|
parse_image_header(header); |
|
|
|
|
|
|
|
nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS, |
|
|
|
|
|
|
|
image_size, (void *)image_load_addr); |
|
|
|
|
|
|
|
nand_deselect(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#endif /* CONFIG_SPL_NAND_SUPPORT */ |
|
|
|
void jump_to_image_no_args(void) |
|
|
|
void jump_to_image_no_args(void) |
|
|
|
{ |
|
|
|
{ |
|
|
|
typedef void (*image_entry_noargs_t)(void)__attribute__ ((noreturn)); |
|
|
|
typedef void (*image_entry_noargs_t)(void)__attribute__ ((noreturn)); |
|
|
|
image_entry_noargs_t image_entry = |
|
|
|
image_entry_noargs_t image_entry = |
|
|
|
(image_entry_noargs_t) image_entry_point; |
|
|
|
(image_entry_noargs_t) image_entry_point; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
debug("image entry point: 0x%X\n", image_entry_point); |
|
|
|
image_entry(); |
|
|
|
image_entry(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -228,10 +265,17 @@ void board_init_r(gd_t *id, ulong dummy) |
|
|
|
boot_device = omap_boot_device(); |
|
|
|
boot_device = omap_boot_device(); |
|
|
|
debug("boot device - %d\n", boot_device); |
|
|
|
debug("boot device - %d\n", boot_device); |
|
|
|
switch (boot_device) { |
|
|
|
switch (boot_device) { |
|
|
|
|
|
|
|
#ifdef CONFIG_SPL_MMC_SUPPORT |
|
|
|
case BOOT_DEVICE_MMC1: |
|
|
|
case BOOT_DEVICE_MMC1: |
|
|
|
case BOOT_DEVICE_MMC2: |
|
|
|
case BOOT_DEVICE_MMC2: |
|
|
|
mmc_load_image(); |
|
|
|
mmc_load_image(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef CONFIG_SPL_NAND_SUPPORT |
|
|
|
|
|
|
|
case BOOT_DEVICE_NAND: |
|
|
|
|
|
|
|
nand_load_image(); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
#endif |
|
|
|
default: |
|
|
|
default: |
|
|
|
printf("SPL: Un-supported Boot Device - %d!!!\n", boot_device); |
|
|
|
printf("SPL: Un-supported Boot Device - %d!!!\n", boot_device); |
|
|
|
hang(); |
|
|
|
hang(); |
|
|
|