Merge git://git.denx.de/u-boot-x86
authorTom Rini <trini@konsulko.com>
Mon, 10 Apr 2017 12:07:29 +0000 (08:07 -0400)
committerTom Rini <trini@konsulko.com>
Mon, 10 Apr 2017 12:07:29 +0000 (08:07 -0400)
37 files changed:
.travis.yml
Kconfig
Makefile
arch/arm/include/asm/arch-am33xx/cpu.h
arch/arm/include/asm/arch-omap5/cpu.h
arch/arm/include/asm/ti-common/omap_wdt.h [new file with mode: 0644]
arch/arm/mach-keystone/config.mk
arch/arm/mach-keystone/mon.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/clocks-common.c
arch/arm/mach-omap2/config_secure.mk
common/spl/spl_net.c
configs/am335x_hs_evm_defconfig
configs/am43xx_hs_evm_defconfig
configs/am57xx_hs_evm_defconfig
configs/dra7xx_hs_evm_defconfig
configs/k2e_evm_defconfig
configs/k2e_hs_evm_defconfig [new file with mode: 0644]
configs/k2g_evm_defconfig
configs/k2g_hs_evm_defconfig [new file with mode: 0644]
configs/k2hk_evm_defconfig
configs/k2hk_hs_evm_defconfig [new file with mode: 0644]
configs/k2l_evm_defconfig
configs/omapl138_lcdk_defconfig
doc/README.ti-secure
drivers/mtd/nand/am335x_spl_bch.c
drivers/watchdog/omap_wdt.c
include/configs/am335x_evm.h
include/configs/am43xx_evm.h
include/configs/k2g_evm.h
include/configs/omapl138_lcdk.h
include/configs/ti_armv7_common.h
include/configs/ti_omap4_common.h
include/configs/ti_omap5_common.h
include/environment/ti/mmc.h [new file with mode: 0644]
include/image.h
scripts/Makefile.spl

index 3dc38df9882bb6eac7a02dd4422ce8f8f339a29a..591915df4c89d290afa1e042c0a7de8ee356854d 100644 (file)
@@ -152,7 +152,7 @@ matrix:
     - env:
         - BUILDMAN="sun7i"
     - env:
-        - BUILDMAN="sun8i"
+        - BUILDMAN="sun8i -x orangepi_pc2"
     - env:
         - BUILDMAN="sun9i"
     - env:
diff --git a/Kconfig b/Kconfig
index bbf4784119845dd4fff0a8322a330c9118bc9911..1cf990dfce3368a45ac24a73bee7397c3e641676 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -286,7 +286,7 @@ config SYS_EXTRA_OPTIONS
 config SYS_TEXT_BASE
        depends on ARC || X86 || ARCH_UNIPHIER || ARCH_ZYNQMP || \
                (M68K && !TARGET_ASTRO_MCF5373L) || MICROBLAZE || MIPS || \
-               ARCH_ZYNQ
+               ARCH_ZYNQ || ARCH_KEYSTONE
        depends on !EFI_APP
        hex "Text Base"
        help
index ca7d60d610839ede7be37cee640bd3c969132674..09b597d45051f9899abbb517a98d67297a19237c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -805,6 +805,10 @@ ALL-y += $(CONFIG_BUILD_TARGET:"%"=%)
 endif
 
 LDFLAGS_u-boot += $(LDFLAGS_FINAL)
+
+# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
+LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)
+
 ifneq ($(CONFIG_SYS_TEXT_BASE),)
 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
 endif
index dbed7764aa83a9b143ca8faa1240814cd1bf5f5c..54f449f6e6960d2484b9f7d448b40d6e9d6038ed 100644 (file)
 #define PRM_RSTCTRL_RESET              0x01
 #define PRM_RSTST_WARM_RESET_MASK      0x232
 
-/*
- * Watchdog:
- * Using the prescaler, the OMAP watchdog could go for many
- * months before firing.  These limits work without scaling,
- * with the 60 second default assumed by most tools and docs.
- */
-#define TIMER_MARGIN_MAX       (24 * 60 * 60)  /* 1 day */
-#define TIMER_MARGIN_DEFAULT   60      /* 60 secs */
-#define TIMER_MARGIN_MIN       1
-
-#define PTV                    0       /* prescale */
-#define GET_WLDR_VAL(secs)     (0xffffffff - ((secs) * (32768/(1<<PTV))) + 1)
-#define WDT_WWPS_PEND_WCLR     BIT(0)
-#define WDT_WWPS_PEND_WLDR     BIT(2)
-#define WDT_WWPS_PEND_WTGR     BIT(3)
-#define WDT_WWPS_PEND_WSPR     BIT(4)
-
-#define WDT_WCLR_PRE           BIT(5)
-#define WDT_WCLR_PTV_OFF       2
-
 #ifndef __KERNEL_STRICT_NAMES
 #ifndef __ASSEMBLY__
-
+#include <asm/ti-common/omap_wdt.h>
 
 #ifndef CONFIG_AM43XX
 /* Encapsulating core pll registers */
@@ -422,32 +402,6 @@ struct cm_rtc {
        unsigned int clkstctrl;         /* offset 0x4 */
 };
 
