diff --git a/configs/mt8516_coral_defconfig b/configs/mt8516_coral_defconfig
index e329cd2..3994293 100644
--- a/configs/mt8516_coral_defconfig
+++ b/configs/mt8516_coral_defconfig
@@ -51,6 +51,7 @@
 CONFIG_FASTBOOT_BUF_SIZE=0x4000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
+CONFIG_FASTBOOT_GPT_NAME="mmc0"
 CONFIG_DM_GPIO=y
 # CONFIG_INPUT is not set
 CONFIG_DM_MMC=y
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
index b0b19c5..a824c22 100644
--- a/drivers/fastboot/fb_mmc.c
+++ b/drivers/fastboot/fb_mmc.c
@@ -25,6 +25,33 @@
 	struct blk_desc	*dev_desc;
 };
 
+struct special_partition {
+	char *name;
+	int idx;
+};
+struct special_partition special_partitions[] = {
+	{ "mmc0boot0", 1 },
+	{ "mmc0boot1", 2 },
+};
+
+static struct special_partition* get_special_partition(const char *name) {
+	for (int i = 0; i < ARRAY_SIZE(special_partitions); i++) {
+		struct special_partition *part = &special_partitions[i];
+		if (strcmp(name, part->name) == 0) {
+			return part;
+		}
+	}
+	return NULL;
+}
+
+static int switch_to_special_partition(struct special_partition *part) {
+	return blk_select_hwpart_devnum(IF_TYPE_MMC, CONFIG_FASTBOOT_FLASH_MMC_DEV, part->idx);
+}
+
+static void switch_to_main_partition(void) {
+	blk_select_hwpart_devnum(IF_TYPE_MMC, CONFIG_FASTBOOT_FLASH_MMC_DEV, 0);
+}
+
 static int part_get_info_by_name_or_alias(struct blk_desc *dev_desc,
 		const char *name, disk_partition_t *info)
 {
@@ -101,9 +128,17 @@
 		const char *part_name, void *buffer,
 		u32 download_bytes, char *response)
 {
+	struct mmc *mmc = find_mmc_device(CONFIG_FASTBOOT_FLASH_MMC_DEV);
 	lbaint_t blkcnt;
 	lbaint_t blks;
 
+	struct special_partition *part = get_special_partition(part_name);
+	if (part) {
+		info->blksz = dev_desc->blksz;
+		info->size = mmc->capacity_boot;
+		info->start = 0;
+	}
+
 	/* determine number of blocks to write */
 	blkcnt = ((download_bytes + (info->blksz - 1)) & ~(info->blksz - 1));
 	blkcnt = lldiv(blkcnt, info->blksz);
@@ -396,12 +431,20 @@
 	}
 #endif
 
-	if (part_get_info_by_name_or_alias(dev_desc, cmd, &info) < 0) {
+	struct special_partition *part = get_special_partition(cmd);
+	if (part_get_info_by_name_or_alias(dev_desc, cmd, &info) < 0 && !part) {
 		pr_err("cannot find partition: '%s'\n", cmd);
 		fastboot_fail("cannot find partition", response);
 		return;
 	}
 
+	if (part) {
+		if (switch_to_special_partition(part)) {
+			pr_err("cannot switch to special partition: '%s'\n", cmd);
+			fastboot_fail("cannot switch partition", response);
+		}
+	}
+
 	if (is_sparse_image(download_buffer)) {
 		struct fb_mmc_sparse sparse_priv;
 		struct sparse_storage sparse;
@@ -428,6 +471,9 @@
 		write_raw_image(dev_desc, &info, cmd, download_buffer,
 				download_bytes, response);
 	}
+	if (part) {
+		switch_to_main_partition();
+	}
 }
 
 /**
