Re: [PATCH] bootstd: USB devtype detection for script boot

Simon Glass
2023-06-28T07:42:56Z

Hi John,

On Tue, 27 Jun 2023 at 15:39, John Clark <inindev@gmail.com> wrote:
>
> Change the device type from "usb_mass_storage" to "usb" when
> booting a script.
>
> Before this change:
> => printenv devtype
> devtype=usb_mass_storage
>
> After this change:
> => printenv devtype
> devtype=usb
>
> Signed-off-by: John Clark <inindev@gmail.com>
> ---
>
> boot/bootmeth_script.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/boot/bootmeth_script.c b/boot/bootmeth_script.c
> index 225eb18ee6..9fdadb3005 100644
> --- a/boot/bootmeth_script.c
> +++ b/boot/bootmeth_script.c
> @@ -187,10 +187,14 @@ static int script_set_bootflow(struct udevice *dev, struct bootflow *bflow,
> static int script_boot(struct udevice *dev, struct bootflow *bflow)
> {
> struct blk_desc *desc = dev_get_uclass_plat(bflow->blk);
> + const char *devtype = blk_get_devtype(bflow->blk);
> ulong addr;
> int ret;
>
> - ret = env_set("devtype", blk_get_devtype(bflow->blk));
> + if (!strcmp("usb_mass_storage", devtype))

I only just thought of this, but I think it is better to check
blk->uclass_id == UCLASS_USB instead, since it avoids a string
comparison.

> + ret = env_set("devtype", "usb");
> + else
> + ret = env_set("devtype", devtype);
> if (!ret)
> ret = env_set_hex("devnum", desc->devnum);
> if (!ret)
> @@ -198,7 +202,7 @@ static int script_boot(struct udevice *dev, struct bootflow *bflow)
> if (!ret)
> ret = env_set("prefix", bflow->subdir);
> if (!ret && IS_ENABLED(CONFIG_ARCH_SUNXI) &&
> - !strcmp("mmc", blk_get_devtype(bflow->blk)))
> + !strcmp("mmc", devtype))
> ret = env_set_hex("mmc_bootdev", desc->devnum);
> if (ret)
> return log_msg_ret("env", ret);
> --
> 2.39.2
>

Regards,
Simon