SECURE_BOOT: Enable SD as a source for bootscript
authorSumit Garg <sumit.garg@nxp.com>
Tue, 14 Jun 2016 17:52:39 +0000 (13:52 -0400)
committerYork Sun <york.sun@nxp.com>
Tue, 26 Jul 2016 16:01:43 +0000 (09:01 -0700)
Add support for reading bootscript and bootscript header from SD. Also
renamed macros *_FLASH to *_DEVICE to represent SD alongwith NAND and
NOR flash.

Reviewed-by: Aneesh Bansal <aneesh.bansal@nxp.com>
Signed-off-by: Sumit Garg <sumit.garg@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: York Sun <york.sun@nxp.com>
arch/arm/include/asm/fsl_secure_boot.h
arch/powerpc/include/asm/fsl_secure_boot.h
include/config_fsl_chain_trust.h

index 3f76c9a..b35c271 100644 (file)
        "setenv hwconfig \'fsl_ddr:ctlr_intlv=null,bank_intlv=null\';"
 #else
 #define CONFIG_EXTRA_ENV \
-       "setenv fdt_high 0xcfffffff;"   \
-       "setenv initrd_high 0xcfffffff;"        \
+       "setenv fdt_high 0xffffffff;"   \
+       "setenv initrd_high 0xffffffff;"        \
        "setenv hwconfig \'fsl_ddr:ctlr_intlv=null,bank_intlv=null\';"
 #endif
 
 /* Copying Bootscript and Header to DDR from NOR for LS2 and for rest, from
  * Non-XIP Memory (Nand/SD)*/
-#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_LS2080A)
+#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_LS2080A) || \
+       defined(CONFIG_SD_BOOT)
 #define CONFIG_BOOTSCRIPT_COPY_RAM
 #endif
-/* The address needs to be modified according to NOR and DDR memory map */
+/* The address needs to be modified according to NOR, NAND, SD and
+ * DDR memory map
+ */
 #ifdef CONFIG_LS2080A
-#define CONFIG_BS_HDR_ADDR_FLASH       0x583920000
-#define CONFIG_BS_ADDR_FLASH           0x583900000
+#define CONFIG_BS_HDR_ADDR_DEVICE      0x583920000
+#define CONFIG_BS_ADDR_DEVICE          0x583900000
 #define CONFIG_BS_HDR_ADDR_RAM         0xa3920000
 #define CONFIG_BS_ADDR_RAM             0xa3900000
+#define CONFIG_BS_HDR_SIZE             0x00002000
+#define CONFIG_BS_SIZE                 0x00001000
+#else
+#ifdef CONFIG_SD_BOOT
+/* For SD boot address and size are assigned in terms of sector
+ * offset and no. of sectors respectively.
+ */
+#define CONFIG_BS_HDR_ADDR_DEVICE      0x00000800
+#define CONFIG_BS_ADDR_DEVICE          0x00000840
+#define CONFIG_BS_HDR_SIZE             0x00000010
+#define CONFIG_BS_SIZE                 0x00000008
 #else
-#define CONFIG_BS_HDR_ADDR_FLASH       0x600a0000
-#define CONFIG_BS_ADDR_FLASH           0x60060000
-#define CONFIG_BS_HDR_ADDR_RAM         0xa0060000
-#define CONFIG_BS_ADDR_RAM             0xa0060000
+#define CONFIG_BS_HDR_ADDR_DEVICE      0x600a0000
+#define CONFIG_BS_ADDR_DEVICE          0x60060000
+#define CONFIG_BS_HDR_SIZE             0x00002000
+#define CONFIG_BS_SIZE                 0x00001000
+#endif /* #ifdef CONFIG_SD_BOOT */
+#define CONFIG_BS_HDR_ADDR_RAM         0x81000000
+#define CONFIG_BS_ADDR_RAM             0x81020000
 #endif
 
 #ifdef CONFIG_BOOTSCRIPT_COPY_RAM
 #define CONFIG_BOOTSCRIPT_HDR_ADDR     CONFIG_BS_HDR_ADDR_RAM
