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

Steve Rae srae at broadcom.com
Thu Mar 12 19:14:26 CET 2015



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_<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).
> 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_<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,
> 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 <srae at broadcom.com>
>
> Thank you for the Ack!


More information about the U-Boot mailing list