[PATCH v4 1/1] cmd: gpt: add eMMC and GPT support

Thirupathaiah Annapureddy thiruan at linux.microsoft.com
Thu Nov 5 00:18:47 CET 2020



On 7/23/2020 5:00 AM, Rayagonda Kokatanur wrote:
> From: Corneliu Doban <cdoban at broadcom.com>
> 
> Add eMMC and GPT support.
> - GPT partition list and command to create the GPT added to u-boot
>   environment
> - eMMC boot commands added to u-boot environment
> - new gpt commands (enumarate and setenv) that are used by broadcom
>   update scripts and boot commands
> - eMMC specific u-boot configurations with environment saved in eMMC
>   and GPT support
> 
> Signed-off-by: Corneliu Doban <cdoban at broadcom.com>
> Signed-off-by: Rayagonda Kokatanur <rayagonda.kokatanur at broadcom.com>
> ---
> Changes from v3:
>  -Address review comments from Simon Glass,
>   Return -ve number instead of 1 upon failure,
>   Use shorter variable name,
>   Modified code to avoid buffer overflow,
>   Use if (!strcmp(...)) instead of if (strcmp(...) == 0)
> 
> Changes from v2:
>  -Address review comments from Simon Glass,
>   Check for return value of part_driver_get_count(),
>   Don't check return value of part_driver_get(),
>   Rewrite part_driver_get() and rename to part_driver_get_first(),
>   Use env_set_ulong() whereever applicable, 
> 
>  -Address review comments from Michael Nazzareno Trimarchi,
>   Add new function to set all env vriables,
> 
> Changes from v1:
>  -Address review comments from Simon Glass,
>   Correct function comments,
>   Check for return value,
>   Add helper function in part.h
> 
>  cmd/gpt.c      | 161 +++++++++++++++++++++++++++++++++++++++++++++++++
>  include/part.h |  29 +++++++++
>  2 files changed, 190 insertions(+)
> 
> diff --git a/cmd/gpt.c b/cmd/gpt.c
> index df759416c8..2626992e59 100644
> --- a/cmd/gpt.c
> +++ b/cmd/gpt.c

> +
> +/**
> + * gpt_setenv_part_variables() - setup partition environmental variables
> + *
> + * Setup the gpt_partition_name, gpt_partition_entry, gpt_partition_addr
> + * and gpt_partition_size environment variables.
> + *
> + * @pinfo: pointer to disk partition
> + * @i: partition entry
> + *
> + * @Return: '0' on success and -ENOENT on failure
> + */
> +static int gpt_setenv_part_variables(struct disk_partition *pinfo, int i)
> +{
> +	int ret;
> +
> +	ret = env_set_ulong("gpt_partition_addr", pinfo->start);
> +	if (ret)
> +		goto fail;
You should use env_set_hex() instead of env_set_ulong() for following reasons:
1. commands (ex: mmc read/write etc.) that use gpt_partition_addr and
gpt_partition_size expect them to be in hex values.
2. maintain compatibility with existing usage in the upstream code base
https://gitlab.denx.de/u-boot/u-boot/-/blob/master/include/configs/bcm_ns3.h
ex:
	"gpt setenv mmc ${sd_device_number} ${fit_image};"\
	"mmc read ${fit_image_loadaddr} ${gpt_partition_addr} "\

> +
> +	ret = env_set_ulong("gpt_partition_size", pinfo->size);
> +	if (ret)
> +		goto fail;
You should use env_set_hex() instead of env_set_ulong() for same above reasons.

Best Regards,
Thiru


More information about the U-Boot mailing list