[msm_shared/mmc]: Check MMC state before setting high speed

CR-Fixed: 268075
Change-Id: I6a760be3d71998fc0290536ab2095abd2e57a646
diff --git a/platform/msm_shared/mmc.c b/platform/msm_shared/mmc.c
index 6091041..ecdd90f 100644
--- a/platform/msm_shared/mmc.c
+++ b/platform/msm_shared/mmc.c
@@ -1194,7 +1194,6 @@
         mmc_width = width-1;

     }

 

-    mmc_boot_send_ext_cmd (card, ext_csd_buf);

 

     do

     {

@@ -1203,8 +1202,7 @@
         {

             return mmc_ret;

         }

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

-        (MMC_BOOT_CARD_STATUS(status) == MMC_BOOT_PROG_STATE));

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

 

     if(MMC_BOOT_CARD_STATUS(status) != MMC_BOOT_TRAN_STATE)

         return MMC_BOOT_E_FAILURE;

@@ -1553,9 +1551,21 @@
 static unsigned int mmc_boot_adjust_interface_speed( struct mmc_boot_host* host,

         struct mmc_boot_card* card )

 {

-    int mmc_ret;

+    unsigned int mmc_ret = MMC_BOOT_E_SUCCESS;

+    unsigned int status;

 

-    mmc_boot_send_ext_cmd (card, ext_csd_buf);

+

+    do

+    {

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

+        if(mmc_ret != MMC_BOOT_E_SUCCESS)

+        {

+            return mmc_ret;

+        }

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

+

+    if(MMC_BOOT_CARD_STATUS(status) != MMC_BOOT_TRAN_STATE)

+        return MMC_BOOT_E_FAILURE;

 

     /* Setting HS_TIMING in EXT_CSD (CMD6) */

     mmc_ret = mmc_boot_switch_cmd(card, MMC_BOOT_ACCESS_WRITE, MMC_BOOT_EXT_CMMC_HS_TIMING, 1);