From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Scott Date: Thu, 12 Mar 2015 10:17:19 -0700 Subject: [U-Boot] [PATCH] fastboot: check for alias when looking up partition by name In-Reply-To: <5501BD75.4020006@broadcom.com> References: <1426093351-8998-1-git-send-email-michael.scott@linaro.org> <5501BD75.4020006@broadcom.com> Message-ID: <5501CA1F.5000903@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 03/12/2015 09:23 AM, Steve Rae wrote: > > > 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_= >> >> Example: fastboot_partition_alias_boot=LNX >> >> Signed-off-by: Michael Scott >> Cc: Steve Rae >> Cc: Lukasz Majewski >> --- >> 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). Hi Steve, I'm a bit confused with the mention of drivers/usb/gadget/s3c_udc_otg.c and how it relates back this patch. I'm willing to make any corrections you would like, but may need some clarification. >> +To define a partition alias add an environment variable similar to: >> +fastboot_partition_alias_= >> +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, A bit of background: We are using fastboot support on Nvidia Jetson-TK1 platform where a GPT limitation sets partition names to 3 letters. IE: LNX = boot, APP = system and UDA = userdata. To present a "normal" fastboot experience to users, we use this patch. > Acked-by: Steve Rae Thank you for the Ack!