-#define CONFIG_BS_HDR_SIZE             0x00002000
 #define CONFIG_BOOTSCRIPT_ADDR         CONFIG_BS_ADDR_RAM
-#define CONFIG_BS_SIZE                 0x00001000
 #else
-#define CONFIG_BOOTSCRIPT_HDR_ADDR     CONFIG_BS_HDR_ADDR_FLASH
-/* BS_HDR_SIZE, BOOTSCRIPT_ADDR and BS_SIZE are not required */
+#define CONFIG_BOOTSCRIPT_HDR_ADDR     CONFIG_BS_HDR_ADDR_DEVICE
+/* BOOTSCRIPT_ADDR is not required */
 #endif
 
 #include <config_fsl_chain_trust.h>
index 2e2d565..2e937f0 100644 (file)
 /* If Boot Script is not on NOR and is required to be copied on RAM */
 #ifdef CONFIG_BOOTSCRIPT_COPY_RAM
 #define CONFIG_BS_HDR_ADDR_RAM         0x00010000
-#define CONFIG_BS_HDR_ADDR_FLASH       0x00800000
+#define CONFIG_BS_HDR_ADDR_DEVICE      0x00800000
 #define CONFIG_BS_HDR_SIZE             0x00002000
 #define CONFIG_BS_ADDR_RAM             0x00012000
-#define CONFIG_BS_ADDR_FLASH           0x00802000
+#define CONFIG_BS_ADDR_DEVICE          0x00802000
 #define CONFIG_BS_SIZE                 0x00001000
 
 #define CONFIG_BOOTSCRIPT_HDR_ADDR     CONFIG_BS_HDR_ADDR_RAM
index 566fd80..eb45e98 100644 (file)
 #ifdef CONFIG_BOOTSCRIPT_COPY_RAM
 #define CONFIG_BS_COPY_ENV \
        "setenv bs_hdr_ram " __stringify(CONFIG_BS_HDR_ADDR_RAM)";" \
-       "setenv bs_hdr_flash " __stringify(CONFIG_BS_HDR_ADDR_FLASH)";" \
+       "setenv bs_hdr_device " __stringify(CONFIG_BS_HDR_ADDR_DEVICE)";" \
        "setenv bs_hdr_size " __stringify(CONFIG_BS_HDR_SIZE)";" \
        "setenv bs_ram " __stringify(CONFIG_BS_ADDR_RAM)";" \
-       "setenv bs_flash " __stringify(CONFIG_BS_ADDR_FLASH)";" \
+       "setenv bs_device " __stringify(CONFIG_BS_ADDR_DEVICE)";" \
        "setenv bs_size " __stringify(CONFIG_BS_SIZE)";"
 
 /* For secure boot flow, default environment used will be used */
 #if defined(CONFIG_SYS_RAMBOOT)
 #if defined(CONFIG_RAMBOOT_NAND)
 #define CONFIG_BS_COPY_CMD \
-       "nand read $bs_hdr_ram $bs_hdr_flash $bs_hdr_size ;" \
-       "nand read $bs_ram $bs_flash $bs_size ;"
+       "nand read $bs_hdr_ram $bs_hdr_device $bs_hdr_size ;" \
+       "nand read $bs_ram $bs_device $bs_size ;"
 #endif /* CONFIG_RAMBOOT_NAND */
-#else
+#elif defined(CONFIG_SD_BOOT)
+#define CONFIG_BS_COPY_CMD \
+       "mmc read $bs_hdr_ram $bs_hdr_device $bs_hdr_size ;" \
+       "mmc read $bs_ram $bs_device $bs_size ;"
+#else /* CONFIG_SD_BOOT */
 #define CONFIG_BS_COPY_CMD \
-       "cp.b $bs_hdr_flash $bs_hdr_ram  $bs_hdr_size ;" \
-       "cp.b $bs_flash $bs_ram  $bs_size ;"
+       "cp.b $bs_hdr_device $bs_hdr_ram  $bs_hdr_size ;" \
+       "cp.b $bs_device $bs_ram  $bs_size ;"
 #endif
 #endif /* CONFIG_BOOTSCRIPT_COPY_RAM */