From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Date: Thu, 26 Apr 2018 08:23:08 +0200 Subject: [U-Boot] [RFC PATCH 2/2] arm64: zynqmp: Try to create bootcm_mmcX at run time In-Reply-To: <8a301ac42ef1dc24fd5ee67759365593e6324548.1524659886.git.michal.simek@xilinx.com> References: <8fad3265d924092e94aae75d4141a61872a61685.1524659886.git.michal.simek@xilinx.com> <8a301ac42ef1dc24fd5ee67759365593e6324548.1524659886.git.michal.simek@xilinx.com> Message-ID: <1b421598-a16a-36d1-e2ae-39e8573d98fd@suse.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 25.04.18 14:38, Michal Simek wrote: > Just an attept to create boot commands for mmcs above 2 which is not > generated. > > Signed-off-by: Michal Simek > --- > > 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); > + } Why not just remove the ones you don't need? You could leave the template in and just remove bootcmd_mmc0 if you don't see an mmc0 device. Alex > + > + 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) \ >