[msm8x60]: Add support for fastboot erase.
Change-Id: I7ca19dbe4e8fbcc80a2dbb12d7b93b34c624719a
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index fb2a216..2884229 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -87,7 +87,8 @@
int target_is_emmc_boot(void);
void reboot_device(unsigned);
void target_battery_charging_enable(unsigned enable, unsigned disconnect);
-
+unsigned int mmc_write (unsigned long long data_addr,
+ unsigned int data_len, unsigned int* in);
static void ptentry_to_tag(unsigned **ptr, struct ptentry *ptn)
{
@@ -439,6 +440,29 @@
fastboot_okay("");
}
+
+void cmd_erase_mmc(const char *arg, void *data, unsigned sz)
+{
+ unsigned long long ptn = 0;
+ unsigned int out[512] = {0};
+
+ ptn = mmc_ptn_offset(arg);
+ if(ptn == 0) {
+ fastboot_fail("partition table doesn't exist");
+ return;
+ }
+
+
+ /* Simple inefficient version of erase. Just writing
+ 0 in first block */
+ if (mmc_write(ptn , 512, (unsigned int *)out)) {
+ fastboot_fail("failed to erase partition");
+ return;
+ }
+ fastboot_okay("");
+}
+
+
void cmd_flash_mmc(const char *arg, void *data, unsigned sz)
{
unsigned long long ptn = 0;
@@ -637,14 +661,16 @@
udc_init(&surf_udc_device);
fastboot_register("boot", cmd_boot);
- fastboot_register("erase:", cmd_erase);
+
if (target_is_emmc_boot())
{
fastboot_register("flash:", cmd_flash_mmc);
+ fastboot_register("erase:", cmd_erase_mmc);
}
else
{
fastboot_register("flash:", cmd_flash);
+ fastboot_register("erase:", cmd_erase);
}
fastboot_register("continue", cmd_continue);