Index: firmware/target/arm/as3525/sd-as3525v2.c =================================================================== --- firmware/target/arm/as3525/sd-as3525v2.c (revision 29141) +++ firmware/target/arm/as3525/sd-as3525v2.c (working copy) @@ -473,6 +473,12 @@ while (1) { + //udelay(100000); /* 100ms */ /* G */ /* Looong init, 25.0MBit/s */ + //udelay(10000); /* 10ms */ /* H */ /* Loong init, 25.0MBit/s */ + //udelay(1000); /* 1ms */ /* I */ /* Long init, 25.0MBit/s */ + //udelay(1); /* 1us */ /* J */ /* BUG, 25.0MBit/s */ + //udelay(10); /* 10us */ /* K */ /* BUG, 25.0MBit/s */ + //udelay(100); /* 100us */ /* L */ /* BUG, 25.0MBit/s */ while(!(send_cmd(drive, SD_SEND_STATUS, card_info[drive].rca, MCI_RESP, &response))); if (((response >> 9) & 0xf) == SD_TRAN) @@ -545,25 +551,31 @@ #endif /* End of Card Identification Mode ************************************/ + //if (false) /* No HS timings - no problems */ /* M */ /* OK, 25.0MBit/s */ if (sd_v2) { /* Attempt to switch cards to HS timings, non HS cards just ignore this */ /* CMD7 w/rca: Select card to put it in TRAN state */ + //udelay(100000); /* 100ms */ /* A */ /* BUG, 25.0MBit/s */ if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_NO_RESP, NULL)) return -7; + //udelay(100000); /* 100ms */ /* B */ /* BUG, 25.0MBit/s */ if(sd_wait_for_tran_state(drive)) return -8; + //udelay(100000); /* 100ms */ /* C */ /* BUG, 25.0MBit/s */ /* CMD6 */ if(!send_cmd(drive, SD_SWITCH_FUNC, 0x80fffff1, MCI_NO_RESP, NULL)) return -9; mci_delay(); + //udelay(100000); /* 100ms */ /* D */ /* OK, 50.0MBit/s */ /* 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)) return -10; + //udelay(100000); /* 100ms */ /* E */ /* OK, 50.0MBit/s */ } /* CMD9 send CSD */ @@ -572,6 +584,7 @@ return -11; mci_delay(); + //udelay(100000); /* 100ms */ /* F */ /* OK, 25.0MBit/s */ sd_parse_csd(&card_info[drive]);