Fastboot currently builds only for U-Boot proper, so its source and Makefile rules test CONFIG_FASTBOOT_* directly. The same checks would select U-Boot-proper options when these files are compiled for another phase, potentially compiling unavailable backends or using the wrong configuration values.
Use CONFIG_IS_ENABLED(), CONFIG_VAL() and CONFIG_$(PHASE_) consistently for code and object selection. The empty phase prefix preserves the existing U-Boot-proper configuration and behavior while making the shared implementation safe to reuse from SPL. Signed-off-by: Julien Masson <[email protected]> Signed-off-by: Vitor Sato Eschholz <[email protected]> Signed-off-by: Carlo Caione <[email protected]> --- drivers/Makefile | 2 +- drivers/fastboot/Makefile | 8 ++++---- drivers/fastboot/fb_block.c | 9 ++++----- drivers/fastboot/fb_command.c | 31 +++++++++++++++++-------------- drivers/fastboot/fb_common.c | 4 ++-- drivers/fastboot/fb_getvar.c | 14 +++++++------- drivers/fastboot/fb_mmc.c | 36 ++++++++++++++++++------------------ 7 files changed, 53 insertions(+), 51 deletions(-) diff --git a/drivers/Makefile b/drivers/Makefile index 43d0ba33281..43d03479146 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -12,6 +12,7 @@ obj-$(CONFIG_$(PHASE_)DMA) += dma/ obj-$(CONFIG_$(PHASE_)DMA_LEGACY) += dma/ obj-$(CONFIG_$(PHASE_)DFU) += dfu/ obj-$(CONFIG_$(PHASE_)EXTCON) += extcon/ +obj-$(CONFIG_$(PHASE_)FASTBOOT) += fastboot/ obj-$(CONFIG_$(PHASE_)GPIO) += gpio/ obj-$(CONFIG_$(PHASE_)DRIVERS_MISC) += misc/ obj-$(CONFIG_$(PHASE_)SYSRESET) += sysreset/ @@ -93,7 +94,6 @@ obj-y += block/ obj-y += cache/ obj-$(CONFIG_CPU) += cpu/ obj-y += crypto/ -obj-$(CONFIG_FASTBOOT) += fastboot/ obj-$(CONFIG_FWU_MDATA) += fwu-mdata/ obj-y += misc/ obj-$(CONFIG_MMC) += mmc/ diff --git a/drivers/fastboot/Makefile b/drivers/fastboot/Makefile index 32e8e072c88..12008ac05e2 100644 --- a/drivers/fastboot/Makefile +++ b/drivers/fastboot/Makefile @@ -4,8 +4,8 @@ obj-y += fb_common.o obj-y += fb_getvar.o obj-y += fb_command.o obj-$(CONFIG_USB_FUNCTION_FASTBOOT) += fb_usb.o -obj-$(CONFIG_FASTBOOT_FLASH_BLOCK) += fb_block.o +obj-$(CONFIG_$(PHASE_)FASTBOOT_FLASH_BLOCK) += fb_block.o # MMC reuses block implementation -obj-$(CONFIG_FASTBOOT_FLASH_MMC) += fb_block.o fb_mmc.o -obj-$(CONFIG_FASTBOOT_FLASH_NAND) += fb_nand.o -obj-$(CONFIG_FASTBOOT_FLASH_SPI) += fb_spi_flash.o +obj-$(CONFIG_$(PHASE_)FASTBOOT_FLASH_MMC) += fb_block.o fb_mmc.o +obj-$(CONFIG_$(PHASE_)FASTBOOT_FLASH_NAND) += fb_nand.o +obj-$(CONFIG_$(PHASE_)FASTBOOT_FLASH_SPI) += fb_spi_flash.o diff --git a/drivers/fastboot/fb_block.c b/drivers/fastboot/fb_block.c index 51d1abb18c7..9658b14e668 100644 --- a/drivers/fastboot/fb_block.c +++ b/drivers/fastboot/fb_block.c @@ -130,11 +130,10 @@ int fastboot_block_get_part_info(const char *part_name, char *response) { int ret; - const char *interface = config_opt_enabled(CONFIG_FASTBOOT_FLASH_BLOCK, - CONFIG_FASTBOOT_FLASH_BLOCK_INTERFACE_NAME, - NULL); - const int device = config_opt_enabled(CONFIG_FASTBOOT_FLASH_BLOCK, - CONFIG_FASTBOOT_FLASH_BLOCK_DEVICE_ID, -1); + const char *interface = CONFIG_IS_ENABLED(FASTBOOT_FLASH_BLOCK, + (CONFIG_VAL(FASTBOOT_FLASH_BLOCK_INTERFACE_NAME)), (NULL)); + const int device = CONFIG_IS_ENABLED(FASTBOOT_FLASH_BLOCK, + (CONFIG_VAL(FASTBOOT_FLASH_BLOCK_DEVICE_ID)), (-1)); if (!part_name || !strcmp(part_name, "")) { fastboot_fail("partition not given", response); diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c index 18d86988f4c..111516fd1b3 100644 --- a/drivers/fastboot/fb_command.c +++ b/drivers/fastboot/fb_command.c @@ -339,19 +339,19 @@ void fastboot_data_complete(char *response) */ static void __maybe_unused flash(char *cmd_parameter, char *response) { - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_BLOCK)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_BLOCK)) fastboot_block_flash_write(cmd_parameter, fastboot_buf_addr, image_size, response); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_MMC)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)) fastboot_mmc_flash_write(cmd_parameter, fastboot_buf_addr, image_size, response); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_NAND)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)) fastboot_nand_flash_write(cmd_parameter, fastboot_buf_addr, image_size, response); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_SPI)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_SPI)) fastboot_spi_flash_write(cmd_parameter, fastboot_buf_addr, image_size, response); } @@ -367,16 +367,16 @@ static void __maybe_unused flash(char *cmd_parameter, char *response) */ static void __maybe_unused erase(char *cmd_parameter, char *response) { - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_BLOCK)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_BLOCK)) fastboot_block_erase(cmd_parameter, response); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_MMC)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)) fastboot_mmc_erase(cmd_parameter, response); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_NAND)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)) fastboot_nand_erase(cmd_parameter, response); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_SPI)) + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_SPI)) fastboot_spi_flash_erase(cmd_parameter, response); } @@ -482,8 +482,9 @@ static void reboot_recovery(char *cmd_parameter, char *response) static void __maybe_unused oem_format(char *cmd_parameter, char *response) { char cmdbuf[32]; - const int mmc_dev = config_opt_enabled(CONFIG_FASTBOOT_FLASH_MMC, - CONFIG_FASTBOOT_FLASH_MMC_DEV, -1); + const int mmc_dev = CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC, + (CONFIG_VAL(FASTBOOT_FLASH_MMC_DEV)), + (-1)); if (!env_get("partitions")) { fastboot_fail("partitions not set", response); @@ -505,8 +506,9 @@ static void __maybe_unused oem_format(char *cmd_parameter, char *response) static void __maybe_unused oem_partconf(char *cmd_parameter, char *response) { char cmdbuf[32]; - const int mmc_dev = config_opt_enabled(CONFIG_FASTBOOT_FLASH_MMC, - CONFIG_FASTBOOT_FLASH_MMC_DEV, -1); + const int mmc_dev = CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC, + (CONFIG_VAL(FASTBOOT_FLASH_MMC_DEV)), + (-1)); if (!cmd_parameter) { fastboot_fail("Expected command parameter", response); @@ -531,8 +533,9 @@ static void __maybe_unused oem_partconf(char *cmd_parameter, char *response) static void __maybe_unused oem_bootbus(char *cmd_parameter, char *response) { char cmdbuf[32]; - const int mmc_dev = config_opt_enabled(CONFIG_FASTBOOT_FLASH_MMC, - CONFIG_FASTBOOT_FLASH_MMC_DEV, -1); + const int mmc_dev = CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC, + (CONFIG_VAL(FASTBOOT_FLASH_MMC_DEV)), + (-1)); if (!cmd_parameter) { fastboot_fail("Expected command parameter", response); diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c index 9c52e004588..3c0013490cc 100644 --- a/drivers/fastboot/fb_common.c +++ b/drivers/fastboot/fb_common.c @@ -234,8 +234,8 @@ void fastboot_set_progress_callback(void (*progress)(const char *msg)) */ void fastboot_init(void *buf_addr, u32 buf_size) { -#if IS_ENABLED(CONFIG_FASTBOOT_FLASH_BLOCK) - if (!strcmp(CONFIG_FASTBOOT_FLASH_BLOCK_INTERFACE_NAME, "mmc")) +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_BLOCK) + if (!strcmp(CONFIG_VAL(FASTBOOT_FLASH_BLOCK_INTERFACE_NAME), "mmc")) printf("Warning: the fastboot block backend features are limited, consider using the MMC backend\n"); #endif diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c index e8aa0e09aa6..9e8e8889d08 100644 --- a/drivers/fastboot/fb_getvar.c +++ b/drivers/fastboot/fb_getvar.c @@ -70,19 +70,19 @@ static const struct { .variable = "current-slot", .dispatch = getvar_current_slot, .list = true -#if IS_ENABLED(CONFIG_FASTBOOT_FLASH) +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH) }, { .variable = "has-slot", .dispatch = getvar_has_slot, .list = false #endif -#if IS_ENABLED(CONFIG_FASTBOOT_FLASH_MMC) +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC) }, { .variable = "partition-type", .dispatch = getvar_partition_type, .list = false #endif -#if IS_ENABLED(CONFIG_FASTBOOT_FLASH) +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH) }, { .variable = "partition-size", .dispatch = getvar_partition_size, @@ -116,21 +116,21 @@ static int getvar_get_part_info(const char *part_name, char *response, struct disk_partition disk_part; struct part_info *part_info; - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_BLOCK)) { + if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_BLOCK)) { r = fastboot_block_get_part_info(part_name, &dev_desc, &disk_part, response); if (r >= 0 && size) *size = disk_part.size * disk_part.blksz; - } else if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_MMC)) { + } else if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)) { r = fastboot_mmc_get_part_info(part_name, &dev_desc, &disk_part, response); if (r >= 0 && size) *size = disk_part.size * disk_part.blksz; - } else if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_NAND)) { + } else if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)) { r = fastboot_nand_get_part_info(part_name, &part_info, response); if (r >= 0 && size) *size = part_info->size; - } else if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_SPI)) { + } else if (CONFIG_IS_ENABLED(FASTBOOT_FLASH_SPI)) { r = fastboot_spi_flash_get_part_info(part_name, &disk_part, response); if (r >= 0 && size) diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c index 9bc782ccd02..ae33e35365b 100644 --- a/drivers/fastboot/fb_mmc.c +++ b/drivers/fastboot/fb_mmc.c @@ -75,7 +75,7 @@ static int do_get_part_info(struct blk_desc **dev_desc, const char *name, int ret; /* First try partition names on the default device */ - *dev_desc = blk_get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV); + *dev_desc = blk_get_dev("mmc", CONFIG_VAL(FASTBOOT_FLASH_MMC_DEV)); if (*dev_desc) { ret = part_get_info_by_name(*dev_desc, name, info); if (ret >= 0) @@ -111,7 +111,7 @@ static int part_get_info_by_name_or_alias(struct blk_desc **dev_desc, return do_get_part_info(dev_desc, name, info); } -#ifdef CONFIG_FASTBOOT_MMC_BOOT_SUPPORT +#if CONFIG_IS_ENABLED(FASTBOOT_MMC_BOOT_SUPPORT) static void fb_mmc_boot_ops(struct blk_desc *dev_desc, void *buffer, int hwpart, u32 buff_sz, char *response) { @@ -130,7 +130,7 @@ static void fb_mmc_boot_ops(struct blk_desc *dev_desc, void *buffer, } #endif -#ifdef CONFIG_ANDROID_BOOT_IMAGE +#if CONFIG_IS_ENABLED(ANDROID_BOOT_IMAGE) /** * Read Android boot image header from boot partition. * @@ -346,7 +346,7 @@ int fastboot_mmc_get_part_info(const char *part_name, static struct blk_desc *fastboot_mmc_get_dev(char *response) { struct blk_desc *ret = blk_get_dev("mmc", - CONFIG_FASTBOOT_FLASH_MMC_DEV); + CONFIG_VAL(FASTBOOT_FLASH_MMC_DEV)); if (!ret || ret->type == DEV_TYPE_UNKNOWN) { pr_err("invalid mmc device\n"); @@ -370,15 +370,15 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer, struct blk_desc *dev_desc; struct disk_partition info = {0}; -#ifdef CONFIG_FASTBOOT_MMC_BOOT_SUPPORT - if (strcmp(cmd, CONFIG_FASTBOOT_MMC_BOOT1_NAME) == 0) { +#if CONFIG_IS_ENABLED(FASTBOOT_MMC_BOOT_SUPPORT) + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MMC_BOOT1_NAME))) { dev_desc = fastboot_mmc_get_dev(response); if (dev_desc) fb_mmc_boot_ops(dev_desc, download_buffer, 1, download_bytes, response); return; } - if (strcmp(cmd, CONFIG_FASTBOOT_MMC_BOOT2_NAME) == 0) { + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MMC_BOOT2_NAME))) { dev_desc = fastboot_mmc_get_dev(response); if (dev_desc) fb_mmc_boot_ops(dev_desc, download_buffer, 2, @@ -388,7 +388,7 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer, #endif #if CONFIG_IS_ENABLED(EFI_PARTITION) - if (strcmp(cmd, CONFIG_FASTBOOT_GPT_NAME) == 0) { + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_GPT_NAME))) { dev_desc = fastboot_mmc_get_dev(response); if (!dev_desc) return; @@ -415,7 +415,7 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer, #endif #if CONFIG_IS_ENABLED(DOS_PARTITION) - if (strcmp(cmd, CONFIG_FASTBOOT_MBR_NAME) == 0) { + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MBR_NAME))) { dev_desc = fastboot_mmc_get_dev(response); if (!dev_desc) return; @@ -440,7 +440,7 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer, } #endif -#ifdef CONFIG_ANDROID_BOOT_IMAGE +#if CONFIG_IS_ENABLED(ANDROID_BOOT_IMAGE) if (strncasecmp(cmd, "zimage", 6) == 0) { dev_desc = fastboot_mmc_get_dev(response); if (dev_desc) @@ -450,8 +450,8 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer, } #endif -#if IS_ENABLED(CONFIG_FASTBOOT_MMC_USER_SUPPORT) - if (strcmp(cmd, CONFIG_FASTBOOT_MMC_USER_NAME) == 0) { +#if CONFIG_IS_ENABLED(FASTBOOT_MMC_USER_SUPPORT) + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MMC_USER_NAME))) { dev_desc = fastboot_mmc_get_dev(response); if (!dev_desc) return; @@ -485,17 +485,17 @@ void fastboot_mmc_erase(const char *cmd, char *response) { struct blk_desc *dev_desc; struct disk_partition info; - struct mmc *mmc = find_mmc_device(CONFIG_FASTBOOT_FLASH_MMC_DEV); + struct mmc *mmc = find_mmc_device(CONFIG_VAL(FASTBOOT_FLASH_MMC_DEV)); -#ifdef CONFIG_FASTBOOT_MMC_BOOT_SUPPORT - if (strcmp(cmd, CONFIG_FASTBOOT_MMC_BOOT1_NAME) == 0) { +#if CONFIG_IS_ENABLED(FASTBOOT_MMC_BOOT_SUPPORT) + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MMC_BOOT1_NAME))) { /* erase EMMC boot1 */ dev_desc = fastboot_mmc_get_dev(response); if (dev_desc) fb_mmc_boot_ops(dev_desc, NULL, 1, 0, response); return; } - if (strcmp(cmd, CONFIG_FASTBOOT_MMC_BOOT2_NAME) == 0) { + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MMC_BOOT2_NAME))) { /* erase EMMC boot2 */ dev_desc = fastboot_mmc_get_dev(response); if (dev_desc) @@ -504,8 +504,8 @@ void fastboot_mmc_erase(const char *cmd, char *response) } #endif -#ifdef CONFIG_FASTBOOT_MMC_USER_SUPPORT - if (strcmp(cmd, CONFIG_FASTBOOT_MMC_USER_NAME) == 0) { +#if CONFIG_IS_ENABLED(FASTBOOT_MMC_USER_SUPPORT) + if (!strcmp(cmd, CONFIG_VAL(FASTBOOT_MMC_USER_NAME))) { /* erase EMMC userdata */ dev_desc = fastboot_mmc_get_dev(response); if (!dev_desc) -- 2.55.0
