Merge tag 'u-boot-stm32-20200117' of https://gitlab.denx.de/u-boot/custodians/u-boot-stm
authorTom Rini <trini@konsulko.com>
Mon, 20 Jan 2020 19:54:42 +0000 (14:54 -0500)
committerTom Rini <trini@konsulko.com>
Mon, 20 Jan 2020 19:54:42 +0000 (14:54 -0500)
- stm32mp1: split SOC and board and cleanup config

17 files changed:
arch/arm/dts/Makefile
arch/arm/dts/stm32mp157c.dtsi
arch/arm/mach-stm32mp/Kconfig
arch/arm/mach-stm32mp/cpu.c
arch/arm/mach-stm32mp/include/mach/sys_proto.h
board/st/common/Kconfig [new file with mode: 0644]
board/st/common/MAINTAINERS [new file with mode: 0644]
board/st/common/Makefile [new file with mode: 0644]
board/st/common/cmd_stboard.c [new file with mode: 0644]
board/st/stm32mp1/Kconfig
board/st/stm32mp1/Makefile
board/st/stm32mp1/cmd_stboard.c [deleted file]
board/st/stm32mp1/stm32mp1.c
configs/stm32mp15_basic_defconfig
configs/stm32mp15_optee_defconfig
configs/stm32mp15_trusted_defconfig
include/configs/stm32mp1.h

index 04a8cccda5ef924eb69eed4151e03dccf61f8481..8c1117317111e0321291214398fce5e4dbb02962 100644 (file)
@@ -862,7 +862,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += ast2500-evb.dtb
 
 dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb
 
-dtb-$(CONFIG_TARGET_STM32MP1) += \
+dtb-$(CONFIG_STM32MP15x) += \
        stm32mp157a-dk1.dtb \
        stm32mp157a-avenger96.dtb \
        stm32mp157c-dk2.dtb \
index 6c670cf9a362adfbc4c0e3b408b66155c326b27f..41aea75213de7dd615627f2e379ade025a81a70d 100644 (file)
                        clock-names = "stmmaceth",
                                      "mac-clk-tx",
                                      "mac-clk-rx",
+                                     "eth-ck",
                                      "ethstp",
                                      "syscfg-clk";
                        clocks = <&rcc ETHMAC>,
                                 <&rcc ETHTX>,
                                 <&rcc ETHRX>,
+                                <&rcc ETHCK_K>,
                                 <&rcc ETHSTP>,
                                 <&rcc SYSCFG>;
                        st,syscon = <&syscfg 0x4>;
index ae28f6e2066b02a9f2d6136073d6ca8a8b2ec64b..137178aa45371cbb066144befff45107261e6a34 100644 (file)
@@ -33,8 +33,8 @@ config SYS_MALLOC_LEN
 config ENV_SIZE
        default 0x2000
 
-config TARGET_STM32MP1
-       bool "Support stm32mp1xx"
+config STM32MP15x
+       bool "Support STMicroelectronics STM32MP15x Soc"
        select ARCH_SUPPORT_PSCI if !STM32MP1_TRUSTED
        select CPU_V7A
        select CPU_V7_HAS_NONSEC if !STM32MP1_TRUSTED
@@ -45,19 +45,35 @@ config TARGET_STM32MP1
        select STM32_RESET
        select STM32_SERIAL
        select SYS_ARCH_TIMER
+       imply SYSRESET_PSCI if STM32MP1_TRUSTED
+       imply SYSRESET_SYSCON if !STM32MP1_TRUSTED
+       help
+               support of STMicroelectronics SOC STM32MP15x family
+               STM32MP157, STM32MP153 or STM32MP151
+               STMicroelectronics MPU with core ARMv7
+               dual core A7 for STM32MP157/3, monocore for STM32MP151
+               target all the STMicroelectronics board with SOC STM32MP1 family
+
+choice
+       prompt "STM32MP15x board select"
+       optional
+
+config TARGET_ST_STM32MP15x
+       bool "STMicroelectronics STM32MP15x boards"
+       select STM32MP15x
        imply BOOTCOUNT_LIMIT
        imply CMD_BOOTCOUNT
        imply CMD_CLS if CMD_BMP
        imply DISABLE_CONSOLE
        imply PRE_CONSOLE_BUFFER
        imply SILENT_CONSOLE
