All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command
@ 2021-02-25 12:37 Patrick Delaunay
  2021-02-25 12:37 ` [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB Patrick Delaunay
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Patrick Delaunay @ 2021-02-25 12:37 UTC (permalink / raw)
  To: u-boot

Move CONFIG_CMD_STM32PROG in a specific Kconfig file for stm32prog command.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

 arch/arm/mach-stm32mp/Kconfig               | 18 +-----------------
 arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+), 17 deletions(-)
 create mode 100644 arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig

diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
index f538d7cb83..079d66a80c 100644
--- a/arch/arm/mach-stm32mp/Kconfig
+++ b/arch/arm/mach-stm32mp/Kconfig
@@ -121,23 +121,6 @@ config STM32_ETZPC
 	help
 	  Say y to enable STM32 Extended TrustZone Protection
 
-config CMD_STM32PROG
-	bool "command stm32prog for STM32CudeProgrammer"
-	select DFU
-	select DFU_RAM
-	select DFU_VIRT
-	select PARTITION_TYPE_GUID
-	imply CMD_GPT if MMC
-	imply CMD_MTD if MTD
-	imply DFU_MMC if MMC
-	imply DFU_MTD if MTD
-	help
-		activate a specific command stm32prog for STM32MP soc family
-		witch update the device with the tools STM32CubeProgrammer,
-		using UART with STM32 protocol or USB with DFU protocol
-		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
-		    on U-Boot DFU framework
-
 config CMD_STM32KEY
 	bool "command stm32key to fuse public key hash"
 	default y
@@ -177,6 +160,7 @@ config DEBUG_UART_CLOCK
 	default 64000000
 endif
 
+source "arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig"
 source "board/st/stm32mp1/Kconfig"
 source "board/dhelectronics/dh_stm32mp1/Kconfig"
 
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
new file mode 100644
index 0000000000..609a678793
--- /dev/null
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
@@ -0,0 +1,18 @@
+
+config CMD_STM32PROG
+	bool "command stm32prog for STM32CudeProgrammer"
+	select DFU
+	select DFU_RAM
+	select DFU_VIRT
+	select PARTITION_TYPE_GUID
+	imply CMD_GPT if MMC
+	imply CMD_MTD if MTD
+	imply DFU_MMC if MMC
+	imply DFU_MTD if MTD
+	help
+		activate a specific command stm32prog for STM32MP soc family
+		witch update the device with the tools STM32CubeProgrammer,
+		using UART with STM32 protocol or USB with DFU protocol
+		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
+		    on U-Boot DFU framework
+
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB
  2021-02-25 12:37 [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrick Delaunay
@ 2021-02-25 12:37 ` Patrick Delaunay
  2021-03-09 13:08   ` Patrice CHOTARD
  2021-02-25 12:37 ` [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error Patrick Delaunay
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 12+ messages in thread
From: Patrick Delaunay @ 2021-02-25 12:37 UTC (permalink / raw)
  To: u-boot

Add CONFIG_CMD_STM32PROG_SERIAL and CONFIG_CMD_STM32PROG_USB to
independently select the support of UART or USB communication for
STM32CubeProgrammer.

For serial boot over UART, user can deactivate CONFIG_CMD_STM32PROG_SERIAL
to use U-Boot console of binary loaded by UART (for board bring-up for
example).

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

 arch/arm/mach-stm32mp/Makefile                |  2 +-
 arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig   | 20 ++++++++++++++--
 arch/arm/mach-stm32mp/cmd_stm32prog/Makefile  |  8 +++----
 .../cmd_stm32prog/cmd_stm32prog.c             |  4 ++--
 .../mach-stm32mp/cmd_stm32prog/stm32prog.h    | 23 ++++++++++++++++++-
 arch/arm/mach-stm32mp/cpu.c                   |  5 ++--
 board/st/common/stm32mp_dfu.c                 |  9 ++++----
 7 files changed, 55 insertions(+), 16 deletions(-)

diff --git a/arch/arm/mach-stm32mp/Makefile b/arch/arm/mach-stm32mp/Makefile
index c8aa24d489..aa39867080 100644
--- a/arch/arm/mach-stm32mp/Makefile
+++ b/arch/arm/mach-stm32mp/Makefile
@@ -11,7 +11,7 @@ obj-y += bsec.o
 ifdef CONFIG_SPL_BUILD
 obj-y += spl.o
 else
-obj-$(CONFIG_CMD_STM32PROG) += cmd_stm32prog/
+obj-y += cmd_stm32prog/
 obj-$(CONFIG_CMD_STM32KEY) += cmd_stm32key.o
 obj-$(CONFIG_ARMV7_PSCI) += psci.o
 obj-$(CONFIG_TFABOOT) += boot_params.o
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
index 609a678793..f4c0d18d4d 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
@@ -11,8 +11,24 @@ config CMD_STM32PROG
 	imply DFU_MTD if MTD
 	help
 		activate a specific command stm32prog for STM32MP soc family
-		witch update the device with the tools STM32CubeProgrammer,
-		using UART with STM32 protocol or USB with DFU protocol
+		witch update the device with the tools STM32CubeProgrammer
 		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
 		    on U-Boot DFU framework
 
+config CMD_STM32PROG_USB
+	bool "support stm32prog over USB"
+	depends on CMD_STM32PROG
+	default y
+	help
+		activate the command "stm32prog usb" for STM32MP soc family
+		witch update the device with the tools STM32CubeProgrammer,
+		using USB with DFU protocol
+
+config CMD_STM32PROG_SERIAL
+	bool "support stm32prog over UART"
+	depends on CMD_STM32PROG
+	default y
+	help
+		activate the command "stm32prog serial" for STM32MP soc family
+		with the tools STM32CubeProgrammer using U-Boot serial device
+		and UART protocol.
\ No newline at end of file
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile b/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
index 548a378921..b57e1bf870 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
@@ -3,7 +3,7 @@
 # Copyright (C) 2020, STMicroelectronics - All Rights Reserved
 #
 
-obj-y += cmd_stm32prog.o
-obj-y += stm32prog.o
-obj-y += stm32prog_serial.o
-obj-y += stm32prog_usb.o
+obj-$(CONFIG_CMD_STM32PROG) += cmd_stm32prog.o
+obj-$(CONFIG_CMD_STM32PROG) += stm32prog.o
+obj-$(CONFIG_CMD_STM32PROG_SERIAL) += stm32prog_serial.o
+obj-$(CONFIG_CMD_STM32PROG_USB) += stm32prog_usb.o
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
index 34a6be66c3..a7e2861764 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
@@ -50,9 +50,9 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, int argc,
 	if (argc < 3 ||  argc > 5)
 		return CMD_RET_USAGE;
 
-	if (!strcmp(argv[1], "usb"))
+	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) && !strcmp(argv[1], "usb"))
 		link = LINK_USB;
