Index: firmware/target/arm/as3525/sd-as3525v2.c
===================================================================
--- firmware/target/arm/as3525/sd-as3525v2.c	(revision 29621)
+++ firmware/target/arm/as3525/sd-as3525v2.c	(working copy)
@@ -423,7 +423,7 @@
       /*b10 */  | ((cmd == SD_WRITE_MULTIPLE_BLOCK)  ? CMD_RW_BIT:            0)
       /*b11     | CMD_TRANSMODE_BIT       unused  */
       /*b12     | CMD_SENT_AUTO_STOP_BIT  unused  */
-      /*b13 */  | (TRANSFER_CMD                      ? CMD_WAIT_PRV_DAT_BIT:  0)
+      /*b13 */  | ((cmd != SD_STOP_TRANSMISSION)     ? CMD_WAIT_PRV_DAT_BIT:  0)
       /*b14     | CMD_ABRT_CMD_BIT        unused  */
       /*b15     | CMD_SEND_INIT_BIT       unused  */
    /*b20:16 */  |                                      card_no
@@ -550,22 +550,16 @@
     {
         /* Attempt to switch cards to HS timings, non HS cards just ignore this */
         /*  CMD7 w/rca: Select card to put it in TRAN state */
-        if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_NO_RESP, NULL))
+        if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_RESP, &response))
             return -7;
 
         if(sd_wait_for_tran_state(drive))
             return -8;
 
         /* CMD6 */
-        if(!send_cmd(drive, SD_SWITCH_FUNC, 0x80fffff1, MCI_NO_RESP, NULL))
+        if(!send_cmd(drive, SD_SWITCH_FUNC, 0x80fffff1, MCI_RESP, &response))
             return -9;
             
-        /* This delay is a bit of a hack, but seems to fix card detection
-           problems with some SD cards (particularly 16 GB and bigger cards).
-           Preferably we should handle this properly instead of using a delay,
-           see also FS#11870. */
-        udelay(100000);
-
         /*  We need to go back to STBY state now so we can read csd */
         /*  CMD7 w/rca=0:  Deselect card to put it in STBY state */
         if(!send_cmd(drive, SD_DESELECT_CARD, 0, MCI_NO_RESP, NULL))