-       imply SYSRESET_PSCI if STM32MP1_TRUSTED
-       imply SYSRESET_SYSCON if !STM32MP1_TRUSTED
        help
-               target STMicroelectronics SOC STM32MP1 family
-               STM32MP157, STM32MP153 or STM32MP151
-               STMicroelectronics MPU with core ARMv7
-               dual core A7 for STM32MP157/3, monocore for STM32MP151
+               target the STMicroelectronics board with SOC STM32MP15x
+               managed by board/st/stm32mp1:
+               Evalulation board (EV1) or Discovery board (DK1 and DK2).
+               The difference between board are managed with devicetree
+
+endchoice
 
 config STM32MP1_TRUSTED
        bool "Support trusted boot with TF-A"
@@ -80,12 +96,7 @@ config STM32MP1_OPTEE
                OP-TEE monitor provides ST SMC to access to secure resources
 
 config SYS_TEXT_BASE
-       prompt "U-Boot base address"
        default 0xC0100000
-       help
-               configure the U-Boot base address
-               when DDR driver is used:
-                 DDR + 1MB (0xC0100000)
 
 config NR_DRAM_BANKS
        default 1
index 6a71465494b39e3bd9d4a80500cb0f33a245a922..de7891b5c4a0c5354af9bf2bae7c55e4ecd3b102 100644 (file)
@@ -456,7 +456,7 @@ static void setup_boot_mode(void)
  * If there is no MAC address in the environment, then it will be initialized
  * (silently) from the value in the OTP.
  */