-	else if (!strcmp(argv[1], "serial"))
+	else if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) && !strcmp(argv[1], "serial"))
 		link = LINK_SERIAL;
 
 	if (link == LINK_UNDEFINED) {
diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
index be482c3402..18af99c78b 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
@@ -177,9 +177,30 @@ char *stm32prog_get_error(struct stm32prog_data *data);
 
 /* Main function */
 int stm32prog_init(struct stm32prog_data *data, ulong addr, ulong size);
+void stm32prog_clean(struct stm32prog_data *data);
+
+#ifdef CONFIG_CMD_STM32PROG_SERIAL
 int stm32prog_serial_init(struct stm32prog_data *data, int link_dev);
 bool stm32prog_serial_loop(struct stm32prog_data *data);
+#else
+static inline int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
+{
+	return -ENOSYS;
+}
+
+static inline bool stm32prog_serial_loop(struct stm32prog_data *data)
+{
+	return false;
+}
+#endif
+
+#ifdef CONFIG_CMD_STM32PROG_USB
 bool stm32prog_usb_loop(struct stm32prog_data *data, int dev);
-void stm32prog_clean(struct stm32prog_data *data);
+#else
+static inline bool stm32prog_usb_loop(struct stm32prog_data *data, int dev)
+{
+	return false;
+}
+#endif
 
 #endif
diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
index 3faa4ec18a..a453f89d02 100644
--- a/arch/arm/mach-stm32mp/cpu.c
+++ b/arch/arm/mach-stm32mp/cpu.c
@@ -265,7 +265,8 @@ int arch_cpu_init(void)
 
 	boot_mode = get_bootmode();
 
-	if ((boot_mode & TAMP_BOOT_DEVICE_MASK) == BOOT_SERIAL_UART)
+	if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) &&
+	    (boot_mode & TAMP_BOOT_DEVICE_MASK) == BOOT_SERIAL_UART)
 		gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
 #if defined(CONFIG_DEBUG_UART) && \
 	!defined(CONFIG_TFABOOT) && \
@@ -485,7 +486,7 @@ static void setup_boot_mode(void)
 		env_set("boot_instance", cmd);
 
 		/* restore console on uart when not used */
-		if (gd->cur_serial_dev != dev) {
+		if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) && gd->cur_serial_dev != dev) {
 			gd->flags &= ~(GD_FLG_SILENT |
 				       GD_FLG_DISABLE_CONSOLE);
 			printf("serial boot with console enabled!\n");
diff --git a/board/st/common/stm32mp_dfu.c b/board/st/common/stm32mp_dfu.c
index 5633a6cb95..00d1fb8f59 100644
--- a/board/st/common/stm32mp_dfu.c
+++ b/board/st/common/stm32mp_dfu.c
@@ -143,7 +143,8 @@ void set_dfu_alt_info(char *interface, char *devstr)
 			board_get_alt_info_mtd(mtd, buf);
 	}
 
