diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/cpu/armv8/start.S | 2 | ||||
-rw-r--r-- | arch/arm/mach-davinci/include/mach/hardware.h | 16 | ||||
-rw-r--r-- | arch/arm/mach-davinci/spl.c | 31 | ||||
-rw-r--r-- | arch/arm/mach-omap2/sec-common.c | 4 |
4 files changed, 41 insertions, 12 deletions
diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S index 140609de08..9535057355 100644 --- a/arch/arm/cpu/armv8/start.S +++ b/arch/arm/cpu/armv8/start.S @@ -98,7 +98,7 @@ save_boot_params_ret: /* Processor specific initialization */ bl lowlevel_init -#if CONFIG_IS_ENABLED(ARMV8_SPIN_TABLE) +#if defined(CONFIG_ARMV8_SPIN_TABLE) && !defined(CONFIG_SPL_BUILD) branch_if_master x0, x1, master_cpu b spin_table_secondary_jump /* never return */ diff --git a/arch/arm/mach-davinci/include/mach/hardware.h b/arch/arm/mach-davinci/include/mach/hardware.h index 2a0360a785..c31f38c8a2 100644 --- a/arch/arm/mach-davinci/include/mach/hardware.h +++ b/arch/arm/mach-davinci/include/mach/hardware.h @@ -475,12 +475,15 @@ int clk_get(enum davinci_clk_ids id); /* Boot config */ struct davinci_syscfg_regs { dv_reg revid; - dv_reg rsvd[13]; + dv_reg rsvd[7]; + dv_reg bootcfg; + dv_reg chiprevidr; + dv_reg rsvd2[4]; dv_reg kick0; dv_reg kick1; dv_reg rsvd1[52]; dv_reg mstpri[3]; - dv_reg rsvd2; + dv_reg rsvd3; dv_reg pinmux[20]; dv_reg suspsrc; dv_reg chipsig; @@ -495,6 +498,15 @@ struct davinci_syscfg_regs { #define davinci_syscfg_regs \ ((struct davinci_syscfg_regs *)DAVINCI_BOOTCFG_BASE) +enum { + DAVINCI_NAND8_BOOT = 0b001110, + DAVINCI_NAND16_BOOT = 0b010000, + DAVINCI_SD_OR_MMC_BOOT = 0b011100, + DAVINCI_MMC_ONLY_BOOT = 0b111100, + DAVINCI_SPI0_FLASH_BOOT = 0b001010, + DAVINCI_SPI1_FLASH_BOOT = 0b001100, +}; + #define pinmux(x) (&davinci_syscfg_regs->pinmux[x]) /* Emulation suspend bits */ diff --git a/arch/arm/mach-davinci/spl.c b/arch/arm/mach-davinci/spl.c index 0aeaa7d8b7..564c2008e0 100644 --- a/arch/arm/mach-davinci/spl.c +++ b/arch/arm/mach-davinci/spl.c @@ -52,14 +52,27 @@ u32 spl_boot_mode(const u32 boot_device) u32 spl_boot_device(void) { -#ifdef CONFIG_SPL_NAND_SIMPLE - return BOOT_DEVICE_NAND; -#elif defined(CONFIG_SPL_SPI_LOAD) - return BOOT_DEVICE_SPI; -#elif defined(CONFIG_SPL_MMC_LOAD) - return BOOT_DEVICE_MMC1; -#else - puts("Unknown boot device\n"); - hang(); + switch (davinci_syscfg_regs->bootcfg) { +#ifdef CONFIG_SPL_NAND_SUPPORT + case DAVINCI_NAND8_BOOT: + case DAVINCI_NAND16_BOOT: + return BOOT_DEVICE_NAND; #endif + +#ifdef CONFIG_SPL_MMC_SUPPORT + case DAVINCI_SD_OR_MMC_BOOT: + case DAVINCI_MMC_ONLY_BOOT: + return BOOT_DEVICE_MMC1; +#endif + +#ifdef CONFIG_SPL_SPI_FLASH_SUPPORT + case DAVINCI_SPI0_FLASH_BOOT: + case DAVINCI_SPI1_FLASH_BOOT: + return BOOT_DEVICE_SPI; +#endif + + default: + puts("Unknown boot device\n"); + hang(); + } } diff --git a/arch/arm/mach-omap2/sec-common.c b/arch/arm/mach-omap2/sec-common.c index 246a2393da..c5a000ac3a 100644 --- a/arch/arm/mach-omap2/sec-common.c +++ b/arch/arm/mach-omap2/sec-common.c @@ -21,7 +21,11 @@ #include <spl.h> /* Index for signature verify ROM API */ +#ifdef CONFIG_AM33XX +#define API_HAL_KM_VERIFYCERTIFICATESIGNATURE_INDEX (0x0000000C) +#else #define API_HAL_KM_VERIFYCERTIFICATESIGNATURE_INDEX (0x0000000E) +#endif static uint32_t secure_rom_call_args[5] __aligned(ARCH_DMA_MINALIGN); |