This seems to make bringing the card from idle to ready mode more
reliable. If you spam the card with requests, it will eventually
whinge and shut down communications.
Signed-off-by: Keith Packard <keithp@keithp.com>
sdver2 = 1;
}
- for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
+ for (i = 0; i < SDCARD_OP_COND_RETRY; i++) {
+ ao_delay(AO_MS_TO_TICKS(10));
ret = ao_sdcard_app_send_op_cond(arg);
if (ret != SDCARD_STATUS_IDLE_STATE)
break;
}
if (ret != SDCARD_STATUS_READY_STATE) {
/* MMC */
- for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
+ for (i = 0; i < SDCARD_OP_COND_RETRY; i++) {
+ ao_delay(AO_MS_TO_TICKS(10));
ret = ao_sdcard_send_op_cond();
if (ret != SDCARD_STATUS_IDLE_STATE)
break;
#define SDCARD_BUSY_TIMEOUT AO_MS_TO_TICKS(20)
#define SDCARD_BLOCK_TIMEOUT AO_MS_TO_TICKS(200)
#define SDCARD_IDLE_RETRY 10
+#define SDCARD_OP_COND_RETRY 10
enum ao_sdtype {
ao_sdtype_unknown,