fastboot: mmc: Add CONFIG_FASTBOOT_MMC_USER_SUPPORT
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Wed, 27 Jan 2021 13:46:46 +0000 (14:46 +0100)
committerMarek Vasut <marex@denx.de>
Sun, 7 Feb 2021 18:22:55 +0000 (19:22 +0100)
Split userdata and boot partition support for eMMC update
and correct the description (update is supported).

The new configuration CONFIG_FASTBOOT_MMC_USER_SUPPORT
allows to activate support of userdata partition update,
based on target name=CONFIG_FASTBOOT_MMC_USER_NAME

This patch also removes the unnecessary dependency with
ARCH_MEDIATEK and EFI_PARTITION.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
configs/mt8512_bm1_emmc_defconfig
configs/mt8518_ap1_emmc_defconfig
configs/pumpkin_defconfig
drivers/fastboot/Kconfig
drivers/fastboot/fb_mmc.c

index c6b3ee4..1bda45c 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x1e00000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_FASTBOOT_MMC_BOOT1_SUPPORT=y
+CONFIG_FASTBOOT_MMC_USER_SUPPORT=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_MMC_MTK=y
index b95d2c6..d5fb0cc 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x1E00000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_FASTBOOT_MMC_BOOT1_SUPPORT=y
+CONFIG_FASTBOOT_MMC_USER_SUPPORT=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_MMC_MTK=y
index cd77889..a9655f5 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x4000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_FASTBOOT_MMC_BOOT1_SUPPORT=y
+CONFIG_FASTBOOT_MMC_USER_SUPPORT=y
 # CONFIG_INPUT is not set
 CONFIG_DM_MMC=y
 # CONFIG_MMC_QUIRKS is not set
index d4436df..45e07d0 100644 (file)
@@ -124,14 +124,26 @@ config FASTBOOT_MMC_BOOT1_NAME
          defined here.
          The default target name for updating EMMC_BOOT1 is "mmc0boot0".
 
+config FASTBOOT_MMC_USER_SUPPORT
+       bool "Enable eMMC userdata partition flash/erase"
+       depends on FASTBOOT_FLASH_MMC
+       help
+         Define this to enable the support "flash" and "erase" command on
+         eMMC userdata. The "flash" command only update the MBR and GPT
+         header when CONFIG_EFI_PARTITION is supported.
+         The "erase" command erase all the userdata.
+         This occurs when the specified "partition name" on the
+         fastboot command line matches the value CONFIG_FASTBOOT_MMC_USER_NAME.
+
 config FASTBOOT_MMC_USER_NAME
-       string "Target name for erasing EMMC_USER"
-       depends on FASTBOOT_FLASH_MMC && EFI_PARTITION && ARCH_MEDIATEK
+       string "Target name for updating EMMC_USER"
+       depends on FASTBOOT_MMC_USER_SUPPORT
        default "mmc0"
        help
-         The fastboot "erase" command supports erasing EMMC_USER. This occurs
-         when the specified "EMMC_USER name" on the "fastboot erase" commands
-         match the value defined here.
+         The fastboot "flash" and "erase" command supports EMMC_USER.
+         This occurs when the specified "EMMC_USER name" on the
+         "fastboot flash" and the "fastboot erase" commands match the value
+         defined here.
          The default target name for erasing EMMC_USER is "mmc0".
 
 config FASTBOOT_GPT_NAME
index 4e26cef..b5d4c90 100644 (file)
@@ -174,7 +174,8 @@ static void write_raw_image(struct blk_desc *dev_desc,
        fastboot_okay(NULL, response);
 }
 
-#ifdef CONFIG_FASTBOOT_MMC_BOOT1_SUPPORT
+#if defined(CONFIG_FASTBOOT_MMC_BOOT1_SUPPORT) || \
+       defined(CONFIG_FASTBOOT_MMC_USER_SUPPORT)
 static int fb_mmc_erase_mmc_hwpart(struct blk_desc *dev_desc)
 {
        lbaint_t blks;
@@ -193,7 +194,9 @@ static int fb_mmc_erase_mmc_hwpart(struct blk_desc *dev_desc)
 
        return 0;
 }
+#endif
 
+#ifdef CONFIG_FASTBOOT_MMC_BOOT1_SUPPORT
 static void fb_mmc_boot1_ops(struct blk_desc *dev_desc, void *buffer,
                             u32 buff_sz, char *response)
 {
@@ -473,7 +476,7 @@ void fastboot_mmc_flash_write(const char *cmd, void *download_buffer,
 #endif
 
 #if CONFIG_IS_ENABLED(EFI_PARTITION)
-#ifndef CONFIG_FASTBOOT_MMC_USER_NAME
+#ifndef CONFIG_FASTBOOT_MMC_USER_SUPPORT
        if (strcmp(cmd, CONFIG_FASTBOOT_GPT_NAME) == 0) {
 #else
        if (strcmp(cmd, CONFIG_FASTBOOT_GPT_NAME) == 0 ||
@@ -603,7 +606,7 @@ void fastboot_mmc_erase(const char *cmd, char *response)
        }
 #endif
 
-#ifdef CONFIG_FASTBOOT_MMC_USER_NAME
+#ifdef CONFIG_FASTBOOT_MMC_USER_SUPPORT
        if (strcmp(cmd, CONFIG_FASTBOOT_MMC_USER_NAME) == 0) {
                /* erase EMMC userdata */
                if (fb_mmc_erase_mmc_hwpart(dev_desc))