diff --git a/arch/arm/src/stm32/stm32_sdio.c b/arch/arm/src/stm32/stm32_sdio.c
index f5e9e2ac84d079944ae6403e6dab8448fda30dde..58a028fe5b8e477139186def5c97c63df48f1a9a 100644
--- a/arch/arm/src/stm32/stm32_sdio.c
+++ b/arch/arm/src/stm32/stm32_sdio.c
@@ -98,7 +98,7 @@
 /* HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(2+2)=18 MHz */
 
 #define SDIO_MMCXFR_CLKDIV       (2 << SDIO_CLKCR_CLKDIV_SHIFT) 
-#define SDIO_CLKCR_MMCXFR        (SDIO_SDXFR_CLKDIV|SDIO_CLKCR_RISINGEDGE|\
+#define SDIO_CLKCR_MMCXFR        (SDIO_MMCXFR_CLKDIV|SDIO_CLKCR_RISINGEDGE|\
                                   SDIO_CLKCR_WIDBUS_D1)
 
 /* HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(1+2)=24 MHz */
diff --git a/drivers/mmcsd/mmcsd_sdio.c b/drivers/mmcsd/mmcsd_sdio.c
index 3e8d4262b14d4342df2b81f135040e81f7bd8e25..69a9249665241a019f1c7dfad63927f4966b7ee2 100644
--- a/drivers/mmcsd/mmcsd_sdio.c
+++ b/drivers/mmcsd/mmcsd_sdio.c
@@ -2252,7 +2252,7 @@ static int mmcsd_sdinitialize(FAR struct mmcsd_state_s *priv)
 
   /* Get the SD card Configuration Register (SCR).  We need this now because
    * that configuration register contains the indication whether or not
-   * this card supports wide bus operation.\
+   * this card supports wide bus operation.
    */
 
   ret = mmcsd_getSCR(priv, scr);
@@ -2404,15 +2404,19 @@ static int mmcsd_cardidentify(FAR struct mmcsd_state_s *priv)
                    * an SD V2.x (via CMD8), then this must be SD V1.x
                    */
 
+                  fvdbg("R3: %08x\n", response);
                   if (priv->type == MMCSD_CARDTYPE_UNKNOWN)
                     {
                       fvdbg("SD V1.x card\n");
                       priv->type = MMCSD_CARDTYPE_SDV1;
                     }
 
-                  /* Check if the card is busy */
+                  /* Check if the card is busy.  Very confusing, BUSY is set LOW
+                   * if the card has not finished its initialization, so it really
+                   * means NOT busy.
+                   */
 
-                  if ((response &  MMCSD_CARD_BUSY) == 0)
+                  if ((response & MMCSD_CARD_BUSY) != 0)
                     {
                       /* No.. We really should check the current state to see if
                        * the SD card successfully made it to the IDLE state, but
@@ -2476,9 +2480,12 @@ static int mmcsd_cardidentify(FAR struct mmcsd_state_s *priv)
               fdbg("CMD1 succeeded, assuming MMC card\n");
               priv->type = MMCSD_CARDTYPE_MMC;
 
-              /* Check if the card is busy */
+              /* Check if the card is busy.  Very confusing, BUSY is set LOW
+               * if the card has not finished its initialization, so it really
+               * means NOT busy.
+               */
 
-              if ((response &  MMCSD_CARD_BUSY) == 0)
+              if ((response & MMCSD_CARD_BUSY) != 0)
                 {
                   /* NO.. We really should check the current state to see if the
                    * MMC successfully made it to the IDLE state, but at least for now,
@@ -2496,7 +2503,7 @@ static int mmcsd_cardidentify(FAR struct mmcsd_state_s *priv)
 
       elapsed = g_system_timer - start;
     }
-  while (elapsed < TICK_PER_SEC && ret != OK);
+  while (elapsed < TICK_PER_SEC || ret != OK);
 
   /* We get here when the above loop completes, either (1) we could not
    * communicate properly with the card due to errors (and the loop times
@@ -2511,15 +2518,6 @@ static int mmcsd_cardidentify(FAR struct mmcsd_state_s *priv)
       return -EIO;
     }
 
-  /* Verify that we are in IDLE state */
-
-  ret = mmcsd_verifystate(priv, MMCSD_R1_STATE_IDLE);
-  if (ret != OK)
-    {
-      fdbg("ERROR: Failed to enter IDLE state\n");
-      return ret;
-    }
-
   return OK;
 }