summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-04-12 01:55:33 -0700
committerKeith Packard <keithp@keithp.com>2013-04-12 01:55:33 -0700
commit7e6e2ca60c65a4fe2bee0bd8b9b89d45a7dbcfb3 (patch)
tree4bfbe330f8066d639a3da3fee92090f3d3268588 /src
parent1f88d345c407e409611448d0e8813ab5a6de0a0b (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.c6
-rw-r--r--src/drivers/ao_sdcard.h1
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,