aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2011-04-30 18:46:09 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2011-04-30 18:46:09 +0000
commitdd9cac5ffa29031b1175bb750e587a20362f5276 (patch)
treeb1e68e0db116919408cce05e0ce38e408cb70cbd
parentfc8ea30f6e774ab92b2a44c4eb5e40ae2a9d9d1f (diff)
downloadChibiOS-dd9cac5ffa29031b1175bb750e587a20362f5276.tar.gz
ChibiOS-dd9cac5ffa29031b1175bb750e587a20362f5276.tar.bz2
ChibiOS-dd9cac5ffa29031b1175bb750e587a20362f5276.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2907 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r--os/hal/include/sdc.h2
-rw-r--r--os/hal/platforms/STM32/sdc_lld.c6
-rw-r--r--os/hal/src/sdc.c2
-rw-r--r--testhal/STM32/SDIO/main.c1
4 files changed, 11 insertions, 0 deletions
diff --git a/os/hal/include/sdc.h b/os/hal/include/sdc.h
index d578e65b4..860bbbbda 100644
--- a/os/hal/include/sdc.h
+++ b/os/hal/include/sdc.h
@@ -35,6 +35,8 @@
/* Driver constants. */
/*===========================================================================*/
+#define SDC_CMD_GO_IDLE_STATE 0
+
/*===========================================================================*/
/* Driver pre-compile time settings. */
/*===========================================================================*/
diff --git a/os/hal/platforms/STM32/sdc_lld.c b/os/hal/platforms/STM32/sdc_lld.c
index 25c7b6897..8517a040d 100644
--- a/os/hal/platforms/STM32/sdc_lld.c
+++ b/os/hal/platforms/STM32/sdc_lld.c
@@ -194,6 +194,12 @@ void sdc_lld_set_bus_mode(SDCDriver *sdcp, sdcbusmode_t mode) {
*/
void sdc_lld_send_cmd_none(SDCDriver *sdcp, uint8_t cmd, uint32_t arg) {
+ (void)sdcp;
+ SDIO->ARG = arg;
+ SDIO->CMD = (uint32_t)cmd | SDIO_CMD_CPSMEN;
+ while ((SDIO->STA & SDIO_STA_CMDSENT) == 0)
+ ;
+ SDIO->ICR = 0xFFFFFFFF;
}
/**
diff --git a/os/hal/src/sdc.c b/os/hal/src/sdc.c
index 701071b8b..b64dcf9c5 100644
--- a/os/hal/src/sdc.c
+++ b/os/hal/src/sdc.c
@@ -137,6 +137,8 @@ bool_t sdcConnect(SDCDriver *sdcp) {
sdc_lld_start_clk(sdcp);
+ sdc_lld_send_cmd_none(sdcp, SDC_CMD_GO_IDLE_STATE, 0);
+
sdcp->state = SDC_ACTIVE;
return FALSE;
}
diff --git a/testhal/STM32/SDIO/main.c b/testhal/STM32/SDIO/main.c
index 3194921f4..44a294655 100644
--- a/testhal/STM32/SDIO/main.c
+++ b/testhal/STM32/SDIO/main.c
@@ -47,6 +47,7 @@ int main(void) {
* Initializes the SDIO drivers.
*/
sdcStart(&SDCD1, &sdccfg);
+ sdcConnect(&SDCD1);
/*
* Normal main() thread activity.