On Wed, Sep 09, 2026 at 16:57, David Lechner <[email protected]> wrote:

> On 9/9/26 4:23 PM, Carlo Caione wrote:
>> On Wed, Sep 09, 2026 at 16:16:16 +0100, David Lechner wrote:
>>> On 9/6/26 3:02 PM, Carlo Caione wrote:
>>>> Some recovery and initial-provisioning flows run before usable firmware
>>>> is available in persistent storage. In these flows the SoC ROM loads a
>>>> small first stage, but that stage must still provide a standard protocol
>>>> with which the host can provision the device.
>>>>
>>>
>>> ...
>>>
>>>> diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c
>>>> index 111516fd1b3..a2a89fc04f8 100644
>>>> --- a/drivers/fastboot/fb_command.c
>>>> +++ b/drivers/fastboot/fb_command.c
>>>> @@ -48,10 +48,59 @@ static void oem_board(char *, char *);
>>>>  static void run_ucmd(char *, char *);
>>>>  static void run_acmd(char *, char *);
>>>>  
>>>> -static const struct {
>>>> +struct fastboot_command {
>>>>    const char *command;
>>>>    void (*dispatch)(char *cmd_parameter, char *response);
>>>> -} commands[FASTBOOT_COMMAND_COUNT] = {
>>>> +};
>>>> +
>>>> +#ifdef CONFIG_XPL_BUILD
>>>> +static const struct fastboot_command commands[FASTBOOT_COMMAND_COUNT] = {
>>>> +  [FASTBOOT_COMMAND_GETVAR] = {
>>>> +          .command = "getvar",
>>>> +          .dispatch = getvar
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_DOWNLOAD] = {
>>>> +          .command = "download",
>>>> +          .dispatch = download
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_FLASH] =  {
>>>> +          .command = "flash",
>>>> +          .dispatch = CONFIG_IS_ENABLED(FASTBOOT_FLASH, (flash), (NULL))
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_ERASE] =  {
>>>> +          .command = "erase",
>>>> +          .dispatch = CONFIG_IS_ENABLED(FASTBOOT_FLASH, (erase), (NULL))
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_CONTINUE] =  {
>>>> +          .command = "continue",
>>>> +          .dispatch = okay
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_REBOOT] =  {
>>>> +          .command = "reboot",
>>>> +          .dispatch = CONFIG_IS_ENABLED(FASTBOOT_REBOOT, (okay), (NULL))
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_REBOOT_BOOTLOADER] =  {
>>>> +          .command = "reboot-bootloader",
>>>> +          .dispatch = CONFIG_IS_ENABLED(FASTBOOT_REBOOT,
>>>> +                                       (reboot_bootloader), (NULL))
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_REBOOT_FASTBOOTD] =  {
>>>> +          .command = "reboot-fastboot",
>>>> +          .dispatch = CONFIG_IS_ENABLED(FASTBOOT_REBOOT,
>>>> +                                       (reboot_fastbootd), (NULL))
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_REBOOT_RECOVERY] =  {
>>>> +          .command = "reboot-recovery",
>>>> +          .dispatch = CONFIG_IS_ENABLED(FASTBOOT_REBOOT,
>>>> +                                       (reboot_recovery), (NULL))
>>>> +  },
>>>> +  [FASTBOOT_COMMAND_SET_ACTIVE] =  {
>>>> +          .command = "set_active",
>>>> +          .dispatch = okay
>>>> +  },
>>>> +};
>>>
>>> Do we really need to make a complete second table or can we just #ifndef
>>> the indivdual commands in the existing table?
>> 
>> That was actually suggested by Mattijs here
>> https://lore.kernel.org/all/[email protected]/
>
> ok

Yeah, this thing is more of a personal preference. In my opinion it's a
bit more readable this way, so thank you for splitting it.

Reply via email to