From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Fri, 20 Mar 2015 08:50:10 +0100 Subject: [U-Boot] [PATCH] fastboot: check for alias when looking up partition by name In-Reply-To: <5501D782.3000503@broadcom.com> References: <1426093351-8998-1-git-send-email-michael.scott@linaro.org> <5501BD75.4020006@broadcom.com> <5501CA1F.5000903@linaro.org> <5501D782.3000503@broadcom.com> Message-ID: <20150320085010.69159f40@amdc2363> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Steve, > > > On 15-03-12 10:17 AM, Michael Scott wrote: > > > > 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_= >>> name> > >>> > >>> 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. > Sorry -- I corrupted this (finger trouble!) - please ignore > > > >>> +To define a partition alias add an environment variable similar > >>> to: +fastboot_partition_alias_= >>> 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, > > 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. > OK -- then this patch makes much more sense! > - so when the user performs "mmc part", (I'm assuming it will list > the "3 letter names"), then they perform "fastboot flash LNX > boot.bin" (which makes sense to me....) > - or they can setup these aliases and perform "fastboot flash boot > boot.bin" (I would probably stick with the former myself...) > Thanks, Steve > > > > To present a "normal" fastboot experience to users, we use this > > patch. > > > >> Acked-by: Steve Rae > > > > Thank you for the Ack! Are there more comments for this patch? -- Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group