From 541911f479bf68079269d2716589c0cc0ee732ff Mon Sep 17 00:00:00 2001 From: Thomas Hebb Date: Fri, 20 Dec 2019 18:03:43 -0800 Subject: [PATCH 1/8] stm32mp: remove redundant SYS_TEXT_BASE prompt The main prompt for this (defined in /Kconfig) is visible at all times, which means there's no reason to have an additional, machine-specific prompt to set the same option. Reviewed-by: Patrick Delaunay Signed-off-by: Thomas Hebb --- arch/arm/mach-stm32mp/Kconfig | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig index ae28f6e206..bf8a18a0c3 100644 --- a/arch/arm/mach-stm32mp/Kconfig +++ b/arch/arm/mach-stm32mp/Kconfig @@ -80,12 +80,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 From e71b9a64a28d16d044d1bceda1a9e69679b2769e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Wed, 18 Dec 2019 16:52:19 +0100 Subject: [PATCH 2/8] ARM: stm32: Allow overriding setup_mac_address() Let board code override setup_mac_address(), which is useful e.g. if the board derives the MAC address from another source, like an I2C EEPROM. Signed-off-by: Marek Vasut Cc: Patrick Delaunay Cc: Patrice Chotard Reviewed-by: Patrick Delaunay --- arch/arm/mach-stm32mp/cpu.c | 2 +- arch/arm/mach-stm32mp/include/mach/sys_proto.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c index 6a71465494..de7891b5c4 100644 --- a/arch/arm/mach-stm32mp/cpu.c +++ b/arch/arm/mach-stm32mp/cpu.c @@ -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; diff --git a/arch/arm/mach-stm32mp/include/mach/sys_proto.h b/arch/arm/mach-stm32mp/include/mach/sys_proto.h index 99eefabf6e..47e57922d1 100644 --- a/arch/arm/mach-stm32mp/include/mach/sys_proto.h +++ b/arch/arm/mach-stm32mp/include/mach/sys_proto.h @@ -30,3 +30,5 @@ u32 get_cpu_package(void); /* return boot mode */ u32 get_bootmode(void); + +int setup_mac_address(void); From c3ab0fe6c1f000fe7cbee3b52c61756990b89abc Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 10 Jan 2020 01:26:54 +0100 Subject: [PATCH 3/8] stm32mp1: configs: Make all boot devices in distro boot conditional Not all systems have all the boot devices enabled, e.g. not all systems have MTD devices and thus do not enable UBI. Make all the boot devices in the distro bootcmd conditional to avoid failures. Signed-off-by: Marek Vasut Cc: Patrick Delaunay Cc: Patrice Chotard Reviewed-by: Patrice Chotard Reviewed-by: Patrick Delaunay --- include/configs/stm32mp1.h | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/include/configs/stm32mp1.h b/include/configs/stm32mp1.h index d42a7860be..655833428e 100644 --- a/include/configs/stm32mp1.h +++ b/include/configs/stm32mp1.h @@ -98,12 +98,34 @@ #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: From ba2c20ce7aba106d0101e04910be64fe3f855096 Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Mon, 13 Jan 2020 15:17:40 +0100 Subject: [PATCH 4/8] stm32mp1: move stboard command in board/st/common directory Move the ST command in board/st/common, as this command is only used by ST board. Prepare the support in U-Boot of boards with STM32MP15x SOC but not STMicroelectronics. Signed-off-by: Patrick Delaunay Reviewed-by: Patrice Chotard --- board/st/common/Kconfig | 6 ++++++ board/st/common/MAINTAINERS | 6 ++++++ board/st/common/Makefile | 6 ++++++ board/st/{stm32mp1 => common}/cmd_stboard.c | 3 +++ board/st/stm32mp1/Kconfig | 9 ++------- board/st/stm32mp1/Makefile | 1 - 6 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 board/st/common/Kconfig create mode 100644 board/st/common/MAINTAINERS create mode 100644 board/st/common/Makefile rename board/st/{stm32mp1 => common}/cmd_stboard.c (98%) diff --git a/board/st/common/Kconfig b/board/st/common/Kconfig new file mode 100644 index 0000000000..1824087afc --- /dev/null +++ b/board/st/common/Kconfig @@ -0,0 +1,6 @@ +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. diff --git a/board/st/common/MAINTAINERS b/board/st/common/MAINTAINERS new file mode 100644 index 0000000000..3b02f4ab98 --- /dev/null +++ b/board/st/common/MAINTAINERS @@ -0,0 +1,6 @@ +ST BOARDS +M: Patrick Delaunay +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 index 0000000000..8553606b90 --- /dev/null +++ b/board/st/common/Makefile @@ -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/stm32mp1/cmd_stboard.c b/board/st/common/cmd_stboard.c similarity index 98% rename from board/st/stm32mp1/cmd_stboard.c rename to board/st/common/cmd_stboard.c index 04352ae8ed..e994a88e71 100644 --- a/board/st/stm32mp1/cmd_stboard.c +++ b/board/st/common/cmd_stboard.c @@ -3,6 +3,7 @@ * Copyright (C) 2019, STMicroelectronics - All Rights Reserved */ +#ifndef CONFIG_SPL_BUILD #include #include #include @@ -143,3 +144,5 @@ U_BOOT_CMD(stboard, 6, 0, do_stboard, " - Variant: 1 ... 15\n" " - Revision: A...O\n" " - BOM: 1...15\n"); + +#endif diff --git a/board/st/stm32mp1/Kconfig b/board/st/stm32mp1/Kconfig index 4fa2360b4f..9f985e5775 100644 --- a/board/st/stm32mp1/Kconfig +++ b/board/st/stm32mp1/Kconfig @@ -15,15 +15,10 @@ config ENV_SECT_SIZE 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 diff --git a/board/st/stm32mp1/Makefile b/board/st/stm32mp1/Makefile index 3c6c035b11..8188075b1a 100644 --- a/board/st/stm32mp1/Makefile +++ b/board/st/stm32mp1/Makefile @@ -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 From 493305716c7c91e91b3fcdcdd4a1bd662157c1ff Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Mon, 13 Jan 2020 15:17:41 +0100 Subject: [PATCH 5/8] board: stm32mp1: move CONFIG_ENV_XXX in defconfig Move CONFIG_ENV_SECT_SIZE and CONFIG_ENV_OFFSET in stm32mp15_*_defconfig for ST board with NOR support (STM32MP15xx-EV1 boards) - CONFIG_SECT_SIZE values = the max supported NOR erase size (256KB) - CONFIG_ENV_OFFSET = offset for NOR (ENV_IS_IN_SPI_FLASH) This Patch prepares the U-Boot support of boards with STM32MP15x SOC not provided by STMicroelectronics. Signed-off-by: Patrick Delaunay Reviewed-by: Patrice Chotard --- board/st/stm32mp1/Kconfig | 6 ------ configs/stm32mp15_basic_defconfig | 2 ++ configs/stm32mp15_optee_defconfig | 2 ++ configs/stm32mp15_trusted_defconfig | 2 ++ 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/board/st/stm32mp1/Kconfig b/board/st/stm32mp1/Kconfig index 9f985e5775..89fc562746 100644 --- a/board/st/stm32mp1/Kconfig +++ b/board/st/stm32mp1/Kconfig @@ -9,12 +9,6 @@ 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 TARGET_STM32MP157C_DK2 bool "support of STMicroelectronics STM32MP157C-DK2 Discovery Board" default y diff --git a/configs/stm32mp15_basic_defconfig b/configs/stm32mp15_basic_defconfig index c85369ca0f..1061d38d8a 100644 --- a/configs/stm32mp15_basic_defconfig +++ b/configs/stm32mp15_basic_defconfig @@ -1,6 +1,8 @@ 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 diff --git a/configs/stm32mp15_optee_defconfig b/configs/stm32mp15_optee_defconfig index c192d8d441..6a112023a1 100644 --- a/configs/stm32mp15_optee_defconfig +++ b/configs/stm32mp15_optee_defconfig @@ -1,6 +1,8 @@ CONFIG_ARM=y CONFIG_ARCH_STM32MP=y CONFIG_SYS_MALLOC_F_LEN=0x3000 +CONFIG_ENV_SECT_SIZE=0x40000 +CONFIG_ENV_OFFSET=0x280000 CONFIG_TARGET_STM32MP1=y CONFIG_STM32MP1_OPTEE=y CONFIG_DISTRO_DEFAULTS=y diff --git a/configs/stm32mp15_trusted_defconfig b/configs/stm32mp15_trusted_defconfig index a846962af5..35a8929ae0 100644 --- a/configs/stm32mp15_trusted_defconfig +++ b/configs/stm32mp15_trusted_defconfig @@ -1,6 +1,8 @@ CONFIG_ARM=y CONFIG_ARCH_STM32MP=y CONFIG_SYS_MALLOC_F_LEN=0x3000 +CONFIG_ENV_SECT_SIZE=0x40000 +CONFIG_ENV_OFFSET=0x280000 CONFIG_TARGET_STM32MP1=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y From 846254888e2e1bd91edeedd208fca44eea512845 Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Mon, 13 Jan 2020 15:17:42 +0100 Subject: [PATCH 6/8] stm32mp1: split board and SOC support for STM32MP15x family Split the board and SOC support for STM32MP15x family and prepare the introduction of new boards with STM32MP15x. This path define the 2 configurations: - STM32MP15x: STM32MP15x soc support (new) - TARGET_ST_STM32MP15x: STMicroelectronics board support (choice) Signed-off-by: Patrick Delaunay Reviewed-by: Patrice Chotard --- arch/arm/dts/Makefile | 2 +- arch/arm/mach-stm32mp/Kconfig | 32 +++++++++++++++++++++-------- board/st/common/Kconfig | 3 ++- board/st/stm32mp1/Kconfig | 7 +------ board/st/stm32mp1/stm32mp1.c | 2 +- configs/stm32mp15_basic_defconfig | 2 +- configs/stm32mp15_optee_defconfig | 2 +- configs/stm32mp15_trusted_defconfig | 2 +- 8 files changed, 32 insertions(+), 20 deletions(-) diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 04a8cccda5..8c11173171 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -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 \ diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig index bf8a18a0c3..137178aa45 100644 --- a/arch/arm/mach-stm32mp/Kconfig +++ b/arch/arm/mach-stm32mp/Kconfig @@ -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" diff --git a/board/st/common/Kconfig b/board/st/common/Kconfig index 1824087afc..af01ca4891 100644 --- a/board/st/common/Kconfig +++ b/board/st/common/Kconfig @@ -1,6 +1,7 @@ config CMD_STBOARD bool "stboard - command for OTP board information" - default y + 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/stm32mp1/Kconfig b/board/st/stm32mp1/Kconfig index 89fc562746..c5ab7553d4 100644 --- a/board/st/stm32mp1/Kconfig +++ b/board/st/stm32mp1/Kconfig @@ -1,4 +1,4 @@ -if TARGET_STM32MP1 +if TARGET_ST_STM32MP15x config SYS_BOARD default "stm32mp1" @@ -9,10 +9,5 @@ config SYS_VENDOR config SYS_CONFIG_NAME default "stm32mp1" -config TARGET_STM32MP157C_DK2 - bool "support of STMicroelectronics STM32MP157C-DK2 Discovery Board" - default y - source "board/st/common/Kconfig" - endif diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index 1d4a54c902..4e298dabcb 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -607,7 +607,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; diff --git a/configs/stm32mp15_basic_defconfig b/configs/stm32mp15_basic_defconfig index 1061d38d8a..0b646da2b1 100644 --- a/configs/stm32mp15_basic_defconfig +++ b/configs/stm32mp15_basic_defconfig @@ -5,7 +5,7 @@ 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 diff --git a/configs/stm32mp15_optee_defconfig b/configs/stm32mp15_optee_defconfig index 6a112023a1..b45462b2f0 100644 --- a/configs/stm32mp15_optee_defconfig +++ b/configs/stm32mp15_optee_defconfig @@ -3,7 +3,7 @@ CONFIG_ARCH_STM32MP=y CONFIG_SYS_MALLOC_F_LEN=0x3000 CONFIG_ENV_SECT_SIZE=0x40000 CONFIG_ENV_OFFSET=0x280000 -CONFIG_TARGET_STM32MP1=y +CONFIG_TARGET_ST_STM32MP15x=y CONFIG_STM32MP1_OPTEE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y diff --git a/configs/stm32mp15_trusted_defconfig b/configs/stm32mp15_trusted_defconfig index 35a8929ae0..5dc530f1ab 100644 --- a/configs/stm32mp15_trusted_defconfig +++ b/configs/stm32mp15_trusted_defconfig @@ -3,7 +3,7 @@ CONFIG_ARCH_STM32MP=y CONFIG_SYS_MALLOC_F_LEN=0x3000 CONFIG_ENV_SECT_SIZE=0x40000 CONFIG_ENV_OFFSET=0x280000 -CONFIG_TARGET_STM32MP1=y +CONFIG_TARGET_ST_STM32MP15x=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_BOOTCOMMAND="run bootcmd_stm32mp" From 7819b57dbba615466917d48799982dddd243079c Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 10 Jan 2020 01:28:37 +0100 Subject: [PATCH 7/8] ARM: stm32: Fill in missing loadaddr Since CONFIG_LOADADDR is not set, the default value of $loadaddr variable is not set in the environment either. Set the default load address to 32 MiB from the start of DRAM (same value than kernel_addr_r). Signed-off-by: Marek Vasut Signed-off-by: Patrick Delaunay --- include/configs/stm32mp1.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/configs/stm32mp1.h b/include/configs/stm32mp1.h index 655833428e..a66534e027 100644 --- a/include/configs/stm32mp1.h +++ b/include/configs/stm32mp1.h @@ -33,9 +33,10 @@ #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 From db48e11b1eccf23f3f9ba26e886a798e74df6a01 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 10 Jan 2020 01:28:38 +0100 Subject: [PATCH 8/8] ARM: dts: stm32: Add missing ETHCK clock to ethernet node Add missing 'eth-ck' clock to the ethernet node. These clock are used to generate external clock signal for the PHY in case 'st,eth_ref_clk_sel' is specified. Signed-off-by: Marek Vasut Reviewed-by: Patrick Delaunay --- arch/arm/dts/stm32mp157c.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/dts/stm32mp157c.dtsi b/arch/arm/dts/stm32mp157c.dtsi index 6c670cf9a3..41aea75213 100644 --- a/arch/arm/dts/stm32mp157c.dtsi +++ b/arch/arm/dts/stm32mp157c.dtsi @@ -1404,11 +1404,13 @@ 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>;