-/* Watchdog timer registers */
-struct wd_timer {
-       unsigned int resv1[4];
-       unsigned int wdtwdsc;   /* offset 0x010 */
-       unsigned int wdtwdst;   /* offset 0x014 */
-       unsigned int wdtwisr;   /* offset 0x018 */
-       unsigned int wdtwier;   /* offset 0x01C */
-       unsigned int wdtwwer;   /* offset 0x020 */
-       unsigned int wdtwclr;   /* offset 0x024 */
-       unsigned int wdtwcrr;   /* offset 0x028 */
-       unsigned int wdtwldr;   /* offset 0x02C */
-       unsigned int wdtwtgr;   /* offset 0x030 */
-       unsigned int wdtwwps;   /* offset 0x034 */
-       unsigned int resv2[3];
-       unsigned int wdtwdly;   /* offset 0x044 */
-       unsigned int wdtwspr;   /* offset 0x048 */
-       unsigned int resv3[1];
-       unsigned int wdtwqeoi;  /* offset 0x050 */
-       unsigned int wdtwqstar; /* offset 0x054 */
-       unsigned int wdtwqsta;  /* offset 0x058 */
-       unsigned int wdtwqens;  /* offset 0x05C */
-       unsigned int wdtwqenc;  /* offset 0x060 */
-       unsigned int resv4[39];
-       unsigned int wdt_unfr;  /* offset 0x100 */
-};
-
 /* Timer 32 bit registers */
 struct gptimer {
        unsigned int tidr;              /* offset 0x00 */
index 683d9053337fc201b9e2e80d280e8e682c8b61fa..26e741745920569d86b835f52120529f2806b5c3 100644 (file)
@@ -18,6 +18,8 @@
 
 #ifndef __KERNEL_STRICT_NAMES
 #ifndef __ASSEMBLY__
+#include <asm/ti-common/omap_wdt.h>
+
 struct gptimer {
        u32 tidr;               /* 0x00 r */
        u8 res1[0xc];
@@ -44,6 +46,7 @@ struct gptimer {
 /* enable sys_clk NO-prescale /1 */
 #define GPT_EN                 ((0x0 << 2) | (0x1 << 1) | (0x1 << 0))
 
+#define WDT_BASE                (OMAP54XX_L4_WKUP_BASE + 0x14000)
 /* Watchdog */
 #ifndef __KERNEL_STRICT_NAMES
 #ifndef __ASSEMBLY__
diff --git a/arch/arm/include/asm/ti-common/omap_wdt.h b/arch/arm/include/asm/ti-common/omap_wdt.h
new file mode 100644 (file)
index 0000000..b9f4c07
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * omap_wdt.h
+ *
+ * OMAP Watchdog header file
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __OMAP_WDT_H__
+#define __OMAP_WDT_H__
+
+/*
+ * Watchdog:
+ * Using the prescaler, the OMAP watchdog could go for many
+ * months before firing.  These limits work without scaling,
+ * with the 60 second default assumed by most tools and docs.
+ */
+#define TIMER_MARGIN_MAX       (24 * 60 * 60)  /* 1 day */
+#define TIMER_MARGIN_DEFAULT   60      /* 60 secs */
+#define TIMER_MARGIN_MIN       1
+
+#define PTV                    0       /* prescale */
+#define GET_WLDR_VAL(secs)     (0xffffffff - ((secs) * (32768/(1<<PTV))) + 1)
+#define WDT_WWPS_PEND_WCLR     BIT(0)
+#define WDT_WWPS_PEND_WLDR     BIT(2)
+#define WDT_WWPS_PEND_WTGR     BIT(3)
+#define WDT_WWPS_PEND_WSPR     BIT(4)
+
+#define WDT_WCLR_PRE           BIT(5)
+#define WDT_WCLR_PTV_OFF       2
+
+/* Watchdog timer registers */
+struct wd_timer {
+       unsigned int resv1[4];
+       unsigned int wdtwdsc;   /* offset 0x010 */
+       unsigned int wdtwdst;   /* offset 0x014 */
+       unsigned int wdtwisr;   /* offset 0x018 */
+       unsigned int wdtwier;   /* offset 0x01C */
+       unsigned int wdtwwer;   /* offset 0x020 */
+       unsigned int wdtwclr;   /* offset 0x024 */
+       unsigned int wdtwcrr;   /* offset 0x028 */
+       unsigned int wdtwldr;   /* offset 0x02C */
+       unsigned int wdtwtgr;   /* offset 0x030 */
+       unsigned int wdtwwps;   /* offset 0x034 */
+       unsigned int resv2[3];
+       unsigned int wdtwdly;   /* offset 0x044 */
+       unsigned int wdtwspr;   /* offset 0x048 */
+       unsigned int resv3[1];
+       unsigned int wdtwqeoi;  /* offset 0x050 */
+       unsigned int wdtwqstar; /* offset 0x054 */
+       unsigned int wdtwqsta;  /* offset 0x058 */
+       unsigned int wdtwqens;  /* offset 0x05C */
+       unsigned int wdtwqenc;  /* offset 0x060 */
+       unsigned int resv4[39];
+       unsigned int wdt_unfr;  /* offset 0x100 */
+};
+
+#endif /* __OMAP_WDT_H__ */
index 9ae1e9ac91c1746701ccb6d5cd8fe9b1432540dd..db556ea0a846bf919512e17fc000a692bf2dca37 100644 (file)
@@ -5,9 +5,15 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+include  $(srctree)/arch/arm/mach-omap2/config_secure.mk
+
 ifndef CONFIG_SPL_BUILD
+ifeq ($(CONFIG_TI_SECURE_DEVICE),y)
+ALL-y += u-boot_HS_MLO
+else
 ALL-y += MLO
 endif
+endif
 
 MKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \
        -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL
index 256f6300ed32bab97d46a8db691c7a137099d6a7..81009848d033afd0def2aa06305f6b73f1acb7bf 100644 (file)
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <command.h>
 #include <mach/mon.h>
+#include <spl.h>
 asm(".arch_extension sec\n\t");
 
 int mon_install(u32 addr, u32 dpsc, u32 freq)
@@ -61,3 +62,75 @@ int mon_power_off(int core_id)
                : "cc", "r0", "r1", "memory");
        return  result;
 }
+
+#ifdef CONFIG_TI_SECURE_DEVICE
+#define KS2_HS_SEC_HEADER_LEN  0x60
+#define KS2_HS_SEC_TAG_OFFSET  0x34
+#define KS2_AUTH_CMD           130
+
+/**
+ * k2_hs_bm_auth() - Invokes security functions using a
+ * proprietary TI interface. This binary and source for
+ * this is available in the secure development package or
+ * SECDEV. For details on how to access this please refer
+ * doc/README.ti-secure
+ *
+ * @cmd: Secure monitor command
+ * @arg1: Argument for command
+ *
+ * returns non-zero value on success, zero on error
+ */
+static int k2_hs_bm_auth(int cmd, void *arg1)
+{
+       int result;
+
+       asm volatile (
+               "stmfd  r13!, {r4-r12, lr}\n"
+               "mov r0, %1\n"
+               "mov r1, %2\n"
+               "smc #2\n"
+               "ldmfd r13!, {r4-r12, lr}\n"
+               : "=&r" (result)
+               : "r" (cmd), "r" (arg1)
+               : "cc", "r0", "r1", "memory");
+
+       return  result;
+}
+
+void board_fit_image_post_process(void **p_image, size_t *p_size)
+{
+       int result = 0;
+       void *image = *p_image;
+
+       if (strncmp(image + KS2_HS_SEC_TAG_OFFSET, "KEYS", 4)) {
+               printf("No signature found in image!\n");
+               hang();
+       }
+
+       result = k2_hs_bm_auth(KS2_AUTH_CMD, image);
+       if (result == 0) {
+               printf("Authentication failed!\n");
+               hang();
+       }
+
+       /*
+       * Overwrite the image headers after authentication
+       * and decryption. Update size to reflect removal
+       * of header.
+       */
+       memcpy(image, image + KS2_HS_SEC_HEADER_LEN, *p_size);
+       *p_size -= KS2_HS_SEC_HEADER_LEN;
+
+       /*
+        * Output notification of successful authentication to re-assure the
+        * user that the secure code is being processed as expected. However
+        * suppress any such log output in case of building for SPL and booting
+        * via YMODEM. This is done to avoid disturbing the YMODEM serial
+        * protocol transactions.
+        */
+       if (!(IS_ENABLED(CONFIG_SPL_BUILD) &&
+             IS_ENABLED(CONFIG_SPL_YMODEM_SUPPORT) &&
+             spl_boot_device() == BOOT_DEVICE_UART))
+               printf("Authentication passed\n");
+}
+#endif
index 24bc4851958317682ddda185dd598dfe38a318dd..d74b068abc1dc093df5b810bba43556ec18823af 100644 (file)
@@ -1,6 +1,6 @@
 config TI_SECURE_DEVICE
        bool "HS Device Type Support"
-       depends on OMAP54XX || AM43XX || AM33XX
+       depends on OMAP54XX || AM43XX || AM33XX || ARCH_KEYSTONE
        help
          If a high secure (HS) device type is being used, this config
          must be set. This option impacts various aspects of the
index 84f93e73f6d09c99c3e9f42374a7c658747bab1c..93c4c6fe33e71fe0db9b6811b38a52ab54a6c44b 100644 (file)
@@ -828,27 +828,29 @@ void do_enable_clocks(u32 const *clk_domains,
        u32 i, max = 100;
 
        /* Put the clock domains in SW_WKUP mode */
-       for (i = 0; (i < max) && clk_domains[i]; i++) {
+       for (i = 0; (i < max) && clk_domains && clk_domains[i]; i++) {
                enable_clock_domain(clk_domains[i],
                                    CD_CLKCTRL_CLKTRCTRL_SW_WKUP);
        }
 
        /* Clock modules that need to be put in HW_AUTO */
-       for (i = 0; (i < max) && clk_modules_hw_auto[i]; i++) {
+       for (i = 0; (i < max) && clk_modules_hw_auto &&
+                    clk_modules_hw_auto[i]; i++) {
                enable_clock_module(clk_modules_hw_auto[i],
                                    MODULE_CLKCTRL_MODULEMODE_HW_AUTO,
                                    wait_for_enable);
        };
 
        /* Clock modules that need to be put in SW_EXPLICIT_EN mode */
-       for (i = 0; (i < max) && clk_modules_explicit_en[i]; i++) {
+       for (i = 0; (i < max) && clk_modules_explicit_en &&
+                    clk_modules_explicit_en[i]; i++) {
                enable_clock_module(clk_modules_explicit_en[i],
                                    MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN,
                                    wait_for_enable);
        };
 
        /* Put the clock domains in HW_AUTO mode now */
-       for (i = 0; (i < max) && clk_domains[i]; i++) {
+       for (i = 0; (i < max) && clk_domains && clk_domains[i]; i++) {
                enable_clock_domain(clk_domains[i],
                                    CD_CLKCTRL_CLKTRCTRL_HW_AUTO);
        }
index 0c843338d770179ef1bff937a11afeb7fc78d6ee..0346cb93abd474d9450e309aca778ef4cc97efba 100644 (file)
@@ -77,6 +77,12 @@ u-boot-spl_HS_ISSW: $(obj)/u-boot-spl.bin FORCE
 u-boot-spl_HS_SPI_X-LOADER: $(obj)/u-boot-spl.bin FORCE
        $(call if_changed,mkomapsecimg)
 
+# For supporting single stage boot on keystone, the image is a full u-boot
+# file, not an SPL. This will work for all boot devices, other than SPI
+# flash
+u-boot_HS_MLO: $(obj)/u-boot.bin
+       $(call if_changed,mkomapsecimg)
+
 # For supporting single stage XiP QSPI on AM43xx, the image is a full u-boot
 # file, not an SPL. In this case the mkomapsecimg command looks for a
 # u-boot-HS_* prefix
index 0fba0172ea4d78c9a70e829c1e89e50bef4312f3..85fe508b1760f0a2ebec85057d96dddffa0e1811 100644 (file)
 #include <errno.h>
 #include <spl.h>
 #include <net.h>
+#include <libfdt.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 #if defined(CONFIG_SPL_ETH_SUPPORT) || defined(CONFIG_SPL_USBETH_SUPPORT)
+static ulong spl_net_load_read(struct spl_load_info *load, ulong sector,
+                              ulong count, void *buf)
+{
+       debug("%s: sector %lx, count %lx, buf %lx\n",
+             __func__, sector, count, (ulong)buf);
+       memcpy(buf, (void *)(load_addr + sector), count);
+       return count;
+}
+
 static int spl_net_load_image(struct spl_image_info *spl_image,
                              struct spl_boot_device *bootdev)
 {
+       struct image_header *header = (struct image_header *)load_addr;
        int rv;
 
        env_init();
        env_relocate();
        setenv("autoload", "yes");
-       load_addr = CONFIG_SYS_TEXT_BASE - sizeof(struct image_header);
        rv = eth_initialize();
        if (rv == 0) {
                printf("No Ethernet devices found\n");
@@ -36,8 +46,26 @@ static int spl_net_load_image(struct spl_image_info *spl_image,
                printf("Problem booting with BOOTP\n");
                return rv;
        }
-       return spl_parse_image_header(spl_image,
-                                     (struct image_header *)load_addr);
+
+       if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
+           image_get_magic(header) == FDT_MAGIC) {
+               struct spl_load_info load;
+
+               debug("Found FIT\n");
+               load.bl_len = 1;
+               load.read = spl_net_load_read;
+               rv = spl_load_simple_fit(spl_image, &load, 0, header);
+       } else {
+               debug("Legacy image\n");
+
+               rv = spl_parse_image_header(spl_image, header);
+               if (rv)
+                       return rv;
+
+               memcpy((void *)spl_image->load_addr, header, spl_image->size);
+       }
+
+       return rv;
 }
 #endif
 
index ff5bf64c68071648b7c5f6788db2ec8ee08e7fb5..8ab86535b6faae08f472171498f671676eb193ea 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
+CONFIG_ARCH_MISC_INIT=y
 CONFIG_SPL=y
 CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 CONFIG_SPL_STACK_R=y
@@ -32,12 +33,15 @@ CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT4_WRITE=y
+# CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
+CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2"
 # CONFIG_BLK is not set
 CONFIG_DFU_MMC=y
 CONFIG_DFU_NAND=y
 CONFIG_DFU_RAM=y
 CONFIG_DM_I2C=y
+CONFIG_MISC=y
 CONFIG_DM_MMC=y
 # CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
@@ -48,8 +52,10 @@ CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USB_MUSB_HOST=y
 CONFIG_USB_MUSB_GADGET=y
+CONFIG_USB_MUSB_TI=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DOWNLOAD=y
index 17217e9051e45112e1af99ffdeb4cfec21df815f..795dfd717be3a85c3b20ae51258707370a367543 100644 (file)
@@ -10,12 +10,19 @@ CONFIG_FIT=y
 CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
-CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1, NAND"
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,NAND"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
 CONFIG_SPL_STACK_R=y
+CONFIG_SPL_ETH_SUPPORT=y
 CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_NET_SUPPORT=y
+CONFIG_SPL_NET_VCI_STRING="AM43xx U-Boot SPL"
+CONFIG_SPL_USB_HOST_SUPPORT=y
+CONFIG_SPL_USB_SUPPORT=y
+CONFIG_SPL_USB_GADGET_SUPPORT=y
+CONFIG_SPL_USBETH_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
@@ -41,6 +48,7 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
+CONFIG_OF_LIST="am437x-gp-evm am437x-sk-evm am43x-epos-evm am437x-idk-evm"
 CONFIG_DM=y
 # CONFIG_BLK is not set
 CONFIG_DFU_MMC=y
@@ -53,8 +61,8 @@ CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_DM_ETH=y
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
index 956e39f1f8bca6b0e830f23e4ab70852c31be7f7..99907f55258a40dc58bcf136f9442d458665bb50 100644 (file)
@@ -3,12 +3,13 @@ CONFIG_OMAP54XX=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TI_SECURE_DEVICE=y
 CONFIG_TARGET_AM57XX_EVM=y
-CONFIG_TI_SECURE_EMIF_REGION_START=0xbe000000
+CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
 CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000
 CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_ARMV7_LPAE=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="am57xx-beagle-x15"
 CONFIG_FIT=y
@@ -51,6 +52,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_REGULATOR=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
@@ -59,6 +61,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
+CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am572x-idk am571x-idk"
 CONFIG_DM=y
 CONFIG_SPL_DM=y
 # CONFIG_BLK is not set
@@ -73,6 +76,10 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_PALMAS=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
index f3a9c680082922fe1491e51eea6f76dfaf619a2d..871604f80cd543f08a5005f8e3a5b2498824463e 100644 (file)
@@ -3,12 +3,13 @@ CONFIG_OMAP54XX=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TI_SECURE_DEVICE=y
 CONFIG_TARGET_DRA7XX_EVM=y
-CONFIG_TI_SECURE_EMIF_REGION_START=0xbe000000
+CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
 CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000
 CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_ARMV7_LPAE=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="dra7-evm"
 CONFIG_FIT=y
index d319705b676015dd9b984d6287f1459d4b67cd7c..63db1aef7cb4af57df7afcb80bb640ef72ff641f 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SYS_TEXT_BASE=0x0c000000
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
diff --git a/configs/k2e_hs_evm_defconfig b/configs/k2e_hs_evm_defconfig
new file mode 100644 (file)
index 0000000..d515ced
--- /dev/null
@@ -0,0 +1,51 @@
+CONFIG_ARM=y
+CONFIG_ARCH_KEYSTONE=y
+CONFIG_SYS_TEXT_BASE=0x0c000060
+CONFIG_TARGET_K2E_EVM=y
+CONFIG_TI_SECURE_DEVICE=y
+CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
+CONFIG_FIT=y
+CONFIG_FIT_IMAGE_POST_PROCESS=y
+CONFIG_OF_BOARD_SETUP=y
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="K2E HS EVM # "
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_NAND=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_UBI=y
+CONFIG_ISO_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_OF_CONTROL=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_DM=y
+CONFIG_TI_AEMIF=y
+# CONFIG_MMC is not set
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_DM_ETH=y
+CONFIG_DM_SERIAL=y
+CONFIG_SYS_NS16550=y
+CONFIG_DM_SPI=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_STORAGE=y
index bbdcc2f136e21673554ed57604ae2b3870de665d..44c9dff747b99d9667ac75fd3eae584fcb7df86c 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SYS_TEXT_BASE=0x0c000000
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
diff --git a/configs/k2g_hs_evm_defconfig b/configs/k2g_hs_evm_defconfig
new file mode 100644 (file)
index 0000000..9c21867
--- /dev/null
@@ -0,0 +1,55 @@
+CONFIG_ARM=y
+CONFIG_ARCH_KEYSTONE=y
+CONFIG_TARGET_K2G_EVM=y
+CONFIG_TI_SECURE_DEVICE=y
+CONFIG_SYS_TEXT_BASE=0x0c000060
+CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
+CONFIG_FIT=y
+CONFIG_OF_BOARD_SETUP=y
+CONFIG_FIT_IMAGE_POST_PROCESS=y
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_REMOTEPROC=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_UBI=y
+CONFIG_ISO_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_OF_CONTROL=y
+CONFIG_DM=y
+# CONFIG_BLK is not set
+CONFIG_DM_MMC=y
+# CONFIG_DM_MMC_OPS is not set
+CONFIG_MMC_OMAP_HS=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_DM_ETH=y
+CONFIG_REMOTEPROC_TI_POWER=y
+CONFIG_DM_SERIAL=y
+CONFIG_SYS_NS16550=y
+CONFIG_DM_SPI=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_STORAGE=y
index b22086d477c1dd746ba89601a6e2e14312c7a884..12b80472d99dc70a30b39e9f23faccfef3db0d89 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SYS_TEXT_BASE=0x0c000000
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
diff --git a/configs/k2hk_hs_evm_defconfig b/configs/k2hk_hs_evm_defconfig
new file mode 100644 (file)
index 0000000..9fe91ea
--- /dev/null
@@ -0,0 +1,51 @@
+CONFIG_ARM=y
+CONFIG_ARCH_KEYSTONE=y
+CONFIG_SYS_TEXT_BASE=0x0c000060
+CONFIG_TARGET_K2HK_EVM=y
+CONFIG_TI_SECURE_DEVICE=y
+CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
+CONFIG_FIT=y
+CONFIG_FIT_IMAGE_POST_PROCESS=y
+CONFIG_OF_BOARD_SETUP=y
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="K2HK EVM # "
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_NAND=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_UBI=y
+CONFIG_ISO_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_OF_CONTROL=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_DM=y
+CONFIG_TI_AEMIF=y
+# CONFIG_MMC is not set
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_DM_ETH=y
+CONFIG_DM_SERIAL=y
+CONFIG_SYS_NS16550=y
+CONFIG_DM_SPI=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_STORAGE=y
index 5a2811285795b3a875ccb96f97ac29dd385fdb41..39a992d7971a328139de95321a6a4916bd023952 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SYS_TEXT_BASE=0x0c000000
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2l-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
index 352c9b46254498cb707e73e4e9b8bcdc0276b2b8..7c8228bf5bcb16a0c41b15307ec1abba058cb5f1 100644 (file)
@@ -27,6 +27,8 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_UBI=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_PART=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
 CONFIG_SYS_NAND_U_BOOT_OFFS=0x28000
 CONFIG_SPI_FLASH=y
index 9b0fbf97323381a093b89c78c73c8304fcb707e9..4b5380c0f3df38610d777c5c3c9e8251f98fce3a 100644 (file)
@@ -133,6 +133,26 @@ Booting of U-Boot SPL
        u-boot-spl_HS_X-LOADER - boot image for all other flash memories
                including QSPI and NOR flash
 
+       Invoking the script for Keystone2 Secure Devices
+       =============================================
+
+       create-boot-image.sh \
+               <UNUSED> <INPUT_FILE> <OUTPUT_FILE> <UNUSED>
+
+       <UNUSED> is currently ignored and reserved for future use.
+
+       <INPUT_FILE> is the full path and filename of the public world boot
+       loader binary file (only u-boot.bin is currently supported on
+       Keystone2 devices, u-boot-spl.bin is not currently supported).
+
+       <OUTPUT_FILE> is the full path and filename of the final secure image.
+       The output binary images should be used in place of the standard
+       non-secure binary images (see the platform-specific user's guides
+       and releases notes for how the non-secure images are typically used)
+       u-boot_HS_MLO - signed and encrypted boot image that can be used to
+               boot from all media. Secure boot from SPI NOR flash is not
+               currently supported.
+
 Booting of Primary U-Boot (u-boot.img)
 ======================================
 
index a8a7a66a183e6336493cfd47ec2fef6e1223fb41..5b189a1d8a595e79f95a395bb7507af3fbd430e8 100644 (file)
@@ -49,6 +49,13 @@ static int nand_command(int block, int page, uint32_t offs,
 
        if (cmd == NAND_CMD_RESET) {
                hwctrl(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
+
+               /*
+                * Apply this short delay always to ensure that we do wait
+                * tWB in any case on any machine.
+                */
+               ndelay(150);
+
                while (!this->dev_ready(mtd))
                        ;
                return 0;
@@ -78,23 +85,44 @@ static int nand_command(int block, int page, uint32_t offs,
 
        hwctrl(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
 
-       if (cmd == NAND_CMD_READ0) {
-               /* Latch in address */
-               hwctrl(mtd, NAND_CMD_READSTART,
-                          NAND_CTRL_CLE | NAND_CTRL_CHANGE);
-               hwctrl(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
 
-               /*
-                * Wait a while for the data to be ready
-                */
-               while (!this->dev_ready(mtd))
-                       ;
-       } else if (cmd == NAND_CMD_RNDOUT) {
+       /*
+        * Program and erase have their own busy handlers status, sequential
+        * in and status need no delay.
+        */
+       switch (cmd) {
+       case NAND_CMD_CACHEDPROG:
+       case NAND_CMD_PAGEPROG:
+       case NAND_CMD_ERASE1:
+       case NAND_CMD_ERASE2:
+       case NAND_CMD_SEQIN:
+       case NAND_CMD_RNDIN:
+       case NAND_CMD_STATUS:
+               return 0;
+
+       case NAND_CMD_RNDOUT:
+               /* No ready / busy check necessary */
                hwctrl(mtd, NAND_CMD_RNDOUTSTART, NAND_CTRL_CLE |
-                                       NAND_CTRL_CHANGE);
+                      NAND_CTRL_CHANGE);
+               hwctrl(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
+               return 0;
+
+       case NAND_CMD_READ0:
+               /* Latch in address */
+               hwctrl(mtd, NAND_CMD_READSTART,
+                      NAND_CTRL_CLE | NAND_CTRL_CHANGE);
                hwctrl(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
        }
 
+       /*
+        * Apply this short delay always to ensure that we do wait tWB in
+        * any case on any machine.
+        */
+       ndelay(150);
+
+       while (!this->dev_ready(mtd))
+               ;
+
        return 0;
 }
 
index 7ea4b604cd6376d500944bd3ba81937df2a91cc1..7b1f42943293e7e5015b6e1450d820bb1c4bb427 100644 (file)
@@ -81,10 +81,32 @@ static int omap_wdt_set_timeout(unsigned int timeout)
        return 0;
 }
 
+void hw_watchdog_disable(void)
+{
+       struct wd_timer *wdt = (struct wd_timer *)WDT_BASE;
+
+       /*
+        * Disable watchdog
+        */
+       writel(0xAAAA, &wdt->wdtwspr);
+       while (readl(&wdt->wdtwwps) != 0x0)
+               ;
+       writel(0x5555, &wdt->wdtwspr);
+       while (readl(&wdt->wdtwwps) != 0x0)
+               ;
+}
+
 void hw_watchdog_init(void)
 {
        struct wd_timer *wdt = (struct wd_timer *)WDT_BASE;
 
+       /*
+        * Make sure the watchdog is disabled. This is unfortunately required
+        * because writing to various registers with the watchdog running has no
+        * effect.
+        */
+       hw_watchdog_disable();
+
        /* initialize prescaler */
        while (readl(&wdt->wdtwwps) & WDT_WWPS_PEND_WCLR)
                ;
@@ -104,18 +126,3 @@ void hw_watchdog_init(void)
        while ((readl(&wdt->wdtwwps)) & WDT_WWPS_PEND_WSPR)
                ;
 }
-
-void hw_watchdog_disable(void)
-{
-       struct wd_timer *wdt = (struct wd_timer *)WDT_BASE;
-
-       /*
-        * Disable watchdog
-        */
-       writel(0xAAAA, &wdt->wdtwspr);
-       while (readl(&wdt->wdtwwps) != 0x0)
-               ;
-       writel(0x5555, &wdt->wdtwspr);
-       while (readl(&wdt->wdtwwps) != 0x0)
-               ;
-}
index 5fbc1e3ff95f2abdabf3447d7061399cf24e7882..fc8a08f5b79971faa04649d55607f59020cc44aa 100644 (file)
@@ -17,7 +17,6 @@
 #define __CONFIG_AM335X_EVM_H
 
 #include <configs/ti_am335x_common.h>
-#include <environment/ti/dfu.h>
 
 #ifndef CONFIG_SPL_BUILD
 # define CONFIG_TIMESTAMP
@@ -96,6 +95,9 @@
 #include <config_distro_bootcmd.h>
 
 #ifndef CONFIG_SPL_BUILD
+#include <environment/ti/dfu.h>
+#include <environment/ti/mmc.h>
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
        DEFAULT_MMC_TI_ARGS \
index ec99958fcd5027cb5e8cd06f261bc26ab01bf224..1feb94683435047a3f62f8c0ce4c9bb7d6792078 100644 (file)
@@ -13,7 +13,6 @@
 #define CONFIG_MAX_RAM_BANK_SIZE       (1024 << 21)    /* 2GB */
 #define CONFIG_SYS_TIMERBASE           0x48040000      /* Use Timer2 */
 
-#include <environment/ti/dfu.h>
 #include <asm/arch/omap.h>
 
 /* NS16550 Configuration */
 #define CONFIG_TI_EDMA3
 
 #ifndef CONFIG_SPL_BUILD
+#include <environment/ti/dfu.h>
+#include <environment/ti/mmc.h>
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
        DEFAULT_MMC_TI_ARGS \
index 9e5949e3706b5eeab55202311879491703202551..bee1be794bafd7aa441733e1911e9b2f88b55102 100644 (file)
@@ -10,6 +10,7 @@
 #ifndef __CONFIG_K2G_EVM_H
 #define __CONFIG_K2G_EVM_H
 
+#include <environment/ti/mmc.h>
 #include <environment/ti/spi.h>
 
 /* Platform type */
index 85e95b31779cb1ec4b8ad1637bd690952a756071..9d90e46b806e2ba4ab941aeb940f87f39cd660ca 100644 (file)
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_REVISION_TAG
 #define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_BOOTARGS                "console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait ip=off"
 #define CONFIG_BOOTCOMMAND \
-       "if mmc rescan; then " \
-               "run mmcboot; " \
-       "else " \
-               "run spiboot; " \
-       "fi"
-#define CONFIG_EXTRA_ENV_SETTINGS \
+               "run envboot; " \
+               "run mmcboot; "
+
+#define DEFAULT_LINUX_BOOT_ENV \
+       "loadaddr=0xc0700000\0" \
        "fdtaddr=0xc0600000\0" \
+       "scriptaddr=0xc0600000\0"
+
+#include <environment/ti/mmc.h>
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       DEFAULT_LINUX_BOOT_ENV \
+       DEFAULT_MMC_TI_ARGS \
+       "bootpart=0:2\0" \
+       "bootdir=/boot\0" \
+       "bootfile=zImage\0" \
        "fdtfile=da850-lcdk.dtb\0" \
-       "fdtboot=bootz 0xc0700000 - ${fdtaddr};\0" \
-       "mmcboot=" \
-               "if fatload mmc 0 0xc0600000 boot.scr; then " \
-                       "source 0xc0600000; " \
-               "else " \
-                       "fatload mmc 0 0xc0700000 " \
-                               __stringify(CONFIG_BOOTFILE) "; " \
-                       "fatload mmc 0 ${fdtaddr} ${fdtfile}; " \
-                       "run fdtboot; " \
-               "fi;\0" \
-       "spiboot=" \
-               "sf probe 0; " \
-               "sf read 0xc0700000 0x80000 0x220000; " \
-               "bootz 0xc0700000;\0"
+       "boot_fdt=yes\0" \
+       "boot_fit=0\0" \
+       "console=ttyS2,115200n8\0"
 
 /*
  * U-Boot commands
index b2950efd47dbab29de246f476673dccd946a9e96..1561d54c9a8676df6dd6e8265bfdec35f7e51d66 100644 (file)
        "bootm_size=0x10000000\0" \
        "boot_fdt=try\0"
 
-#define DEFAULT_MMC_TI_ARGS \
-       "mmcdev=0\0" \
-       "mmcrootfstype=ext4 rootwait\0" \
-       "finduuid=part uuid mmc ${bootpart} uuid\0" \
-       "args_mmc=run finduuid;setenv bootargs console=${console} " \
-               "${optargs} " \
-               "root=PARTUUID=${uuid} rw " \
-               "rootfstype=${mmcrootfstype}\0" \
-       "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
-       "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
-               "source ${loadaddr}\0" \
-       "bootenvfile=uEnv.txt\0" \
-       "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
-               "env import -t ${loadaddr} ${filesize}\0" \
-       "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
-       "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-       "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
-       "envboot=mmc dev ${mmcdev}; " \
-               "if mmc rescan; then " \
-                       "echo SD/MMC found on device ${mmcdev};" \
-                       "if run loadbootscript; then " \
-                               "run bootscript;" \
-                       "else " \
-                               "if run loadbootenv; then " \
-                                       "echo Loaded env from ${bootenvfile};" \
-                                       "run importbootenv;" \
-                               "fi;" \
-                               "if test -n $uenvcmd; then " \
-                                       "echo Running uenvcmd ...;" \
-                                       "run uenvcmd;" \
-                               "fi;" \
-                       "fi;" \
-               "fi;\0" \
-       "mmcloados=run args_mmc; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if run loadfdt; then " \
-                               "bootz ${loadaddr} - ${fdtaddr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootz; " \
-               "fi;\0" \
-       "mmcboot=mmc dev ${mmcdev}; " \
-               "setenv devnum ${mmcdev}; " \
-               "setenv devtype mmc; " \
-               "if mmc rescan; then " \
-                       "echo SD/MMC found on device ${mmcdev};" \
-                       "if run loadimage; then " \
-                               "if test ${boot_fit} -eq 1; then " \
-                                       "run loadfit; " \
-                               "else " \
-                                       "run mmcloados;" \
-                               "fi;" \
-                       "fi;" \
-               "fi;\0" \
-
 #define DEFAULT_FIT_TI_ARGS \
        "boot_fit=0\0" \
        "fit_loadaddr=0x88000000\0" \
-       "fit_bootfile=fitImage.itb\0" \
+       "fit_bootfile=fitImage\0" \
        "update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}\0" \
        "loadfit=run args_mmc; bootm ${loadaddr}#${fdtfile};\0" \
 
index d07cb9ffb4b33146d52bc5d633a3963f10861eff..b85db500b574513752d29f82613fc4de805c5e50 100644 (file)
        "run distro_bootcmd"
 
 #include <config_distro_bootcmd.h>
+#include <environment/ti/mmc.h>
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
index 97bd874e6cdd4973ab9231528f686de63b5cf180..d45baabf0b60ef57697516363799c9613d5ff685 100644 (file)
@@ -58,6 +58,8 @@
 #define DFUARGS
 #endif
 
+#include <environment/ti/mmc.h>
+
 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
diff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h
new file mode 100644 (file)
index 0000000..b987f71
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com
+ *
+ * Environment variable definitions for MMC/SD on TI boards.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#define DEFAULT_MMC_TI_ARGS \
+       "mmcdev=0\0" \
+       "mmcrootfstype=ext4 rootwait\0" \
+       "finduuid=part uuid mmc ${bootpart} uuid\0" \
+       "args_mmc=run finduuid;setenv bootargs console=${console} " \
+               "${optargs} " \
+               "root=PARTUUID=${uuid} rw " \
+               "rootfstype=${mmcrootfstype}\0" \
+       "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+       "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
+               "source ${loadaddr}\0" \
+       "bootenvfile=uEnv.txt\0" \
+       "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
+               "env import -t ${loadaddr} ${filesize}\0" \
+       "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
+       "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+       "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+       "envboot=mmc dev ${mmcdev}; " \
+               "if mmc rescan; then " \
+                       "echo SD/MMC found on device ${mmcdev};" \
+                       "if run loadbootscript; then " \
+                               "run bootscript;" \
+                       "else " \
+                               "if run loadbootenv; then " \
+                                       "echo Loaded env from ${bootenvfile};" \
+                                       "run importbootenv;" \
+                               "fi;" \
+                               "if test -n $uenvcmd; then " \
+                                       "echo Running uenvcmd ...;" \
+                                       "run uenvcmd;" \
+                               "fi;" \
+                       "fi;" \
+               "fi;\0" \
+       "mmcloados=run args_mmc; " \
+               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                       "if run loadfdt; then " \
+                               "bootz ${loadaddr} - ${fdtaddr}; " \
+                       "else " \
+                               "if test ${boot_fdt} = try; then " \
+                                       "bootz; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "fi; " \
+               "else " \
+                       "bootz; " \
+               "fi;\0" \
+       "mmcboot=mmc dev ${mmcdev}; " \
+               "setenv devnum ${mmcdev}; " \
+               "setenv devtype mmc; " \
+               "if mmc rescan; then " \
+                       "echo SD/MMC found on device ${mmcdev};" \
+                       "if run loadimage; then " \
+                               "if test ${boot_fit} -eq 1; then " \
+                                       "run loadfit; " \
+                               "else " \
+                                       "run mmcloados;" \
+                               "fi;" \
+                       "fi;" \
+               "fi;\0"
index 23725189602966de4f67407139302d13b9d29b92..3f26f9bd1f625c365e6d8f7908a97bf0d1c84cc0 100644 (file)
@@ -1256,7 +1256,8 @@ void android_print_contents(const struct andr_img_hdr *hdr);
  */
 int board_fit_config_name_match(const char *name);
 
-#ifdef CONFIG_SPL_FIT_IMAGE_POST_PROCESS
+#if defined(CONFIG_SPL_FIT_IMAGE_POST_PROCESS) || \
+       defined(CONFIG_FIT_IMAGE_POST_PROCESS)
 /**
  * board_fit_image_post_process() - Do any post-process on FIT binary data
  *
index 760aceea6383dff0cc5b4f6f394c9ddd982840df..eb24292fec3d0d210f34db2d5eb83963bc49bba4 100644 (file)
@@ -291,6 +291,10 @@ $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE
        $(call if_changed,objcopy)
 
 LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL)
+
+# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
+LDFLAGS_$(SPL_BIN) += $(call ld-option, --no-dynamic-linker)
+
 ifneq ($(CONFIG_SPL_TEXT_BASE),)
 LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
 endif