From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thirupathaiah Annapureddy Date: Wed, 4 Nov 2020 15:18:47 -0800 Subject: [PATCH v4 1/1] cmd: gpt: add eMMC and GPT support In-Reply-To: <20200723120038.5915-1-rayagonda.kokatanur@broadcom.com> References: <20200723120038.5915-1-rayagonda.kokatanur@broadcom.com> Message-ID: <0e8808bd-58ea-5fb0-e6b4-a66f21c111eb@linux.microsoft.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 7/23/2020 5:00 AM, Rayagonda Kokatanur wrote: > From: Corneliu Doban > > 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 > Signed-off-by: Rayagonda Kokatanur > --- > 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