diff options
author | Keith Packard <keithp@keithp.com> | 2013-04-12 01:55:33 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-04-12 01:55:33 -0700 |
commit | 7e6e2ca60c65a4fe2bee0bd8b9b89d45a7dbcfb3 (patch) | |
tree | 4bfbe330f8066d639a3da3fee92090f3d3268588 /src | |
parent | 1f88d345c407e409611448d0e8813ab5a6de0a0b (diff) |
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 <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/drivers/ao_sdcard.c | 6 | ||||
-rw-r--r-- | src/drivers/ao_sdcard.h | 1 |
2 files changed, 5 insertions, 2 deletions
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, |