[U-Boot] [RFC PATCH 2/2] arm64: zynqmp: Try to create bootcm_mmcX at run time

Michal Simek michal.simek at xilinx.com
Wed Apr 25 12:38:08 UTC 2018


Just an attept to create boot commands for mmcs above 2 which is not
generated.

Signed-off-by: Michal Simek <michal.simek at xilinx.com>
---

Probably some ifdefs around are missing.
---
 board/xilinx/zynqmp/zynqmp.c    | 28 ++++++++++++++++++++++++++++
 include/configs/xilinx_zynqmp.h |  7 -------
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 96ea0f578d30..37fa8f4f4d3f 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -451,6 +451,32 @@ void reset_cpu(ulong addr)
 {
 }
 
+static int create_mmc_boot_commands(void)
+{
+/* Size of strings below + one terminating char \0 + 3 possitions for seq */
+#define MAX_COMMAND_LEN	15
+#define MAX_BODY_LEN	32
+
+	int ret;
+	struct uclass *uc;
+	struct udevice *dev;
+	char body[MAX_BODY_LEN];
+	char command[MAX_COMMAND_LEN];
+
+	ret = uclass_get(UCLASS_MMC, &uc);
+	if (ret)
+		return ret;
+
+	uclass_foreach_dev(dev, uc) {
+		snprintf(body, MAX_BODY_LEN, "setenv devnum %x; run mmc_boot",
+			 dev->seq);
+		snprintf(command, MAX_COMMAND_LEN, "bootcmd_mmc%x", dev->seq);
+		env_set(command, body);
+	}
+
+	return 0;
+}
+
 int board_late_init(void)
 {
 	u32 reg = 0;
@@ -546,6 +572,8 @@ int board_late_init(void)
 		debug("Bootseq len: %x\n", bootseq_len);
 	}
 
+	create_mmc_boot_commands();
+
 	/*
 	 * One terminating char + one byte for space between mode
 	 * and default boot_targets
diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
index c8a0dbb7e3b5..a2590998429e 100644
--- a/include/configs/xilinx_zynqmp.h
+++ b/include/configs/xilinx_zynqmp.h
@@ -155,12 +155,6 @@
 	"scriptaddr=0x02000000\0" \
 	"ramdisk_addr_r=0x02100000\0" \
 
-#if defined(CONFIG_MMC_SDHCI_ZYNQ)
-# define BOOT_TARGET_DEVICES_MMC(func)	func(MMC, mmc, 0) func(MMC, mmc, 1)
-#else
-# define BOOT_TARGET_DEVICES_MMC(func)
-#endif
-
 #if defined(CONFIG_SATA_CEVA)
 # define BOOT_TARGET_DEVICES_SCSI(func)	func(SCSI, scsi, 0)
 #else
@@ -186,7 +180,6 @@
 #endif
 
 #define BOOT_TARGET_DEVICES(func) \
-	BOOT_TARGET_DEVICES_MMC(func) \
 	BOOT_TARGET_DEVICES_USB(func) \
 	BOOT_TARGET_DEVICES_SCSI(func) \
 	BOOT_TARGET_DEVICES_PXE(func) \
-- 
2.17.0



More information about the U-Boot mailing list