From cfa34996b0beb90e9b63a5b6f89c78123a2d428e Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 7 Sep 2017 10:29:51 +0200 Subject: cmd: fastboot: Rework fastboot dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fastboot need a bunch of options to be operating properly, such as the g_dnl gadget, the fastboot command, and some options that make sense. Since fastboot is now part of Kconfig, make sure we have them right. That will also reduce the boilerplate in the defconfigs. Reviewed-by: Ɓukasz Majewski Reviewed-by: Simon Glass Signed-off-by: Maxime Ripard --- cmd/fastboot/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'cmd') diff --git a/cmd/fastboot/Kconfig b/cmd/fastboot/Kconfig index fb0c5da94cd..7330da216aa 100644 --- a/cmd/fastboot/Kconfig +++ b/cmd/fastboot/Kconfig @@ -3,11 +3,16 @@ comment "FASTBOOT" menuconfig FASTBOOT bool "Fastboot support" depends on USB_GADGET + default y if ARCH_SUNXI && USB_MUSB_GADGET if FASTBOOT config USB_FUNCTION_FASTBOOT bool "Enable USB fastboot gadget" + default y + select USB_GADGET_DOWNLOAD + imply ANDROID_BOOT_IMAGE + imply CMD_FASTBOOT help This enables the USB part of the fastboot gadget. -- cgit v1.3.1 From 47738acceda5bae52b7c33ce912da6b52244c033 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Thu, 24 Aug 2017 11:52:32 +0200 Subject: cmd: Move CONFIG_RANDOM_UUID to Kconfig CONFIG_RANDOM_UUID is used by the GPT command to generate random UUID when none are provided. Move that option to Kconfig. Reviewed-by: Tom Rini Reviewed-by: Jagan Teki Signed-off-by: Maxime Ripard --- cmd/Kconfig | 7 +++++++ configs/evb-rv1108_defconfig | 1 + configs/rock_defconfig | 1 + include/configs/am57xx_evm.h | 1 - include/configs/dra7xx_evm.h | 1 - include/configs/edison.h | 1 - include/configs/odroid.h | 1 - include/configs/rockchip-common.h | 2 -- include/configs/trats.h | 1 - include/configs/trats2.h | 1 - include/configs/vinco.h | 1 - include/configs/xilinx_zynqmp.h | 1 - scripts/config_whitelist.txt | 1 - 13 files changed, 9 insertions(+), 11 deletions(-) (limited to 'cmd') diff --git a/cmd/Kconfig b/cmd/Kconfig index 07ec03b507b..28c91ca181f 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -665,10 +665,17 @@ config CMD_GPT bool "GPT (GUID Partition Table) command" select PARTITION_UUIDS select EFI_PARTITION + imply RANDOM_UUID help Enable the 'gpt' command to ready and write GPT style partition tables. +config RANDOM_UUID + bool "GPT Random UUID generation" + help + Enable the generation of partitions with random UUIDs if none + are provided. + config CMD_GPT_RENAME bool "GPT partition renaming commands" depends on CMD_GPT diff --git a/configs/evb-rv1108_defconfig b/configs/evb-rv1108_defconfig index 2dcb85dfd56..f035066dcd4 100644 --- a/configs/evb-rv1108_defconfig +++ b/configs/evb-rv1108_defconfig @@ -13,6 +13,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x08000000 CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=1 # CONFIG_CMD_IMLS is not set +CONFIG_RANDOM_UUID=y CONFIG_CMD_SF=y CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set diff --git a/configs/rock_defconfig b/configs/rock_defconfig index aaf27751d4e..599760da3ef 100644 --- a/configs/rock_defconfig +++ b/configs/rock_defconfig @@ -14,6 +14,7 @@ CONFIG_DEBUG_UART=y CONFIG_SPL_STACK_R=y CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000 # CONFIG_CMD_IMLS is not set +CONFIG_RANDOM_UUID=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y CONFIG_CMD_SF=y diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index bf555ccdc2e..5427974bd0f 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -73,7 +73,6 @@ #include /* Enhance our eMMC support / experience. */ -#define CONFIG_RANDOM_UUID #define CONFIG_HSMMC2_8BIT /* CPSW Ethernet */ diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h index 1555fc1b504..717861faeef 100644 --- a/include/configs/dra7xx_evm.h +++ b/include/configs/dra7xx_evm.h @@ -92,7 +92,6 @@ #include /* Enhance our eMMC support / experience. */ -#define CONFIG_RANDOM_UUID #define CONFIG_HSMMC2_8BIT /* CPSW Ethernet */ diff --git a/include/configs/edison.h b/include/configs/edison.h index d25b50c0768..e26a4c7a39f 100644 --- a/include/configs/edison.h +++ b/include/configs/edison.h @@ -13,7 +13,6 @@ #define CONFIG_BOOTCOMMAND "run bootcmd" /* DISK Partition support */ -#define CONFIG_RANDOM_UUID /* Miscellaneous configurable options */ #define CONFIG_SYS_LONGHELP diff --git a/include/configs/odroid.h b/include/configs/odroid.h index 2afb19f84a7..22e9c824973 100644 --- a/include/configs/odroid.h +++ b/include/configs/odroid.h @@ -174,7 +174,6 @@ "fdtaddr=40800000\0" /* GPT */ -#define CONFIG_RANDOM_UUID /* Security subsystem - enable hw_rand() */ #define CONFIG_EXYNOS_ACE_SHA diff --git a/include/configs/rockchip-common.h b/include/configs/rockchip-common.h index b3986c28af4..5e9b6deb485 100644 --- a/include/configs/rockchip-common.h +++ b/include/configs/rockchip-common.h @@ -27,8 +27,6 @@ func(DHCP, dchp, na) #endif -#define CONFIG_RANDOM_UUID - #ifdef CONFIG_ARM64 #define ROOT_UUID "B921B045-1DF0-41C3-AF44-4C6F280D3FAE;\0" #else diff --git a/include/configs/trats.h b/include/configs/trats.h index 5d0a3240a66..5b33a3b18e7 100644 --- a/include/configs/trats.h +++ b/include/configs/trats.h @@ -168,7 +168,6 @@ #define CONFIG_SYS_SPL_ARGS_ADDR CONFIG_SYS_SDRAM_BASE + 0x100 /* GPT */ -#define CONFIG_RANDOM_UUID /* Security subsystem - enable hw_rand() */ #define CONFIG_EXYNOS_ACE_SHA diff --git a/include/configs/trats2.h b/include/configs/trats2.h index 7f6a61a1db6..95c011f9a90 100644 --- a/include/configs/trats2.h +++ b/include/configs/trats2.h @@ -150,7 +150,6 @@ "fdtaddr=40800000\0" \ /* GPT */ -#define CONFIG_RANDOM_UUID /* Security subsystem - enable hw_rand() */ #define CONFIG_EXYNOS_ACE_SHA diff --git a/include/configs/vinco.h b/include/configs/vinco.h index b2225ab8805..0084051ba16 100644 --- a/include/configs/vinco.h +++ b/include/configs/vinco.h @@ -62,7 +62,6 @@ #define CONFIG_SYS_MMC_CLK_OD 500000 /* For generating MMC partitions */ -#define CONFIG_RANDOM_UUID #endif diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h index 6025706964a..1399dfd436b 100644 --- a/include/configs/xilinx_zynqmp.h +++ b/include/configs/xilinx_zynqmp.h @@ -103,7 +103,6 @@ DFU_ALT_INFO_RAM #ifndef CONFIG_SPL_BUILD -# define CONFIG_RANDOM_UUID # define PARTS_DEFAULT \ "partitions=uuid_disk=${uuid_gpt_disk};" \ "name=""boot"",size=16M,uuid=${uuid_gpt_boot};" \ diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 4ddb2ca97fa..78bcf06878b 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -1847,7 +1847,6 @@ CONFIG_RAMDISK_ADDR CONFIG_RAMDISK_BOOT CONFIG_RAM_BOOT CONFIG_RAM_BOOT_PHYS -CONFIG_RANDOM_UUID CONFIG_RCAR_BOARD_STRING CONFIG_RD_LVL CONFIG_REALMODE_DEBUG -- cgit v1.3.1 From de86fc3859f9c9ae26faed6f9d8fc115e1329b4f Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Wed, 23 Aug 2017 10:12:22 +0200 Subject: sunxi: Remove the MMC index hack The current code, if there's both an eMMC and an MMC slot available on the board, will swap the MMC indices based on whether we booted from the eMMC or the MMC. This way, the MMC we're supposed to boot on will always have the index 0. However, this causes various issues, for example when using other components that base their behaviour on the MMC index, such as fastboot. Let's remove that hack, and take the opposite approach. The MMC will always have the same index, but the bootcmd will pick the same device than the one we booted from. This is done through the introduction of the mmc_bootdev environment variable that will be filled by the board code based on the boot device informations we can get from the SoC. In order to not introduce regressions, we also need to adjust the fastboot MMC device and the environment device in order to set it to the eMMC, over the MMC, like it used to be the case. Tested-by: Chen-Yu Tsai Signed-off-by: Maxime Ripard --- board/sunxi/board.c | 20 ++++++-------------- cmd/fastboot/Kconfig | 2 ++ configs/A20-OLinuXino-Lime2-eMMC_defconfig | 1 - configs/Sinlinx_SinA33_defconfig | 1 - configs/parrot_r16_defconfig | 1 - include/configs/sunxi-common.h | 30 ++++++++++++++++++++++++------ 6 files changed, 32 insertions(+), 23 deletions(-) (limited to 'cmd') diff --git a/board/sunxi/board.c b/board/sunxi/board.c index 7fdcc4a74ff..cb42742dd23 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -492,20 +492,6 @@ int board_mmc_init(bd_t *bis) return -1; #endif -#if !defined(CONFIG_SPL_BUILD) && CONFIG_MMC_SUNXI_SLOT_EXTRA == 2 - /* - * On systems with an emmc (mmc2), figure out if we are booting from - * the emmc and if we are make it "mmc dev 0" so that boot.scr, etc. - * are searched there first. Note we only do this for u-boot proper, - * not for the SPL, see spl_boot_device(). - */ - if (readb(SPL_ADDR + 0x28) == SUNXI_BOOTED_FROM_MMC2) { - /* Booting from emmc / mmc2, swap */ - mmc0->block_dev.devnum = 1; - mmc1->block_dev.devnum = 0; - } -#endif - return 0; } #endif @@ -725,12 +711,18 @@ int misc_init_r(void) env_set("fel_booted", NULL); env_set("fel_scriptaddr", NULL); + env_set("mmc_bootdev", NULL); boot = sunxi_get_boot_device(); /* determine if we are running in FEL mode */ if (boot == BOOT_DEVICE_BOARD) { env_set("fel_booted", "1"); parse_spl_header(SPL_ADDR); + /* or if we booted from MMC, and which one */ + } else if (boot == BOOT_DEVICE_MMC1) { + env_set("mmc_bootdev", "0"); + } else if (boot == BOOT_DEVICE_MMC2) { + env_set("mmc_bootdev", "1"); } setup_environment(gd->fdt_blob); diff --git a/cmd/fastboot/Kconfig b/cmd/fastboot/Kconfig index 7330da216aa..214bbc23fc5 100644 --- a/cmd/fastboot/Kconfig +++ b/cmd/fastboot/Kconfig @@ -74,6 +74,8 @@ config FASTBOOT_FLASH config FASTBOOT_FLASH_MMC_DEV int "Define FASTBOOT MMC FLASH default device" depends on FASTBOOT_FLASH && MMC + default 0 if ARCH_SUNXI && MMC_SUNXI_SLOT_EXTRA = -1 + default 1 if ARCH_SUNXI && MMC_SUNXI_SLOT_EXTRA != -1 help The fastboot "flash" command requires additional information regarding the non-volatile storage device. Define this to diff --git a/configs/A20-OLinuXino-Lime2-eMMC_defconfig b/configs/A20-OLinuXino-Lime2-eMMC_defconfig index a04037ebe7c..b89c505efab 100644 --- a/configs/A20-OLinuXino-Lime2-eMMC_defconfig +++ b/configs/A20-OLinuXino-Lime2-eMMC_defconfig @@ -14,7 +14,6 @@ CONFIG_AHCI=y CONFIG_SPL=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_FASTBOOT_FLASH=y -CONFIG_FASTBOOT_FLASH_MMC_DEV=0 # CONFIG_CMD_IMLS is not set CONFIG_CMD_DFU=y # CONFIG_CMD_FLASH is not set diff --git a/configs/Sinlinx_SinA33_defconfig b/configs/Sinlinx_SinA33_defconfig index d726b404cc5..32c887210d0 100644 --- a/configs/Sinlinx_SinA33_defconfig +++ b/configs/Sinlinx_SinA33_defconfig @@ -15,7 +15,6 @@ CONFIG_DEFAULT_DEVICE_TREE="sun8i-a33-sinlinx-sina33" # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set CONFIG_SPL=y CONFIG_FASTBOOT_FLASH=y -CONFIG_FASTBOOT_FLASH_MMC_DEV=0 # CONFIG_CMD_IMLS is not set CONFIG_CMD_DFU=y # CONFIG_CMD_FLASH is not set diff --git a/configs/parrot_r16_defconfig b/configs/parrot_r16_defconfig index 6be57e604e8..d6bc89c29e3 100644 --- a/configs/parrot_r16_defconfig +++ b/configs/parrot_r16_defconfig @@ -13,7 +13,6 @@ CONFIG_DEFAULT_DEVICE_TREE="sun8i-r16-parrot" # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set CONFIG_SPL=y CONFIG_FASTBOOT_FLASH=y -CONFIG_FASTBOOT_FLASH_MMC_DEV=0 # CONFIG_CMD_IMLS is not set # CONFIG_CMD_FLASH is not set # CONFIG_CMD_FPGA is not set diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h index 02d7be08495..91751171ec2 100644 --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h @@ -148,7 +148,13 @@ #endif #if defined(CONFIG_ENV_IS_IN_MMC) -#define CONFIG_SYS_MMC_ENV_DEV 0 /* first detected MMC controller */ +#if CONFIG_MMC_SUNXI_SLOT_EXTRA != -1 +/* If we have two devices (most likely eMMC + MMC), favour the eMMC */ +#define CONFIG_SYS_MMC_ENV_DEV 1 +#else +/* Otherwise, use the only device we have */ +#define CONFIG_SYS_MMC_ENV_DEV 0 +#endif #define CONFIG_SYS_MMC_MAX_DEVICE 4 #elif defined(CONFIG_ENV_IS_NOWHERE) #define CONFIG_ENV_SIZE (128 << 10) @@ -382,15 +388,28 @@ extern int soft_i2c_gpio_scl; "ramdisk ram " RAMDISK_ADDR_R " 0x4000000\0" #ifdef CONFIG_MMC -#define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) #if CONFIG_MMC_SUNXI_SLOT_EXTRA != -1 -#define BOOT_TARGET_DEVICES_MMC_EXTRA(func) func(MMC, mmc, 1) +#define BOOTENV_DEV_MMC_AUTO(devtypeu, devtypel, instance) \ + BOOTENV_DEV_MMC(MMC, mmc, 0) \ + BOOTENV_DEV_MMC(MMC, mmc, 1) \ + "bootcmd_mmc_auto=" \ + "if test ${mmc_bootdev} -eq 1; then " \ + "run bootcmd_mmc1; " \ + "run bootcmd_mmc0; " \ + "elif test ${mmc_bootdev} -eq 0; then " \ + "run bootcmd_mmc0; " \ + "run bootcmd_mmc1; " \ + "fi\0" + +#define BOOTENV_DEV_NAME_MMC_AUTO(devtypeu, devtypel, instance) \ + "mmc_auto " + +#define BOOT_TARGET_DEVICES_MMC(func) func(MMC_AUTO, mmc_auto, na) #else -#define BOOT_TARGET_DEVICES_MMC_EXTRA(func) +#define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) #endif #else #define BOOT_TARGET_DEVICES_MMC(func) -#define BOOT_TARGET_DEVICES_MMC_EXTRA(func) #endif #ifdef CONFIG_AHCI @@ -418,7 +437,6 @@ extern int soft_i2c_gpio_scl; #define BOOT_TARGET_DEVICES(func) \ func(FEL, fel, na) \ BOOT_TARGET_DEVICES_MMC(func) \ - BOOT_TARGET_DEVICES_MMC_EXTRA(func) \ BOOT_TARGET_DEVICES_SCSI(func) \ BOOT_TARGET_DEVICES_USB(func) \ func(PXE, pxe, na) \ -- cgit v1.3.1