From f80798122a726602a239ad7667164a89e98c8328 Mon Sep 17 00:00:00 2001 From: Roman Kovalivskyi Date: Tue, 26 Jan 2021 22:54:55 +0200 Subject: Revert "fastboot: Add default fastboot_set_reboot_flag implementation" This reverts commit 0ebf9842e56c5b8cb7cb1f990bb452cc14af6225. Current generic implementation of fastboot_set_reboot_flag is somewhat messy and requires some additional configuration option to be enabled besides CMD_BCB, so it reverts that implementtion in order to bring a new cleaner one. Next commit introduces new generic implementation of fastboot_set_reboot_flag. Signed-off-by: Roman Kovalivskyi --- include/fastboot.h | 9 --------- 1 file changed, 9 deletions(-) (limited to 'include') diff --git a/include/fastboot.h b/include/fastboot.h index 8e9ee80907d..b86b508e69f 100644 --- a/include/fastboot.h +++ b/include/fastboot.h @@ -52,15 +52,6 @@ enum fastboot_reboot_reason { FASTBOOT_REBOOT_REASONS_COUNT }; -/** - * BCB boot commands - */ -static const char * const fastboot_boot_cmds[] = { - [FASTBOOT_REBOOT_REASON_BOOTLOADER] = "bootonce-bootloader", - [FASTBOOT_REBOOT_REASON_FASTBOOTD] = "boot-fastboot", - [FASTBOOT_REBOOT_REASON_RECOVERY] = "boot-recovery" -}; - /** * fastboot_response() - Writes a response of the form "$tag$reason". * -- cgit v1.3.1 From b2f6b97b78b47362c74f2fbe59c1f4f390cb458f Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Wed, 27 Jan 2021 14:46:48 +0100 Subject: fastboot: add command to select the default emmc hwpart for boot Add fastboot command oem partconf which executes the command ``mmc partconf 0`` on the current mmc device to configure the eMMC boot partition with : boot_ack boot_partition, so the command is: $> fastboot oem partconf: The partition_access argument is forced to 0 (userdata) Signed-off-by: Patrick Delaunay [lukma - Kconfig adjustments after merging this patch] --- doc/android/fastboot.rst | 2 ++ drivers/fastboot/Kconfig | 7 +++++++ drivers/fastboot/fb_command.c | 36 ++++++++++++++++++++++++++++++++++++ include/fastboot.h | 3 +++ 4 files changed, 48 insertions(+) (limited to 'include') diff --git a/doc/android/fastboot.rst b/doc/android/fastboot.rst index 2877c3cbaaa..d8cb64261cd 100644 --- a/doc/android/fastboot.rst +++ b/doc/android/fastboot.rst @@ -23,6 +23,8 @@ The current implementation supports the following standard commands: The following OEM commands are supported (if enabled): - ``oem format`` - this executes ``gpt write mmc %x $partitions`` +- ``oem partconf`` - this executes ``mmc partconf %x 0`` to configure eMMC + with = boot_ack boot_partition Support for both eMMC and NAND devices is included. diff --git a/drivers/fastboot/Kconfig b/drivers/fastboot/Kconfig index 8a92e750078..1bcc8d4ab99 100644 --- a/drivers/fastboot/Kconfig +++ b/drivers/fastboot/Kconfig @@ -189,6 +189,13 @@ config FASTBOOT_CMD_OEM_FORMAT relies on the env variable partitions to contain the list of partitions as required by the gpt command. +config FASTBOOT_CMD_OEM_PARTCONF + bool "Enable the 'oem partconf' command" + depends on FASTBOOT_FLASH_MMC && SUPPORT_EMMC_BOOT + help + Add support for the "oem partconf" command from a client. This set + the mmc boot-partition for the selecting eMMC device. + endif # FASTBOOT endmenu diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c index d3c578672dc..ae4a7dc7fb8 100644 --- a/drivers/fastboot/fb_command.c +++ b/drivers/fastboot/fb_command.c @@ -42,6 +42,9 @@ static void reboot_recovery(char *, char *); #if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT) static void oem_format(char *, char *); #endif +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_PARTCONF) +static void oem_partconf(char *, char *); +#endif static const struct { const char *command; @@ -99,6 +102,12 @@ static const struct { .dispatch = oem_format, }, #endif +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_PARTCONF) + [FASTBOOT_COMMAND_OEM_PARTCONF] = { + .command = "oem partconf", + .dispatch = oem_partconf, + }, +#endif }; /** @@ -374,3 +383,30 @@ static void oem_format(char *cmd_parameter, char *response) } } #endif + +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_PARTCONF) +/** + * oem_partconf() - Execute the OEM partconf command + * + * @cmd_parameter: Pointer to command parameter + * @response: Pointer to fastboot response buffer + */ +static void oem_partconf(char *cmd_parameter, char *response) +{ + char cmdbuf[32]; + + if (!cmd_parameter) { + fastboot_fail("Expected command parameter", response); + return; + } + + /* execute 'mmc partconfg' command with cmd_parameter arguments*/ + snprintf(cmdbuf, sizeof(cmdbuf), "mmc partconf %x %s 0", + CONFIG_FASTBOOT_FLASH_MMC_DEV, cmd_parameter); + printf("Execute: %s\n", cmdbuf); + if (run_command(cmdbuf, 0)) + fastboot_fail("Cannot set oem partconf", response); + else + fastboot_okay(NULL, response); +} +#endif diff --git a/include/fastboot.h b/include/fastboot.h index b86b508e69f..80dd8255aa2 100644 --- a/include/fastboot.h +++ b/include/fastboot.h @@ -38,6 +38,9 @@ enum { #if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_FORMAT) FASTBOOT_COMMAND_OEM_FORMAT, #endif +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_PARTCONF) + FASTBOOT_COMMAND_OEM_PARTCONF, +#endif FASTBOOT_COMMAND_COUNT }; -- cgit v1.3.1 From 0c0394b5026ed3271c92ab1c92a65ae67588d65d Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Wed, 27 Jan 2021 14:46:49 +0100 Subject: fastboot: add command to select the eMMC boot configuration Add command oem bootbus which executes the command ``mmc bootbus `` on the current fastboot mmc device ( = CONFIG_FASTBOOT_FLASH_MMC_DEV) to set the eMMC boot configuration on first update, with = boot_bus_width reset_boot_bus_width boot_mode $> fastboot oem bootbus: Signed-off-by: Patrick Delaunay --- doc/android/fastboot.rst | 1 + drivers/fastboot/Kconfig | 7 +++++++ drivers/fastboot/fb_command.c | 36 ++++++++++++++++++++++++++++++++++++ include/fastboot.h | 3 +++ 4 files changed, 47 insertions(+) (limited to 'include') diff --git a/doc/android/fastboot.rst b/doc/android/fastboot.rst index d8cb64261cd..16b11399b30 100644 --- a/doc/android/fastboot.rst +++ b/doc/android/fastboot.rst @@ -25,6 +25,7 @@ The following OEM commands are supported (if enabled): - ``oem format`` - this executes ``gpt write mmc %x $partitions`` - ``oem partconf`` - this executes ``mmc partconf %x 0`` to configure eMMC with = boot_ack boot_partition +- ``oem bootbus`` - this executes ``mmc bootbus %x %s`` to configure eMMC Support for both eMMC and NAND devices is included. diff --git a/drivers/fastboot/Kconfig b/drivers/fastboot/Kconfig index 1bcc8d4ab99..a17e488714d 100644 --- a/drivers/fastboot/Kconfig +++ b/drivers/fastboot/Kconfig @@ -196,6 +196,13 @@ config FASTBOOT_CMD_OEM_PARTCONF Add support for the "oem partconf" command from a client. This set the mmc boot-partition for the selecting eMMC device. +config FASTBOOT_CMD_OEM_BOOTBUS + bool "Enable the 'oem bootbus' command" + depends on FASTBOOT_FLASH_MMC && SUPPORT_EMMC_BOOT + help + Add support for the "oem bootbus" command from a client. This set + the mmc boot configuration for the selecting eMMC device. + endif # FASTBOOT endmenu diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c index ae4a7dc7fb8..41fc8d7904d 100644 --- a/drivers/fastboot/fb_command.c +++ b/drivers/fastboot/fb_command.c @@ -45,6 +45,9 @@ static void oem_format(char *, char *); #if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_PARTCONF) static void oem_partconf(char *, char *); #endif +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_BOOTBUS) +static void oem_bootbus(char *, char *); +#endif static const struct { const char *command; @@ -108,6 +111,12 @@ static const struct { .dispatch = oem_partconf, }, #endif +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_BOOTBUS) + [FASTBOOT_COMMAND_OEM_BOOTBUS] = { + .command = "oem bootbus", + .dispatch = oem_bootbus, + }, +#endif }; /** @@ -410,3 +419,30 @@ static void oem_partconf(char *cmd_parameter, char *response) fastboot_okay(NULL, response); } #endif + +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_BOOTBUS) +/** + * oem_bootbus() - Execute the OEM bootbus command + * + * @cmd_parameter: Pointer to command parameter + * @response: Pointer to fastboot response buffer + */ +static void oem_bootbus(char *cmd_parameter, char *response) +{ + char cmdbuf[32]; + + if (!cmd_parameter) { + fastboot_fail("Expected command parameter", response); + return; + } + + /* execute 'mmc bootbus' command with cmd_parameter arguments*/ + snprintf(cmdbuf, sizeof(cmdbuf), "mmc bootbus %x %s", + CONFIG_FASTBOOT_FLASH_MMC_DEV, cmd_parameter); + printf("Execute: %s\n", cmdbuf); + if (run_command(cmdbuf, 0)) + fastboot_fail("Cannot set oem bootbus", response); + else + fastboot_okay(NULL, response); +} +#endif diff --git a/include/fastboot.h b/include/fastboot.h index 80dd8255aa2..797d7dfd529 100644 --- a/include/fastboot.h +++ b/include/fastboot.h @@ -41,6 +41,9 @@ enum { #if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_PARTCONF) FASTBOOT_COMMAND_OEM_PARTCONF, #endif +#if CONFIG_IS_ENABLED(FASTBOOT_CMD_OEM_BOOTBUS) + FASTBOOT_COMMAND_OEM_BOOTBUS, +#endif FASTBOOT_COMMAND_COUNT }; -- cgit v1.3.1