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

Alexander Graf agraf at suse.de
Thu Apr 26 06:23:08 UTC 2018



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 <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);
> +	}

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) \
> 


More information about the U-Boot mailing list