-	if (IS_ENABLED(CONFIG_DFU_VIRT)) {
+	if (IS_ENABLED(CONFIG_DFU_VIRT) &&
+	    IS_ENABLED(CMD_STM32PROG_USB)) {
 		strncat(buf, "&virt 0=OTP", DFU_ALT_BUF_LEN);
 
 		if (IS_ENABLED(CONFIG_PMIC_STPMIC1))
@@ -217,7 +218,7 @@ int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
 		return dfu_pmic_read(offset, buf, len);
 	}
 
-	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
+	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
 	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
 		return stm32prog_read_medium_virt(dfu, offset, buf, len);
 
@@ -228,7 +229,7 @@ int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
 int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
 			  void *buf, long *len)
 {
-	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
+	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
 	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
 		return stm32prog_write_medium_virt(dfu, offset, buf, len);
 
@@ -237,7 +238,7 @@ int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
 
 int __weak dfu_get_medium_size_virt(struct dfu_entity *dfu, u64 *size)
 {
-	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
+	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
 	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
 		return stm32prog_get_medium_size_virt(dfu, size);
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error
  2021-02-25 12:37 [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrick Delaunay
  2021-02-25 12:37 ` [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB Patrick Delaunay
@ 2021-02-25 12:37 ` Patrick Delaunay
  2021-03-09 13:11   ` Patrice CHOTARD
  2021-03-12 12:28   ` Patrice CHOTARD
  2021-02-25 12:37 ` [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number Patrick Delaunay
  2021-03-09 13:07 ` [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrice CHOTARD
  3 siblings, 2 replies; 12+ messages in thread
From: Patrick Delaunay @ 2021-02-25 12:37 UTC (permalink / raw)
  To: u-boot

When serial instance is not found in device tree, the console
should be enabled and the error should be indicated.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

 arch/arm/mach-stm32mp/cpu.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
index a453f89d02..527b6290de 100644
--- a/arch/arm/mach-stm32mp/cpu.c
+++ b/arch/arm/mach-stm32mp/cpu.c
@@ -476,11 +476,17 @@ static void setup_boot_mode(void)
 			break;
 		/* serial : search associated alias in devicetree */
 		sprintf(cmd, "serial@%x", serial_addr[instance]);
-		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev))
-			break;
-		if (fdtdec_get_alias_seq(gd->fdt_blob, "serial",
-					 dev_of_offset(dev), &alias))
+		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
+		    fdtdec_get_alias_seq(gd->fdt_blob, "serial",
+					 dev_of_offset(dev), &alias)) {
+			/* restore console on error */
+			if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
+				gd->flags &= ~(GD_FLG_SILENT |
+					       GD_FLG_DISABLE_CONSOLE);
+			printf("serial%d = %s not found in device tree!\n",
+			       instance, cmd);
 			break;
+		}
 		sprintf(cmd, "%d", alias);
 		env_set("boot_device", "serial");
 		env_set("boot_instance", cmd);
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number
  2021-02-25 12:37 [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrick Delaunay
  2021-02-25 12:37 ` [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB Patrick Delaunay
  2021-02-25 12:37 ` [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error Patrick Delaunay
@ 2021-02-25 12:37 ` Patrick Delaunay
  2021-03-09 13:14   ` Patrice CHOTARD
  2021-03-09 13:07 ` [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrice CHOTARD
  3 siblings, 1 reply; 12+ messages in thread
From: Patrick Delaunay @ 2021-02-25 12:37 UTC (permalink / raw)
  To: u-boot

The command "stm32prog serial <dev>" can directly use the device sequence
number of serial uclass as this sequence number is egual to alias when it
exist; this assumption simplify the code and avoid access to gd->fdt_blob
and the device tree parsing.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

 .../cmd_stm32prog/stm32prog_serial.c          | 29 ++++---------------
 arch/arm/mach-stm32mp/cpu.c                   | 11 +++----
 2 files changed, 10 insertions(+), 30 deletions(-)

diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
index 373ca20886..a51e5e3ec8 100644
--- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
+++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
@@ -187,36 +187,19 @@ static int stm32prog_read(struct stm32prog_data *data, u8 phase, u32 offset,
 int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
 {
 	struct udevice *dev = NULL;
-	int node;
-	char alias[10];
-	const char *path;
 	struct dm_serial_ops *ops;
 	/* no parity, 8 bits, 1 stop */
 	u32 serial_config = SERIAL_DEFAULT_CONFIG;
 
 	down_serial_dev = NULL;
 
-	sprintf(alias, "serial%d", link_dev);
-	path = fdt_get_alias(gd->fdt_blob, alias);
-	if (!path) {
-		log_err("%s alias not found", alias);
-		return -ENODEV;
-	}
-	node = fdt_path_offset(gd->fdt_blob, path);
-	if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node,
-					    &dev)) {
-		down_serial_dev = dev;
-	} else if (node > 0 &&
-		   !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node),
-				   &dev, false)) {
-		if (!device_probe(dev))
-			down_serial_dev = dev;
-	}
-	if (!down_serial_dev) {
-		log_err("%s = %s device not found", alias, path);
+	if (uclass_get_device_by_seq(UCLASS_SERIAL, link_dev, &dev)) {
+		log_err("serial %d device not found\n", link_dev);
 		return -ENODEV;
 	}
 
+	down_serial_dev = dev;
+
 	/* force silent console on uart only when used */
 	if (gd->cur_serial_dev == down_serial_dev)
 		gd->flags |= GD_FLG_DISABLE_CONSOLE | GD_FLG_SILENT;
@@ -226,11 +209,11 @@ int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
 	ops = serial_get_ops(down_serial_dev);
 
 	if (!ops) {
-		log_err("%s = %s missing ops", alias, path);
+		log_err("serial %d = %s missing ops\n", link_dev, dev->name);
 		return -ENODEV;
 	}
 	if (!ops->setconfig) {
-		log_err("%s = %s missing setconfig", alias, path);
+		log_err("serial %d = %s missing setconfig\n", link_dev, dev->name);
 		return -ENODEV;
 	}
 
diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
index 527b6290de..9a76b5633b 100644
--- a/arch/arm/mach-stm32mp/cpu.c
+++ b/arch/arm/mach-stm32mp/cpu.c
@@ -466,7 +466,6 @@ static void setup_boot_mode(void)
 	unsigned int instance = (boot_mode & TAMP_BOOT_INSTANCE_MASK) - 1;
 	u32 forced_mode = (boot_ctx & TAMP_BOOT_FORCED_MASK);
 	struct udevice *dev;
-	int alias;
 
 	log_debug("%s: boot_ctx=0x%x => boot_mode=%x, instance=%d forced=%x\n",
 		  __func__, boot_ctx, boot_mode, instance, forced_mode);
@@ -474,20 +473,18 @@ static void setup_boot_mode(void)
 	case BOOT_SERIAL_UART:
 		if (instance > ARRAY_SIZE(serial_addr))
 			break;
-		/* serial : search associated alias in devicetree */
+		/* serial : search associated node in devicetree */
 		sprintf(cmd, "serial@%x", serial_addr[instance]);
-		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
-		    fdtdec_get_alias_seq(gd->fdt_blob, "serial",
-					 dev_of_offset(dev), &alias)) {
+		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev)) {
 			/* restore console on error */
 			if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
 				gd->flags &= ~(GD_FLG_SILENT |
 					       GD_FLG_DISABLE_CONSOLE);
-			printf("serial%d = %s not found in device tree!\n",
+			printf("uart%d = %s not found in device tree!\n",
 			       instance, cmd);
 			break;
 		}
-		sprintf(cmd, "%d", alias);
+		sprintf(cmd, "%d", dev_seq(dev));
 		env_set("boot_device", "serial");
 		env_set("boot_instance", cmd);
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command
  2021-02-25 12:37 [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrick Delaunay
                   ` (2 preceding siblings ...)
  2021-02-25 12:37 ` [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number Patrick Delaunay
@ 2021-03-09 13:07 ` Patrice CHOTARD
  2021-03-12 12:27   ` [Uboot-stm32] " Patrice CHOTARD
  3 siblings, 1 reply; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-09 13:07 UTC (permalink / raw)
  To: u-boot

Hi Patrick

On 2/25/21 1:37 PM, Patrick Delaunay wrote:
> Move CONFIG_CMD_STM32PROG in a specific Kconfig file for stm32prog command.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/Kconfig               | 18 +-----------------
>  arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig | 18 ++++++++++++++++++
>  2 files changed, 19 insertions(+), 17 deletions(-)
>  create mode 100644 arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
> 
> diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
> index f538d7cb83..079d66a80c 100644
> --- a/arch/arm/mach-stm32mp/Kconfig
> +++ b/arch/arm/mach-stm32mp/Kconfig
> @@ -121,23 +121,6 @@ config STM32_ETZPC
>  	help
>  	  Say y to enable STM32 Extended TrustZone Protection
>  
> -config CMD_STM32PROG
> -	bool "command stm32prog for STM32CudeProgrammer"
> -	select DFU
> -	select DFU_RAM
> -	select DFU_VIRT
> -	select PARTITION_TYPE_GUID
> -	imply CMD_GPT if MMC
> -	imply CMD_MTD if MTD
> -	imply DFU_MMC if MMC
> -	imply DFU_MTD if MTD
> -	help
> -		activate a specific command stm32prog for STM32MP soc family
> -		witch update the device with the tools STM32CubeProgrammer,
> -		using UART with STM32 protocol or USB with DFU protocol
> -		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
> -		    on U-Boot DFU framework
> -
>  config CMD_STM32KEY
>  	bool "command stm32key to fuse public key hash"
>  	default y
> @@ -177,6 +160,7 @@ config DEBUG_UART_CLOCK
>  	default 64000000
>  endif
>  
> +source "arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig"
>  source "board/st/stm32mp1/Kconfig"
>  source "board/dhelectronics/dh_stm32mp1/Kconfig"
>  
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
> new file mode 100644
> index 0000000000..609a678793
> --- /dev/null
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
> @@ -0,0 +1,18 @@
> +
> +config CMD_STM32PROG
> +	bool "command stm32prog for STM32CudeProgrammer"
> +	select DFU
> +	select DFU_RAM
> +	select DFU_VIRT
> +	select PARTITION_TYPE_GUID
> +	imply CMD_GPT if MMC
> +	imply CMD_MTD if MTD
> +	imply DFU_MMC if MMC
> +	imply DFU_MTD if MTD
> +	help
> +		activate a specific command stm32prog for STM32MP soc family
> +		witch update the device with the tools STM32CubeProgrammer,
> +		using UART with STM32 protocol or USB with DFU protocol
> +		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
> +		    on U-Boot DFU framework
> +
> 


Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>

Thanks
Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB
  2021-02-25 12:37 ` [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB Patrick Delaunay
@ 2021-03-09 13:08   ` Patrice CHOTARD
  2021-03-12 12:27     ` Patrice CHOTARD
  0 siblings, 1 reply; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-09 13:08 UTC (permalink / raw)
  To: u-boot

Hi Patrick

On 2/25/21 1:37 PM, Patrick Delaunay wrote:
> Add CONFIG_CMD_STM32PROG_SERIAL and CONFIG_CMD_STM32PROG_USB to
> independently select the support of UART or USB communication for
> STM32CubeProgrammer.
> 
> For serial boot over UART, user can deactivate CONFIG_CMD_STM32PROG_SERIAL
> to use U-Boot console of binary loaded by UART (for board bring-up for
> example).
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/Makefile                |  2 +-
>  arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig   | 20 ++++++++++++++--
>  arch/arm/mach-stm32mp/cmd_stm32prog/Makefile  |  8 +++----
>  .../cmd_stm32prog/cmd_stm32prog.c             |  4 ++--
>  .../mach-stm32mp/cmd_stm32prog/stm32prog.h    | 23 ++++++++++++++++++-
>  arch/arm/mach-stm32mp/cpu.c                   |  5 ++--
>  board/st/common/stm32mp_dfu.c                 |  9 ++++----
>  7 files changed, 55 insertions(+), 16 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/Makefile b/arch/arm/mach-stm32mp/Makefile
> index c8aa24d489..aa39867080 100644
> --- a/arch/arm/mach-stm32mp/Makefile
> +++ b/arch/arm/mach-stm32mp/Makefile
> @@ -11,7 +11,7 @@ obj-y += bsec.o
>  ifdef CONFIG_SPL_BUILD
>  obj-y += spl.o
>  else
> -obj-$(CONFIG_CMD_STM32PROG) += cmd_stm32prog/
> +obj-y += cmd_stm32prog/
>  obj-$(CONFIG_CMD_STM32KEY) += cmd_stm32key.o
>  obj-$(CONFIG_ARMV7_PSCI) += psci.o
>  obj-$(CONFIG_TFABOOT) += boot_params.o
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
> index 609a678793..f4c0d18d4d 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
> @@ -11,8 +11,24 @@ config CMD_STM32PROG
>  	imply DFU_MTD if MTD
>  	help
>  		activate a specific command stm32prog for STM32MP soc family
> -		witch update the device with the tools STM32CubeProgrammer,
> -		using UART with STM32 protocol or USB with DFU protocol
> +		witch update the device with the tools STM32CubeProgrammer
>  		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
>  		    on U-Boot DFU framework
>  
> +config CMD_STM32PROG_USB
> +	bool "support stm32prog over USB"
> +	depends on CMD_STM32PROG
> +	default y
> +	help
> +		activate the command "stm32prog usb" for STM32MP soc family
> +		witch update the device with the tools STM32CubeProgrammer,
> +		using USB with DFU protocol
> +
> +config CMD_STM32PROG_SERIAL
> +	bool "support stm32prog over UART"
> +	depends on CMD_STM32PROG
> +	default y
> +	help
> +		activate the command "stm32prog serial" for STM32MP soc family
> +		with the tools STM32CubeProgrammer using U-Boot serial device
> +		and UART protocol.
> \ No newline at end of file
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile b/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
> index 548a378921..b57e1bf870 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
> @@ -3,7 +3,7 @@
>  # Copyright (C) 2020, STMicroelectronics - All Rights Reserved
>  #
>  
> -obj-y += cmd_stm32prog.o
> -obj-y += stm32prog.o
> -obj-y += stm32prog_serial.o
> -obj-y += stm32prog_usb.o
> +obj-$(CONFIG_CMD_STM32PROG) += cmd_stm32prog.o
> +obj-$(CONFIG_CMD_STM32PROG) += stm32prog.o
> +obj-$(CONFIG_CMD_STM32PROG_SERIAL) += stm32prog_serial.o
> +obj-$(CONFIG_CMD_STM32PROG_USB) += stm32prog_usb.o
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
> index 34a6be66c3..a7e2861764 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
> @@ -50,9 +50,9 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, int argc,
>  	if (argc < 3 ||  argc > 5)
>  		return CMD_RET_USAGE;
>  
> -	if (!strcmp(argv[1], "usb"))
> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) && !strcmp(argv[1], "usb"))
>  		link = LINK_USB;
> -	else if (!strcmp(argv[1], "serial"))
> +	else if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) && !strcmp(argv[1], "serial"))
>  		link = LINK_SERIAL;
>  
>  	if (link == LINK_UNDEFINED) {
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> index be482c3402..18af99c78b 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
> @@ -177,9 +177,30 @@ char *stm32prog_get_error(struct stm32prog_data *data);
>  
>  /* Main function */
>  int stm32prog_init(struct stm32prog_data *data, ulong addr, ulong size);
> +void stm32prog_clean(struct stm32prog_data *data);
> +
> +#ifdef CONFIG_CMD_STM32PROG_SERIAL
>  int stm32prog_serial_init(struct stm32prog_data *data, int link_dev);
>  bool stm32prog_serial_loop(struct stm32prog_data *data);
> +#else
> +static inline int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
> +{
> +	return -ENOSYS;
> +}
> +
> +static inline bool stm32prog_serial_loop(struct stm32prog_data *data)
> +{
> +	return false;
> +}
> +#endif
> +
> +#ifdef CONFIG_CMD_STM32PROG_USB
>  bool stm32prog_usb_loop(struct stm32prog_data *data, int dev);
> -void stm32prog_clean(struct stm32prog_data *data);
> +#else
> +static inline bool stm32prog_usb_loop(struct stm32prog_data *data, int dev)
> +{
> +	return false;
> +}
> +#endif
>  
>  #endif
> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
> index 3faa4ec18a..a453f89d02 100644
> --- a/arch/arm/mach-stm32mp/cpu.c
> +++ b/arch/arm/mach-stm32mp/cpu.c
> @@ -265,7 +265,8 @@ int arch_cpu_init(void)
>  
>  	boot_mode = get_bootmode();
>  
> -	if ((boot_mode & TAMP_BOOT_DEVICE_MASK) == BOOT_SERIAL_UART)
> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) &&
> +	    (boot_mode & TAMP_BOOT_DEVICE_MASK) == BOOT_SERIAL_UART)
>  		gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
>  #if defined(CONFIG_DEBUG_UART) && \
>  	!defined(CONFIG_TFABOOT) && \
> @@ -485,7 +486,7 @@ static void setup_boot_mode(void)
>  		env_set("boot_instance", cmd);
>  
>  		/* restore console on uart when not used */
> -		if (gd->cur_serial_dev != dev) {
> +		if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) && gd->cur_serial_dev != dev) {
>  			gd->flags &= ~(GD_FLG_SILENT |
>  				       GD_FLG_DISABLE_CONSOLE);
>  			printf("serial boot with console enabled!\n");
> diff --git a/board/st/common/stm32mp_dfu.c b/board/st/common/stm32mp_dfu.c
> index 5633a6cb95..00d1fb8f59 100644
> --- a/board/st/common/stm32mp_dfu.c
> +++ b/board/st/common/stm32mp_dfu.c
> @@ -143,7 +143,8 @@ void set_dfu_alt_info(char *interface, char *devstr)
>  			board_get_alt_info_mtd(mtd, buf);
>  	}
>  
> -	if (IS_ENABLED(CONFIG_DFU_VIRT)) {
> +	if (IS_ENABLED(CONFIG_DFU_VIRT) &&
> +	    IS_ENABLED(CMD_STM32PROG_USB)) {
>  		strncat(buf, "&virt 0=OTP", DFU_ALT_BUF_LEN);
>  
>  		if (IS_ENABLED(CONFIG_PMIC_STPMIC1))
> @@ -217,7 +218,7 @@ int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
>  		return dfu_pmic_read(offset, buf, len);
>  	}
>  
> -	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
>  	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
>  		return stm32prog_read_medium_virt(dfu, offset, buf, len);
>  
> @@ -228,7 +229,7 @@ int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
>  int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
>  			  void *buf, long *len)
>  {
> -	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
>  	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
>  		return stm32prog_write_medium_virt(dfu, offset, buf, len);
>  
> @@ -237,7 +238,7 @@ int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
>  
>  int __weak dfu_get_medium_size_virt(struct dfu_entity *dfu, u64 *size)
>  {
> -	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
>  	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
>  		return stm32prog_get_medium_size_virt(dfu, size);
>  
> 


Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>

Thanks
Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error
  2021-02-25 12:37 ` [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error Patrick Delaunay
@ 2021-03-09 13:11   ` Patrice CHOTARD
  2021-03-12 12:28   ` Patrice CHOTARD
  1 sibling, 0 replies; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-09 13:11 UTC (permalink / raw)
  To: u-boot

Hi Patrick

On 2/25/21 1:37 PM, Patrick Delaunay wrote:
> When serial instance is not found in device tree, the console
> should be enabled and the error should be indicated.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/cpu.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
> index a453f89d02..527b6290de 100644
> --- a/arch/arm/mach-stm32mp/cpu.c
> +++ b/arch/arm/mach-stm32mp/cpu.c
> @@ -476,11 +476,17 @@ static void setup_boot_mode(void)
>  			break;
>  		/* serial : search associated alias in devicetree */
>  		sprintf(cmd, "serial@%x", serial_addr[instance]);
> -		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev))
> -			break;
> -		if (fdtdec_get_alias_seq(gd->fdt_blob, "serial",
> -					 dev_of_offset(dev), &alias))
> +		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
> +		    fdtdec_get_alias_seq(gd->fdt_blob, "serial",
> +					 dev_of_offset(dev), &alias)) {
> +			/* restore console on error */
> +			if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
> +				gd->flags &= ~(GD_FLG_SILENT |
> +					       GD_FLG_DISABLE_CONSOLE);
> +			printf("serial%d = %s not found in device tree!\n",
> +			       instance, cmd);
>  			break;
> +		}
>  		sprintf(cmd, "%d", alias);
>  		env_set("boot_device", "serial");
>  		env_set("boot_instance", cmd);
> 


Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>

Thanks
Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number
  2021-02-25 12:37 ` [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number Patrick Delaunay
@ 2021-03-09 13:14   ` Patrice CHOTARD
  2021-03-12 12:28     ` Patrice CHOTARD
  0 siblings, 1 reply; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-09 13:14 UTC (permalink / raw)
  To: u-boot

Hi Patrick

On 2/25/21 1:37 PM, Patrick Delaunay wrote:
> The command "stm32prog serial <dev>" can directly use the device sequence
> number of serial uclass as this sequence number is egual to alias when it
> exist; this assumption simplify the code and avoid access to gd->fdt_blob
> and the device tree parsing.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  .../cmd_stm32prog/stm32prog_serial.c          | 29 ++++---------------
>  arch/arm/mach-stm32mp/cpu.c                   | 11 +++----
>  2 files changed, 10 insertions(+), 30 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> index 373ca20886..a51e5e3ec8 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> @@ -187,36 +187,19 @@ static int stm32prog_read(struct stm32prog_data *data, u8 phase, u32 offset,
>  int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
>  {
>  	struct udevice *dev = NULL;
> -	int node;
> -	char alias[10];
> -	const char *path;
>  	struct dm_serial_ops *ops;
>  	/* no parity, 8 bits, 1 stop */
>  	u32 serial_config = SERIAL_DEFAULT_CONFIG;
>  
>  	down_serial_dev = NULL;
>  
> -	sprintf(alias, "serial%d", link_dev);
> -	path = fdt_get_alias(gd->fdt_blob, alias);
> -	if (!path) {
> -		log_err("%s alias not found", alias);
> -		return -ENODEV;
> -	}
> -	node = fdt_path_offset(gd->fdt_blob, path);
> -	if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node,
> -					    &dev)) {
> -		down_serial_dev = dev;
> -	} else if (node > 0 &&
> -		   !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node),
> -				   &dev, false)) {
> -		if (!device_probe(dev))
> -			down_serial_dev = dev;
> -	}
> -	if (!down_serial_dev) {
> -		log_err("%s = %s device not found", alias, path);
> +	if (uclass_get_device_by_seq(UCLASS_SERIAL, link_dev, &dev)) {
> +		log_err("serial %d device not found\n", link_dev);
>  		return -ENODEV;
>  	}
>  
> +	down_serial_dev = dev;
> +
>  	/* force silent console on uart only when used */
>  	if (gd->cur_serial_dev == down_serial_dev)
>  		gd->flags |= GD_FLG_DISABLE_CONSOLE | GD_FLG_SILENT;
> @@ -226,11 +209,11 @@ int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
>  	ops = serial_get_ops(down_serial_dev);
>  
>  	if (!ops) {
> -		log_err("%s = %s missing ops", alias, path);
> +		log_err("serial %d = %s missing ops\n", link_dev, dev->name);
>  		return -ENODEV;
>  	}
>  	if (!ops->setconfig) {
> -		log_err("%s = %s missing setconfig", alias, path);
> +		log_err("serial %d = %s missing setconfig\n", link_dev, dev->name);
>  		return -ENODEV;
>  	}
>  
> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
> index 527b6290de..9a76b5633b 100644
> --- a/arch/arm/mach-stm32mp/cpu.c
> +++ b/arch/arm/mach-stm32mp/cpu.c
> @@ -466,7 +466,6 @@ static void setup_boot_mode(void)
>  	unsigned int instance = (boot_mode & TAMP_BOOT_INSTANCE_MASK) - 1;
>  	u32 forced_mode = (boot_ctx & TAMP_BOOT_FORCED_MASK);
>  	struct udevice *dev;
> -	int alias;
>  
>  	log_debug("%s: boot_ctx=0x%x => boot_mode=%x, instance=%d forced=%x\n",
>  		  __func__, boot_ctx, boot_mode, instance, forced_mode);
> @@ -474,20 +473,18 @@ static void setup_boot_mode(void)
>  	case BOOT_SERIAL_UART:
>  		if (instance > ARRAY_SIZE(serial_addr))
>  			break;
> -		/* serial : search associated alias in devicetree */
> +		/* serial : search associated node in devicetree */
>  		sprintf(cmd, "serial@%x", serial_addr[instance]);
> -		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
> -		    fdtdec_get_alias_seq(gd->fdt_blob, "serial",
> -					 dev_of_offset(dev), &alias)) {
> +		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev)) {
>  			/* restore console on error */
>  			if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
>  				gd->flags &= ~(GD_FLG_SILENT |
>  					       GD_FLG_DISABLE_CONSOLE);
> -			printf("serial%d = %s not found in device tree!\n",
> +			printf("uart%d = %s not found in device tree!\n",
>  			       instance, cmd);
>  			break;
>  		}
> -		sprintf(cmd, "%d", alias);
> +		sprintf(cmd, "%d", dev_seq(dev));
>  		env_set("boot_device", "serial");
>  		env_set("boot_instance", cmd);
>  
> 

Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>

Thanks
Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Uboot-stm32] [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command
  2021-03-09 13:07 ` [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrice CHOTARD
@ 2021-03-12 12:27   ` Patrice CHOTARD
  0 siblings, 0 replies; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-12 12:27 UTC (permalink / raw)
  To: u-boot

Hi

On 3/9/21 2:07 PM, Patrice CHOTARD wrote:
> Hi Patrick
> 
> On 2/25/21 1:37 PM, Patrick Delaunay wrote:
>> Move CONFIG_CMD_STM32PROG in a specific Kconfig file for stm32prog command.
>>
>> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
>> ---
>>
>>  arch/arm/mach-stm32mp/Kconfig               | 18 +-----------------
>>  arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig | 18 ++++++++++++++++++
>>  2 files changed, 19 insertions(+), 17 deletions(-)
>>  create mode 100644 arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
>>
>> diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
>> index f538d7cb83..079d66a80c 100644
>> --- a/arch/arm/mach-stm32mp/Kconfig
>> +++ b/arch/arm/mach-stm32mp/Kconfig
>> @@ -121,23 +121,6 @@ config STM32_ETZPC
>>  	help
>>  	  Say y to enable STM32 Extended TrustZone Protection
>>  
>> -config CMD_STM32PROG
>> -	bool "command stm32prog for STM32CudeProgrammer"
>> -	select DFU
>> -	select DFU_RAM
>> -	select DFU_VIRT
>> -	select PARTITION_TYPE_GUID
>> -	imply CMD_GPT if MMC
>> -	imply CMD_MTD if MTD
>> -	imply DFU_MMC if MMC
>> -	imply DFU_MTD if MTD
>> -	help
>> -		activate a specific command stm32prog for STM32MP soc family
>> -		witch update the device with the tools STM32CubeProgrammer,
>> -		using UART with STM32 protocol or USB with DFU protocol
>> -		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
>> -		    on U-Boot DFU framework
>> -
>>  config CMD_STM32KEY
>>  	bool "command stm32key to fuse public key hash"
>>  	default y
>> @@ -177,6 +160,7 @@ config DEBUG_UART_CLOCK
>>  	default 64000000
>>  endif
>>  
>> +source "arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig"
>>  source "board/st/stm32mp1/Kconfig"
>>  source "board/dhelectronics/dh_stm32mp1/Kconfig"
>>  
>> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
>> new file mode 100644
>> index 0000000000..609a678793
>> --- /dev/null
>> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
>> @@ -0,0 +1,18 @@
>> +
>> +config CMD_STM32PROG
>> +	bool "command stm32prog for STM32CudeProgrammer"
>> +	select DFU
>> +	select DFU_RAM
>> +	select DFU_VIRT
>> +	select PARTITION_TYPE_GUID
>> +	imply CMD_GPT if MMC
>> +	imply CMD_MTD if MTD
>> +	imply DFU_MMC if MMC
>> +	imply DFU_MTD if MTD
>> +	help
>> +		activate a specific command stm32prog for STM32MP soc family
>> +		witch update the device with the tools STM32CubeProgrammer,
>> +		using UART with STM32 protocol or USB with DFU protocol
>> +		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
>> +		    on U-Boot DFU framework
>> +
>>
> 
> 
> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
> 
> Thanks
> Patrice
> _______________________________________________
> Uboot-stm32 mailing list
> Uboot-stm32 at st-md-mailman.stormreply.com
> https://st-md-mailman.stormreply.com/mailman/listinfo/uboot-stm32
> 
Applied to u-boot-stm/next

Thanks

Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB
  2021-03-09 13:08   ` Patrice CHOTARD
@ 2021-03-12 12:27     ` Patrice CHOTARD
  0 siblings, 0 replies; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-12 12:27 UTC (permalink / raw)
  To: u-boot

Hi

On 3/9/21 2:08 PM, Patrice CHOTARD wrote:
> Hi Patrick
> 
> On 2/25/21 1:37 PM, Patrick Delaunay wrote:
>> Add CONFIG_CMD_STM32PROG_SERIAL and CONFIG_CMD_STM32PROG_USB to
>> independently select the support of UART or USB communication for
>> STM32CubeProgrammer.
>>
>> For serial boot over UART, user can deactivate CONFIG_CMD_STM32PROG_SERIAL
>> to use U-Boot console of binary loaded by UART (for board bring-up for
>> example).
>>
>> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
>> ---
>>
>>  arch/arm/mach-stm32mp/Makefile                |  2 +-
>>  arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig   | 20 ++++++++++++++--
>>  arch/arm/mach-stm32mp/cmd_stm32prog/Makefile  |  8 +++----
>>  .../cmd_stm32prog/cmd_stm32prog.c             |  4 ++--
>>  .../mach-stm32mp/cmd_stm32prog/stm32prog.h    | 23 ++++++++++++++++++-
>>  arch/arm/mach-stm32mp/cpu.c                   |  5 ++--
>>  board/st/common/stm32mp_dfu.c                 |  9 ++++----
>>  7 files changed, 55 insertions(+), 16 deletions(-)
>>
>> diff --git a/arch/arm/mach-stm32mp/Makefile b/arch/arm/mach-stm32mp/Makefile
>> index c8aa24d489..aa39867080 100644
>> --- a/arch/arm/mach-stm32mp/Makefile
>> +++ b/arch/arm/mach-stm32mp/Makefile
>> @@ -11,7 +11,7 @@ obj-y += bsec.o
>>  ifdef CONFIG_SPL_BUILD
>>  obj-y += spl.o
>>  else
>> -obj-$(CONFIG_CMD_STM32PROG) += cmd_stm32prog/
>> +obj-y += cmd_stm32prog/
>>  obj-$(CONFIG_CMD_STM32KEY) += cmd_stm32key.o
>>  obj-$(CONFIG_ARMV7_PSCI) += psci.o
>>  obj-$(CONFIG_TFABOOT) += boot_params.o
>> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
>> index 609a678793..f4c0d18d4d 100644
>> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
>> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Kconfig
>> @@ -11,8 +11,24 @@ config CMD_STM32PROG
>>  	imply DFU_MTD if MTD
>>  	help
>>  		activate a specific command stm32prog for STM32MP soc family
>> -		witch update the device with the tools STM32CubeProgrammer,
>> -		using UART with STM32 protocol or USB with DFU protocol
>> +		witch update the device with the tools STM32CubeProgrammer
>>  		NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
>>  		    on U-Boot DFU framework
>>  
>> +config CMD_STM32PROG_USB
>> +	bool "support stm32prog over USB"
>> +	depends on CMD_STM32PROG
>> +	default y
>> +	help
>> +		activate the command "stm32prog usb" for STM32MP soc family
>> +		witch update the device with the tools STM32CubeProgrammer,
>> +		using USB with DFU protocol
>> +
>> +config CMD_STM32PROG_SERIAL
>> +	bool "support stm32prog over UART"
>> +	depends on CMD_STM32PROG
>> +	default y
>> +	help
>> +		activate the command "stm32prog serial" for STM32MP soc family
>> +		with the tools STM32CubeProgrammer using U-Boot serial device
>> +		and UART protocol.
>> \ No newline at end of file
>> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile b/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
>> index 548a378921..b57e1bf870 100644
>> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
>> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/Makefile
>> @@ -3,7 +3,7 @@
>>  # Copyright (C) 2020, STMicroelectronics - All Rights Reserved
>>  #
>>  
>> -obj-y += cmd_stm32prog.o
>> -obj-y += stm32prog.o
>> -obj-y += stm32prog_serial.o
>> -obj-y += stm32prog_usb.o
>> +obj-$(CONFIG_CMD_STM32PROG) += cmd_stm32prog.o
>> +obj-$(CONFIG_CMD_STM32PROG) += stm32prog.o
>> +obj-$(CONFIG_CMD_STM32PROG_SERIAL) += stm32prog_serial.o
>> +obj-$(CONFIG_CMD_STM32PROG_USB) += stm32prog_usb.o
>> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
>> index 34a6be66c3..a7e2861764 100644
>> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
>> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
>> @@ -50,9 +50,9 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, int argc,
>>  	if (argc < 3 ||  argc > 5)
>>  		return CMD_RET_USAGE;
>>  
>> -	if (!strcmp(argv[1], "usb"))
>> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) && !strcmp(argv[1], "usb"))
>>  		link = LINK_USB;
>> -	else if (!strcmp(argv[1], "serial"))
>> +	else if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) && !strcmp(argv[1], "serial"))
>>  		link = LINK_SERIAL;
>>  
>>  	if (link == LINK_UNDEFINED) {
>> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
>> index be482c3402..18af99c78b 100644
>> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
>> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h
>> @@ -177,9 +177,30 @@ char *stm32prog_get_error(struct stm32prog_data *data);
>>  
>>  /* Main function */
>>  int stm32prog_init(struct stm32prog_data *data, ulong addr, ulong size);
>> +void stm32prog_clean(struct stm32prog_data *data);
>> +
>> +#ifdef CONFIG_CMD_STM32PROG_SERIAL
>>  int stm32prog_serial_init(struct stm32prog_data *data, int link_dev);
>>  bool stm32prog_serial_loop(struct stm32prog_data *data);
>> +#else
>> +static inline int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
>> +{
>> +	return -ENOSYS;
>> +}
>> +
>> +static inline bool stm32prog_serial_loop(struct stm32prog_data *data)
>> +{
>> +	return false;
>> +}
>> +#endif
>> +
>> +#ifdef CONFIG_CMD_STM32PROG_USB
>>  bool stm32prog_usb_loop(struct stm32prog_data *data, int dev);
>> -void stm32prog_clean(struct stm32prog_data *data);
>> +#else
>> +static inline bool stm32prog_usb_loop(struct stm32prog_data *data, int dev)
>> +{
>> +	return false;
>> +}
>> +#endif
>>  
>>  #endif
>> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
>> index 3faa4ec18a..a453f89d02 100644
>> --- a/arch/arm/mach-stm32mp/cpu.c
>> +++ b/arch/arm/mach-stm32mp/cpu.c
>> @@ -265,7 +265,8 @@ int arch_cpu_init(void)
>>  
>>  	boot_mode = get_bootmode();
>>  
>> -	if ((boot_mode & TAMP_BOOT_DEVICE_MASK) == BOOT_SERIAL_UART)
>> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) &&
>> +	    (boot_mode & TAMP_BOOT_DEVICE_MASK) == BOOT_SERIAL_UART)
>>  		gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
>>  #if defined(CONFIG_DEBUG_UART) && \
>>  	!defined(CONFIG_TFABOOT) && \
>> @@ -485,7 +486,7 @@ static void setup_boot_mode(void)
>>  		env_set("boot_instance", cmd);
>>  
>>  		/* restore console on uart when not used */
>> -		if (gd->cur_serial_dev != dev) {
>> +		if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL) && gd->cur_serial_dev != dev) {
>>  			gd->flags &= ~(GD_FLG_SILENT |
>>  				       GD_FLG_DISABLE_CONSOLE);
>>  			printf("serial boot with console enabled!\n");
>> diff --git a/board/st/common/stm32mp_dfu.c b/board/st/common/stm32mp_dfu.c
>> index 5633a6cb95..00d1fb8f59 100644
>> --- a/board/st/common/stm32mp_dfu.c
>> +++ b/board/st/common/stm32mp_dfu.c
>> @@ -143,7 +143,8 @@ void set_dfu_alt_info(char *interface, char *devstr)
>>  			board_get_alt_info_mtd(mtd, buf);
>>  	}
>>  
>> -	if (IS_ENABLED(CONFIG_DFU_VIRT)) {
>> +	if (IS_ENABLED(CONFIG_DFU_VIRT) &&
>> +	    IS_ENABLED(CMD_STM32PROG_USB)) {
>>  		strncat(buf, "&virt 0=OTP", DFU_ALT_BUF_LEN);
>>  
>>  		if (IS_ENABLED(CONFIG_PMIC_STPMIC1))
>> @@ -217,7 +218,7 @@ int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
>>  		return dfu_pmic_read(offset, buf, len);
>>  	}
>>  
>> -	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
>> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
>>  	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
>>  		return stm32prog_read_medium_virt(dfu, offset, buf, len);
>>  
>> @@ -228,7 +229,7 @@ int dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
>>  int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
>>  			  void *buf, long *len)
>>  {
>> -	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
>> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
>>  	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
>>  		return stm32prog_write_medium_virt(dfu, offset, buf, len);
>>  
>> @@ -237,7 +238,7 @@ int dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
>>  
>>  int __weak dfu_get_medium_size_virt(struct dfu_entity *dfu, u64 *size)
>>  {
>> -	if (CONFIG_IS_ENABLED(CMD_STM32PROG) &&
>> +	if (IS_ENABLED(CONFIG_CMD_STM32PROG_USB) &&
>>  	    dfu->data.virt.dev_num >= STM32PROG_VIRT_FIRST_DEV_NUM)
>>  		return stm32prog_get_medium_size_virt(dfu, size);
>>  
>>
> 
> 
> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
> 
> Thanks
> Patrice
> 
Applied to u-boot-stm/next

Thanks

Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error
  2021-02-25 12:37 ` [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error Patrick Delaunay
  2021-03-09 13:11   ` Patrice CHOTARD
@ 2021-03-12 12:28   ` Patrice CHOTARD
  1 sibling, 0 replies; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-12 12:28 UTC (permalink / raw)
  To: u-boot

Hi

On 2/25/21 1:37 PM, Patrick Delaunay wrote:
> When serial instance is not found in device tree, the console
> should be enabled and the error should be indicated.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/cpu.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
> index a453f89d02..527b6290de 100644
> --- a/arch/arm/mach-stm32mp/cpu.c
> +++ b/arch/arm/mach-stm32mp/cpu.c
> @@ -476,11 +476,17 @@ static void setup_boot_mode(void)
>  			break;
>  		/* serial : search associated alias in devicetree */
>  		sprintf(cmd, "serial@%x", serial_addr[instance]);
> -		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev))
> -			break;
> -		if (fdtdec_get_alias_seq(gd->fdt_blob, "serial",
> -					 dev_of_offset(dev), &alias))
> +		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
> +		    fdtdec_get_alias_seq(gd->fdt_blob, "serial",
> +					 dev_of_offset(dev), &alias)) {
> +			/* restore console on error */
> +			if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
> +				gd->flags &= ~(GD_FLG_SILENT |
> +					       GD_FLG_DISABLE_CONSOLE);
> +			printf("serial%d = %s not found in device tree!\n",
> +			       instance, cmd);
>  			break;
> +		}
>  		sprintf(cmd, "%d", alias);
>  		env_set("boot_device", "serial");
>  		env_set("boot_instance", cmd);
> 
Applied to u-boot-stm/next

Thanks

Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number
  2021-03-09 13:14   ` Patrice CHOTARD
@ 2021-03-12 12:28     ` Patrice CHOTARD
  0 siblings, 0 replies; 12+ messages in thread
From: Patrice CHOTARD @ 2021-03-12 12:28 UTC (permalink / raw)
  To: u-boot

Hi

On 3/9/21 2:14 PM, Patrice CHOTARD wrote:
> Hi Patrick
> 
> On 2/25/21 1:37 PM, Patrick Delaunay wrote:
>> The command "stm32prog serial <dev>" can directly use the device sequence
>> number of serial uclass as this sequence number is egual to alias when it
>> exist; this assumption simplify the code and avoid access to gd->fdt_blob
>> and the device tree parsing.
>>
>> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
>> ---
>>
>>  .../cmd_stm32prog/stm32prog_serial.c          | 29 ++++---------------
>>  arch/arm/mach-stm32mp/cpu.c                   | 11 +++----
>>  2 files changed, 10 insertions(+), 30 deletions(-)
>>
>> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
>> index 373ca20886..a51e5e3ec8 100644
>> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
>> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
>> @@ -187,36 +187,19 @@ static int stm32prog_read(struct stm32prog_data *data, u8 phase, u32 offset,
>>  int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
>>  {
>>  	struct udevice *dev = NULL;
>> -	int node;
>> -	char alias[10];
>> -	const char *path;
>>  	struct dm_serial_ops *ops;
>>  	/* no parity, 8 bits, 1 stop */
>>  	u32 serial_config = SERIAL_DEFAULT_CONFIG;
>>  
>>  	down_serial_dev = NULL;
>>  
>> -	sprintf(alias, "serial%d", link_dev);
>> -	path = fdt_get_alias(gd->fdt_blob, alias);
>> -	if (!path) {
>> -		log_err("%s alias not found", alias);
>> -		return -ENODEV;
>> -	}
>> -	node = fdt_path_offset(gd->fdt_blob, path);
>> -	if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node,
>> -					    &dev)) {
>> -		down_serial_dev = dev;
>> -	} else if (node > 0 &&
>> -		   !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node),
>> -				   &dev, false)) {
>> -		if (!device_probe(dev))
>> -			down_serial_dev = dev;
>> -	}
>> -	if (!down_serial_dev) {
>> -		log_err("%s = %s device not found", alias, path);
>> +	if (uclass_get_device_by_seq(UCLASS_SERIAL, link_dev, &dev)) {
>> +		log_err("serial %d device not found\n", link_dev);
>>  		return -ENODEV;
>>  	}
>>  
>> +	down_serial_dev = dev;
>> +
>>  	/* force silent console on uart only when used */
>>  	if (gd->cur_serial_dev == down_serial_dev)
>>  		gd->flags |= GD_FLG_DISABLE_CONSOLE | GD_FLG_SILENT;
>> @@ -226,11 +209,11 @@ int stm32prog_serial_init(struct stm32prog_data *data, int link_dev)
>>  	ops = serial_get_ops(down_serial_dev);
>>  
>>  	if (!ops) {
>> -		log_err("%s = %s missing ops", alias, path);
>> +		log_err("serial %d = %s missing ops\n", link_dev, dev->name);
>>  		return -ENODEV;
>>  	}
>>  	if (!ops->setconfig) {
>> -		log_err("%s = %s missing setconfig", alias, path);
>> +		log_err("serial %d = %s missing setconfig\n", link_dev, dev->name);
>>  		return -ENODEV;
>>  	}
>>  
>> diff --git a/arch/arm/mach-stm32mp/cpu.c b/arch/arm/mach-stm32mp/cpu.c
>> index 527b6290de..9a76b5633b 100644
>> --- a/arch/arm/mach-stm32mp/cpu.c
>> +++ b/arch/arm/mach-stm32mp/cpu.c
>> @@ -466,7 +466,6 @@ static void setup_boot_mode(void)
>>  	unsigned int instance = (boot_mode & TAMP_BOOT_INSTANCE_MASK) - 1;
>>  	u32 forced_mode = (boot_ctx & TAMP_BOOT_FORCED_MASK);
>>  	struct udevice *dev;
>> -	int alias;
>>  
>>  	log_debug("%s: boot_ctx=0x%x => boot_mode=%x, instance=%d forced=%x\n",
>>  		  __func__, boot_ctx, boot_mode, instance, forced_mode);
>> @@ -474,20 +473,18 @@ static void setup_boot_mode(void)
>>  	case BOOT_SERIAL_UART:
>>  		if (instance > ARRAY_SIZE(serial_addr))
>>  			break;
>> -		/* serial : search associated alias in devicetree */
>> +		/* serial : search associated node in devicetree */
>>  		sprintf(cmd, "serial@%x", serial_addr[instance]);
>> -		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev) ||
>> -		    fdtdec_get_alias_seq(gd->fdt_blob, "serial",
>> -					 dev_of_offset(dev), &alias)) {
>> +		if (uclass_get_device_by_name(UCLASS_SERIAL, cmd, &dev)) {
>>  			/* restore console on error */
>>  			if (IS_ENABLED(CONFIG_CMD_STM32PROG_SERIAL))
>>  				gd->flags &= ~(GD_FLG_SILENT |
>>  					       GD_FLG_DISABLE_CONSOLE);
>> -			printf("serial%d = %s not found in device tree!\n",
>> +			printf("uart%d = %s not found in device tree!\n",
>>  			       instance, cmd);
>>  			break;
>>  		}
>> -		sprintf(cmd, "%d", alias);
>> +		sprintf(cmd, "%d", dev_seq(dev));
>>  		env_set("boot_device", "serial");
>>  		env_set("boot_instance", cmd);
>>  
>>
> 
> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
> 
> Thanks
> Patrice
> 
Applied to u-boot-stm/next

Thanks

Patrice

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-03-12 12:28 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-25 12:37 [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrick Delaunay
2021-02-25 12:37 ` [PATCH 2/4] stm32mp: stm32prog: Add CONFIG_CMD_STM32PROG_SERIAL and _USB Patrick Delaunay
2021-03-09 13:08   ` Patrice CHOTARD
2021-03-12 12:27     ` Patrice CHOTARD
2021-02-25 12:37 ` [PATCH 3/4] stm32mp: stm32prog: reactivate console and display serial error Patrick Delaunay
2021-03-09 13:11   ` Patrice CHOTARD
2021-03-12 12:28   ` Patrice CHOTARD
2021-02-25 12:37 ` [PATCH 4/4] stm32mp: stm32prog: replace alias by serial device sequence number Patrick Delaunay
2021-03-09 13:14   ` Patrice CHOTARD
2021-03-12 12:28     ` Patrice CHOTARD
2021-03-09 13:07 ` [PATCH 1/4] stm32mp: stm32prog: Add Kconfig file for stm32prog command Patrice CHOTARD
2021-03-12 12:27   ` [Uboot-stm32] " Patrice CHOTARD

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.