summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-04-02 16:41:29 -0700
committerKeith Packard <keithp@keithp.com>2013-04-02 16:41:29 -0700
commit96c32125a780ad6b39c015f4abbae07fead68582 (patch)
tree07352e8f8de6ceb008b4c169412f3fe2e00d3124
parent985df526ec142258ef990d0b55b0a14e13c099b4 (diff)
altos: Shorten SD initialization timeouts.
This makes failure when no card is present much quicker. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/drivers/ao_sdcard.c18
-rw-r--r--src/drivers/ao_sdcard.h8
2 files changed, 13 insertions, 13 deletions
diff --git a/src/drivers/ao_sdcard.c b/src/drivers/ao_sdcard.c
index 59ac9400..6314a30c 100644
--- a/src/drivers/ao_sdcard.c
+++ b/src/drivers/ao_sdcard.c
@@ -30,7 +30,7 @@ extern uint8_t ao_radio_mutex;
#define ao_sdcard_deselect() ao_gpio_set(AO_SDCARD_SPI_CS_PORT,AO_SDCARD_SPI_CS_PIN,AO_SDCARD_SPI_CS,1)
/* Include SD card commands */
-#define SDCARD_DEBUG 1
+#define SDCARD_DEBUG 0
/* Spew SD tracing */
#define SDCARD_TRACE 0
@@ -326,11 +326,11 @@ ao_sdcard_setup(void)
ao_sdcard_send_fixed(0xff, 10);
/* Reset the card and get it into SPI mode */
- for (i = 0; i < SDCARD_IDLE_WAIT; i++) {
+ for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
if (ao_sdcard_go_idle_state() == SDCARD_STATUS_IDLE_STATE)
break;
}
- if (i == SDCARD_IDLE_WAIT)
+ if (i == SDCARD_IDLE_RETRY)
goto bail;
/* Figure out what kind of card we have */
@@ -346,14 +346,14 @@ ao_sdcard_setup(void)
sdver2 = 1;
}
- for (i = 0; i < SDCARD_IDLE_WAIT; i++) {
+ for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
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_WAIT; i++) {
+ for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
ret = ao_sdcard_send_op_cond();
if (ret != SDCARD_STATUS_IDLE_STATE)
break;
@@ -396,11 +396,11 @@ _ao_sdcard_reset(void)
uint8_t ret;
uint8_t response[10];
- for (i = 0; i < SDCARD_IDLE_WAIT; i++) {
+ for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
if (ao_sdcard_go_idle_state() == SDCARD_STATUS_IDLE_STATE)
break;
}
- if (i == SDCARD_IDLE_WAIT) {
+ if (i == SDCARD_IDLE_RETRY) {
ret = 0x3f;
goto bail;
}
@@ -418,7 +418,7 @@ _ao_sdcard_reset(void)
sdver2 = 1;
}
- for (i = 0; i < SDCARD_IDLE_WAIT; i++) {
+ for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
ret = ao_sdcard_app_send_op_cond(arg);
if (ret != SDCARD_STATUS_IDLE_STATE)
break;
@@ -426,7 +426,7 @@ _ao_sdcard_reset(void)
if (ret != SDCARD_STATUS_READY_STATE) {
/* MMC */
- for (i = 0; i < SDCARD_IDLE_WAIT; i++) {
+ for (i = 0; i < SDCARD_IDLE_RETRY; i++) {
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 e55a3dec..0d1464b3 100644
--- a/src/drivers/ao_sdcard.h
+++ b/src/drivers/ao_sdcard.h
@@ -65,10 +65,10 @@ ao_sdcard_init(void);
#define SDCARD_DATA_RES_MASK 0x1f
#define SDCARD_DATA_RES_ACCEPTED 0x05
-#define SDCARD_CMD_TIMEOUT AO_MS_TO_TICKS(100)
-#define SDCARD_BUSY_TIMEOUT AO_MS_TO_TICKS(100)
-#define SDCARD_IDLE_WAIT 10000
-#define SDCARD_BLOCK_TIMEOUT AO_MS_TO_TICKS(1000)
+#define SDCARD_CMD_TIMEOUT AO_MS_TO_TICKS(20)
+#define SDCARD_BUSY_TIMEOUT AO_MS_TO_TICKS(20)
+#define SDCARD_BLOCK_TIMEOUT AO_MS_TO_TICKS(200)
+#define SDCARD_IDLE_RETRY 10
enum ao_sdtype {
ao_sdtype_unknown,