[U-Boot] [PATCH] fastboot: check for alias when looking up partition by name

Steve Rae srae at broadcom.com
Thu Mar 12 17:23:17 CET 2015



On 15-03-11 10:02 AM, Michael Scott wrote:
> Implement an alias name check for devices where GPT limitations prevent
> user-friendly partition names such as "boot", "system" and "cache". Or,
> where the actual partition name doesn't match a standard partition name
> used commonly with fastboot.
>
> To set an alias, add an environment setting as follows:
> fastboot_partition_alias_<alias partition name>=<actual partition name>
>
> Example: fastboot_partition_alias_boot=LNX
>
> Signed-off-by: Michael Scott <michael.scott at linaro.org>
> Cc: Steve Rae <srae at broadcom.com>
> Cc: Lukasz Majewski <l.majewski at samsung.com>
> ---
>   common/fb_mmc.c             | 26 ++++++++++++++++++++++++--
>   doc/README.android-fastboot |  9 +++++++++
>   2 files changed, 33 insertions(+), 2 deletions(-)
>
> diff --git a/common/fb_mmc.c b/common/fb_mmc.c
> index 75899e4..0c48cf9 100644
> --- a/common/fb_mmc.c
> +++ b/common/fb_mmc.c
> @@ -33,6 +33,28 @@ void fastboot_okay(const char *s)
>   	strncat(response_str, s, RESPONSE_LEN - 4 - 1);
>   }
>
> +static int get_partition_info_efi_by_name_or_alias(block_dev_desc_t *dev_desc,
> +		const char *name, disk_partition_t *info)
> +{
> +	int ret;
> +
> +	ret = get_partition_info_efi_by_name(dev_desc, name, info);
> +	if (ret) {
> +		/* strlen("fastboot_partition_alias_") + 32(part_name) + 1 */
> +		char env_alias_name[25 + 32 + 1];
> +		char *aliased_part_name;
> +
> +		/* check for alias */
> +		strcpy(env_alias_name, "fastboot_partition_alias_");
> +		strncat(env_alias_name, name, 32);
> +		aliased_part_name = getenv(env_alias_name);
> +		if (aliased_part_name != NULL)
> +			ret = get_partition_info_efi_by_name(dev_desc,
> +					aliased_part_name, info);
> +	}
> +	return ret;
> +}
> +
>   static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t *info,
>   		const char *part_name, void *buffer,
>   		unsigned int download_bytes)
> @@ -98,7 +120,7 @@ void fb_mmc_flash_write(const char *cmd, void *download_buffer,
>   		printf("........ success\n");
>   		fastboot_okay("");
>   		return;
> -	} else if (get_partition_info_efi_by_name(dev_desc, cmd, &info)) {
> +	} else if (get_partition_info_efi_by_name_or_alias(dev_desc, cmd, &info)) {
>   		error("cannot find partition: '%s'\n", cmd);
>   		fastboot_fail("cannot find partition");
>   		return;
> @@ -136,7 +158,7 @@ void fb_mmc_erase(const char *cmd, char *response)
>   		return;
>   	}
>
> -	ret = get_partition_info_efi_by_name(dev_desc, cmd, &info);
> +	ret = get_partition_info_efi_by_name_or_alias(dev_desc, cmd, &info);
>   	if (ret) {
>   		error("cannot find partition: '%s'", cmd);
>   		fastboot_fail("cannot find partition");
> diff --git a/doc/README.android-fastboot b/doc/README.android-fastboot
> index 5526a43..04411e9 100644
> --- a/doc/README.android-fastboot
> +++ b/doc/README.android-fastboot
> @@ -50,6 +50,15 @@ buffer should be as large as possible for a platform. The location of the
>   buffer and size are set with CONFIG_USB_FASTBOOT_BUF_ADDR and
>   CONFIG_USB_FASTBOOT_BUF_SIZE.
>
> +Fastboot partition aliases can also be defined for devices where GPT
> +limitations prevent user-friendly partition names such as "boot", "system"
> +and "cache".  Or, where the actual partition name doesn't match a standard
> +partition name used commonly with fastboot.  Current implentation checks
> +aliases when accessing partitions by name (flash_write andThere's already a driver
for DWC2 in drivers/usb/gadget/s3c_udc_otg.c . This driver should really
be properly renamed though ;-/  erase functions).
> +To define a partition alias add an environment variable similar to:
> +fastboot_partition_alias_<alias partition name>=<actual partition name>
> +Example: fastboot_partition_alias_boot=LNX
> +
>   In Action
>   =========
>   Enter into fastboot by executing the fastboot command in u-boot and you
>

An interesting feature (which seems unnecessary to me...)  However,
Acked-by: Steve Rae <srae at broadcom.com>


More information about the U-Boot mailing list