-static int setup_mac_address(void)
+__weak int setup_mac_address(void)
 {
 #if defined(CONFIG_NET)
        int ret;
index 99eefabf6eceb5685b67425807c44f422918a873..47e57922d1e4d6a1a0559215bb5583227670fde2 100644 (file)
@@ -30,3 +30,5 @@ u32 get_cpu_package(void);
 
 /* return boot mode */
 u32 get_bootmode(void);
+
+int setup_mac_address(void);
diff --git a/board/st/common/Kconfig b/board/st/common/Kconfig
new file mode 100644 (file)
index 0000000..af01ca4
--- /dev/null
@@ -0,0 +1,7 @@
+config CMD_STBOARD
+       bool "stboard - command for OTP board information"
+       depends on ARCH_STM32MP
+       default y if TARGET_ST_STM32MP15x
+       help
+         This compile the stboard command to
+         read and write the board in the OTP.
diff --git a/board/st/common/MAINTAINERS b/board/st/common/MAINTAINERS
new file mode 100644 (file)
index 0000000..3b02f4a
--- /dev/null
@@ -0,0 +1,6 @@
+ST BOARDS
+M:     Patrick Delaunay <patrick.delaunay@st.com>
+L:     uboot-stm32@st-md-mailman.stormreply.com (moderated for non-subscribers)
+T:     git https://gitlab.denx.de/u-boot/custodians/u-boot-stm.git
+S:     Maintained
+F:     board/st/common/
diff --git a/board/st/common/Makefile b/board/st/common/Makefile
new file mode 100644 (file)
index 0000000..8553606
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
+#
+# Copyright (C) 2020, STMicroelectronics - All Rights Reserved
+#
+
+obj-$(CONFIG_CMD_STBOARD) += cmd_stboard.o
diff --git a/board/st/common/cmd_stboard.c b/board/st/common/cmd_stboard.c
new file mode 100644 (file)
index 0000000..e994a88
--- /dev/null
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
+/*
+ * Copyright (C) 2019, STMicroelectronics - All Rights Reserved
+ */
+
+#ifndef CONFIG_SPL_BUILD
+#include <common.h>
+#include <console.h>
+#include <misc.h>
+#include <dm/device.h>
+#include <dm/uclass.h>
+
+static bool check_stboard(u16 board)
+{
+       unsigned int i;
+       const u16 st_board_id[] = {
+               0x1272,
+               0x1263,
+               0x1264,
+               0x1298,
+               0x1341,
+               0x1497,
+       };
+
+       for (i = 0; i < ARRAY_SIZE(st_board_id); i++)
+               if (board == st_board_id[i])
+                       return true;
+
+       return false;
+}
+
+static void display_stboard(u32 otp)
+{
+       printf("Board: MB%04x Var%d Rev.%c-%02d\n",
+              otp >> 16,
+              (otp >> 12) & 0xF,
+              ((otp >> 8) & 0xF) - 1 + 'A',
+              otp & 0xF);
+}
+
+static int do_stboard(cmd_tbl_t *cmdtp, int flag, int argc,
+                     char * const argv[])
+{
+       int ret;
+       u32 otp;
+       u8 revision;
+       unsigned long board, variant, bom;
+       struct udevice *dev;
+       int confirmed = argc == 6 && !strcmp(argv[1], "-y");
+
+       argc -= 1 + confirmed;
+       argv += 1 + confirmed;
+
+       if (argc != 0 && argc != 4)
+               return CMD_RET_USAGE;
+
+       ret = uclass_get_device_by_driver(UCLASS_MISC,
+                                         DM_GET_DRIVER(stm32mp_bsec),
+                                         &dev);
+
+       ret = misc_read(dev, STM32_BSEC_SHADOW(BSEC_OTP_BOARD),
+                       &otp, sizeof(otp));
+
+       if (ret < 0) {
+               puts("OTP read error");
+               return CMD_RET_FAILURE;
+       }
+
+       if (argc == 0) {
+               if (!otp)
+                       puts("Board : OTP board FREE\n");
+               else
+                       display_stboard(otp);
+               return CMD_RET_SUCCESS;
+       }
+
+       if (otp) {
+               display_stboard(otp);
+               printf("ERROR: OTP board not FREE\n");
+               return CMD_RET_FAILURE;
+       }
+
+       if (strict_strtoul(argv[0], 16, &board) < 0 ||
+           board == 0 || board > 0xFFFF) {
+               printf("argument %d invalid: %s\n", 1, argv[0]);
+               return CMD_RET_USAGE;
+       }
+
+       if (strict_strtoul(argv[1], 10, &variant) < 0 ||
+           variant == 0 || variant > 15) {
+               printf("argument %d invalid: %s\n", 2, argv[1]);
+               return CMD_RET_USAGE;
+       }
+
+       revision = argv[2][0] - 'A' + 1;
+       if (strlen(argv[2]) > 1 || revision == 0 || revision > 15) {
+               printf("argument %d invalid: %s\n", 3, argv[2]);
+               return CMD_RET_USAGE;
+       }
+
+       if (strict_strtoul(argv[3], 10, &bom) < 0 ||
+           bom == 0 || bom > 15) {
+               printf("argument %d invalid: %s\n", 4, argv[3]);
+               return CMD_RET_USAGE;
+       }
+
+       otp = (board << 16) | (variant << 12) | (revision << 8) | bom;
+       display_stboard(otp);
+       printf("=> OTP[%d] = %08X\n", BSEC_OTP_BOARD, otp);
+
+       if (!check_stboard((u16)board)) {
+               printf("Unknown board MB%04x\n", (u16)board);
+               return CMD_RET_FAILURE;
+       }
+       if (!confirmed) {
+               printf("Warning: Programming BOARD in OTP is irreversible!\n");
+               printf("Really perform this OTP programming? <y/N>\n");
+
+               if (!confirm_yesno()) {
+                       puts("BOARD programming aborted\n");
+                       return CMD_RET_FAILURE;
+               }
+       }
+
+       ret = misc_write(dev, STM32_BSEC_OTP(BSEC_OTP_BOARD),
+                        &otp, sizeof(otp));
+
+       if (ret) {
+               puts("BOARD programming error\n");
+               return CMD_RET_FAILURE;
+       }
+       puts("BOARD programming done\n");
+
+       return CMD_RET_SUCCESS;
+}
+
+U_BOOT_CMD(stboard, 6, 0, do_stboard,
+          "read/write board reference in OTP",
+          "\n"
+          "  Print current board information\n"
+          "stboard [-y] <Board> <Variant> <Revision> <BOM>\n"
+          "  Write board information\n"
+          "  - Board: xxxx, example 1264 for MB1264\n"
+          "  - Variant: 1 ... 15\n"
+          "  - Revision: A...O\n"
+          "  - BOM: 1...15\n");
+
+#endif
index 4fa2360b4f925402a600fddc884e545b48d4e7d4..c5ab7553d4f6f6bb1413e6bee294bfd33598560b 100644 (file)
@@ -1,4 +1,4 @@
-if TARGET_STM32MP1
+if TARGET_ST_STM32MP15x
 
 config SYS_BOARD
        default "stm32mp1"
@@ -9,21 +9,5 @@ config SYS_VENDOR
 config SYS_CONFIG_NAME
        default "stm32mp1"
 
-config ENV_SECT_SIZE
-       default 0x40000 if ENV_IS_IN_SPI_FLASH
-
-config ENV_OFFSET
-       default 0x280000 if ENV_IS_IN_SPI_FLASH
-
-config CMD_STBOARD
-       bool "stboard - command for OTP board information"
-       default y
-       help
-         This compile the stboard command to
-         read and write the board in the OTP.
-
-config TARGET_STM32MP157C_DK2
-       bool "support of STMicroelectronics STM32MP157C-DK2 Discovery Board"
-       default y
-
+source "board/st/common/Kconfig"
 endif
index 3c6c035b118a916b4565a115ef8f38dd66d29428..8188075b1a398d78aacacae9ccaba9a227aa4885 100644 (file)
@@ -7,7 +7,6 @@ ifdef CONFIG_SPL_BUILD
 obj-y += spl.o
 else
 obj-y += stm32mp1.o
-obj-$(CONFIG_CMD_STBOARD) += cmd_stboard.o
 endif
 
 obj-y += board.o
diff --git a/board/st/stm32mp1/cmd_stboard.c b/board/st/stm32mp1/cmd_stboard.c
deleted file mode 100644 (file)
index 04352ae..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
-/*
- * Copyright (C) 2019, STMicroelectronics - All Rights Reserved
- */
-
-#include <common.h>
-#include <console.h>
-#include <misc.h>
-#include <dm/device.h>
-#include <dm/uclass.h>
-
-static bool check_stboard(u16 board)
-{
-       unsigned int i;
-       const u16 st_board_id[] = {
-               0x1272,
-               0x1263,
-               0x1264,
-               0x1298,
-               0x1341,
-               0x1497,
-       };
-
-       for (i = 0; i < ARRAY_SIZE(st_board_id); i++)
-               if (board == st_board_id[i])
-                       return true;
-
-       return false;
-}
-
-static void display_stboard(u32 otp)
-{
-       printf("Board: MB%04x Var%d Rev.%c-%02d\n",
-              otp >> 16,
-              (otp >> 12) & 0xF,
-              ((otp >> 8) & 0xF) - 1 + 'A',
-              otp & 0xF);
-}
-
-static int do_stboard(cmd_tbl_t *cmdtp, int flag, int argc,
-                     char * const argv[])
-{
-       int ret;
-       u32 otp;
-       u8 revision;
-       unsigned long board, variant, bom;
-       struct udevice *dev;
-       int confirmed = argc == 6 && !strcmp(argv[1], "-y");
-
-       argc -= 1 + confirmed;
-       argv += 1 + confirmed;
-
-       if (argc != 0 && argc != 4)
-               return CMD_RET_USAGE;
-
-       ret = uclass_get_device_by_driver(UCLASS_MISC,
-                                         DM_GET_DRIVER(stm32mp_bsec),
-                                         &dev);
-
-       ret = misc_read(dev, STM32_BSEC_SHADOW(BSEC_OTP_BOARD),
-                       &otp, sizeof(otp));
-
-       if (ret < 0) {
-               puts("OTP read error");
-               return CMD_RET_FAILURE;
-       }
-
-       if (argc == 0) {
-               if (!otp)
-                       puts("Board : OTP board FREE\n");
-               else
-                       display_stboard(otp);
-               return CMD_RET_SUCCESS;
-       }
-
-       if (otp) {
-               display_stboard(otp);
-               printf("ERROR: OTP board not FREE\n");
-               return CMD_RET_FAILURE;
-       }
-
-       if (strict_strtoul(argv[0], 16, &board) < 0 ||
-           board == 0 || board > 0xFFFF) {
-               printf("argument %d invalid: %s\n", 1, argv[0]);
-               return CMD_RET_USAGE;
-       }
-
-       if (strict_strtoul(argv[1], 10, &variant) < 0 ||
-           variant == 0 || variant > 15) {
-               printf("argument %d invalid: %s\n", 2, argv[1]);
-               return CMD_RET_USAGE;
-       }
-
-       revision = argv[2][0] - 'A' + 1;
-       if (strlen(argv[2]) > 1 || revision == 0 || revision > 15) {
-               printf("argument %d invalid: %s\n", 3, argv[2]);
-               return CMD_RET_USAGE;
-       }
-
-       if (strict_strtoul(argv[3], 10, &bom) < 0 ||
-           bom == 0 || bom > 15) {
-               printf("argument %d invalid: %s\n", 4, argv[3]);
-               return CMD_RET_USAGE;
-       }
-
-       otp = (board << 16) | (variant << 12) | (revision << 8) | bom;
-       display_stboard(otp);
-       printf("=> OTP[%d] = %08X\n", BSEC_OTP_BOARD, otp);
-
-       if (!check_stboard((u16)board)) {
-               printf("Unknown board MB%04x\n", (u16)board);
-               return CMD_RET_FAILURE;
-       }
-       if (!confirmed) {
-               printf("Warning: Programming BOARD in OTP is irreversible!\n");
-               printf("Really perform this OTP programming? <y/N>\n");
-
-               if (!confirm_yesno()) {
-                       puts("BOARD programming aborted\n");
-                       return CMD_RET_FAILURE;
-               }
-       }
-
-       ret = misc_write(dev, STM32_BSEC_OTP(BSEC_OTP_BOARD),
-                        &otp, sizeof(otp));
-
-       if (ret) {
-               puts("BOARD programming error\n");
-               return CMD_RET_FAILURE;
-       }
-       puts("BOARD programming done\n");
-
-       return CMD_RET_SUCCESS;
-}
-
-U_BOOT_CMD(stboard, 6, 0, do_stboard,
-          "read/write board reference in OTP",
-          "\n"
-          "  Print current board information\n"
-          "stboard [-y] <Board> <Variant> <Revision> <BOM>\n"
-          "  Write board information\n"
-          "  - Board: xxxx, example 1264 for MB1264\n"
-          "  - Variant: 1 ... 15\n"
-          "  - Revision: A...O\n"
-          "  - BOM: 1...15\n");
index 9c345c7a70233d2ffa523b967ed2e4ad34d7cbab..e82a43074fb9dd0f7857879ca097c1e95e3b239c 100644 (file)
@@ -608,7 +608,7 @@ error:
 
 static bool board_is_dk2(void)
 {
-       if (CONFIG_IS_ENABLED(TARGET_STM32MP157C_DK2) &&
+       if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) &&
            of_machine_is_compatible("st,stm32mp157c-dk2"))
                return true;
 
index c85369ca0fb285296c8f3accacc4d9c5d4486864..0b646da2b137fd7b5bc61adcdca8c3a2c204f5d3 100644 (file)
@@ -1,9 +1,11 @@
 CONFIG_ARM=y
 CONFIG_ARCH_STM32MP=y
 CONFIG_SYS_MALLOC_F_LEN=0x3000
+CONFIG_ENV_SECT_SIZE=0x40000
+CONFIG_ENV_OFFSET=0x280000
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL=y
-CONFIG_TARGET_STM32MP1=y
+CONFIG_TARGET_ST_STM32MP15x=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 # CONFIG_ARMV7_VIRT is not set
index c192d8d441f0fb6d77ead0592c7a50c7b907eff0..b45462b2f0f1d44ea3c7bedfdf9b08a7f36d1b66 100644 (file)
@@ -1,7 +1,9 @@
 CONFIG_ARM=y
 CONFIG_ARCH_STM32MP=y
 CONFIG_SYS_MALLOC_F_LEN=0x3000
-CONFIG_TARGET_STM32MP1=y
+CONFIG_ENV_SECT_SIZE=0x40000
+CONFIG_ENV_OFFSET=0x280000
+CONFIG_TARGET_ST_STM32MP15x=y
 CONFIG_STM32MP1_OPTEE=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
index a846962af503fe0fa5d2781aa5a14952580a19df..5dc530f1ab088af799570973d493d00be32286a3 100644 (file)
@@ -1,7 +1,9 @@
 CONFIG_ARM=y
 CONFIG_ARCH_STM32MP=y
 CONFIG_SYS_MALLOC_F_LEN=0x3000
-CONFIG_TARGET_STM32MP1=y
+CONFIG_ENV_SECT_SIZE=0x40000
+CONFIG_ENV_OFFSET=0x280000
+CONFIG_TARGET_ST_STM32MP15x=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_BOOTCOMMAND="run bootcmd_stm32mp"
index d42a7860bea2ca974b357a1d2638a0bea810775e..a66534e0278818a9d133fbbcb99fd20fed45dd8a 100644 (file)
 #define CONFIG_SYS_CBSIZE                      SZ_1K
 
 /*
- * Needed by "loadb"
+ * default load address used for command tftp,  bootm , loadb, ...
  */
-#define CONFIG_SYS_LOAD_ADDR                   STM32_DDR_BASE
+#define CONFIG_LOADADDR                        0xc2000000
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
 
 /* ATAGs */
 #define CONFIG_CMDLINE_TAG
 
 #if !defined(CONFIG_SPL_BUILD)
 
-#define BOOT_TARGET_DEVICES(func) \
-       func(MMC, mmc, 1) \
-       func(UBIFS, ubifs, 0) \
-       func(MMC, mmc, 0) \
-       func(MMC, mmc, 2) \
-       func(PXE, pxe, na)
+#ifdef CONFIG_CMD_MMC
+#define BOOT_TARGET_MMC0(func) func(MMC, mmc, 0)
+#define BOOT_TARGET_MMC1(func) func(MMC, mmc, 1)
+#define BOOT_TARGET_MMC2(func) func(MMC, mmc, 2)
+#else
+#define BOOT_TARGET_MMC0(func)
+#define BOOT_TARGET_MMC1(func)
+#define BOOT_TARGET_MMC2(func)
+#endif
+
+#ifdef CONFIG_NET
+#define BOOT_TARGET_PXE(func)  func(PXE, pxe, na)
+#else
+#define BOOT_TARGET_PXE(func)
+#endif
+
+#ifdef CONFIG_CMD_UBIFS
+#define BOOT_TARGET_UBIFS(func)        func(UBIFS, ubifs, 0)
+#else
+#define BOOT_TARGET_UBIFS(func)
+#endif
+
+#define BOOT_TARGET_DEVICES(func)      \
+       BOOT_TARGET_MMC1(func)          \
+       BOOT_TARGET_UBIFS(func)         \
+       BOOT_TARGET_MMC0(func)          \
+       BOOT_TARGET_MMC2(func)          \
+       BOOT_TARGET_PXE(func)
 
 /*
  * bootcmd for stm32mp1: