From: Keith Packard Date: Fri, 12 Apr 2013 08:55:33 +0000 (-0700) Subject: altos: Delay while waking up SD card a bit X-Git-Tag: altosdroid_v1.2-1~22 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=7e6e2ca60c65a4fe2bee0bd8b9b89d45a7dbcfb3;hp=1f88d345c407e409611448d0e8813ab5a6de0a0b altos: Delay while waking up SD card a bit 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 --- diff --git a/src/drivers/ao_sdcard.c b/src/drivers/ao_sdcard.c index 6314a30c..c13017f0 100644 --- a/src/drivers/ao_sdcard.c +++ b/src/drivers/ao_sdcard.c @@ -346,14 +346,16 @@ ao_sdcard_setup(void) 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; diff --git a/src/drivers/ao_sdcard.h b/src/drivers/ao_sdcard.h index 0d1464b3..50b70c73 100644 --- a/src/drivers/ao_sdcard.h +++ b/src/drivers/ao_sdcard.h @@ -69,6 +69,7 @@ ao_sdcard_init(void); #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,