Merge "msm7630_1x: Fix partition table to not overlap system and cache"
diff --git a/platform/msm_shared/include/mmc.h b/platform/msm_shared/include/mmc.h
index e840cb4..6c9f1a2 100755
--- a/platform/msm_shared/include/mmc.h
+++ b/platform/msm_shared/include/mmc.h
@@ -253,6 +253,7 @@
 /* Card status */

 #define MMC_BOOT_CARD_STATUS(x)          ((x>>9) & 0x0F)

 #define MMC_BOOT_TRAN_STATE              4

+#define MMC_BOOT_PROG_STATE              7

 

 /* SD Memory Card bus commands */

 #define CMD0_GO_IDLE_STATE               0

diff --git a/platform/msm_shared/mmc.c b/platform/msm_shared/mmc.c
index c7c6fc3..9628562 100644
--- a/platform/msm_shared/mmc.c
+++ b/platform/msm_shared/mmc.c
@@ -1123,6 +1123,7 @@
     unsigned int mmc_ret = MMC_BOOT_E_SUCCESS;

     unsigned int mmc_reg = 0;

     unsigned int mmc_width = 0;

+    unsigned int status;

 

     if( width != MMC_BOOT_BUS_WIDTH_1_BIT)

     {

@@ -1131,6 +1132,19 @@
 

     mmc_boot_send_ext_cmd (card);

 

+    do

+    {

+        mmc_ret = mmc_boot_get_card_status(card, 1, &status);

+        if(mmc_ret != MMC_BOOT_E_SUCCESS)

+        {

+            return mmc_ret;

+        }

+    }while( (mmc_ret == MMC_BOOT_E_SUCCESS) &&

+        (MMC_BOOT_CARD_STATUS(status) == MMC_BOOT_PROG_STATE));

+

+    if(MMC_BOOT_CARD_STATUS(status) != MMC_BOOT_TRAN_STATE)

+        return MMC_BOOT_E_FAILURE;

+

     mmc_ret = mmc_boot_switch_cmd(card, MMC_BOOT_ACCESS_WRITE, MMC_BOOT_EXT_CMMC_BUS_WIDTH, mmc_width);

 

     if( mmc_ret != MMC_BOOT_E_SUCCESS )