aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2011-05-08 05:58:29 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2011-05-08 05:58:29 +0000
commita8ea499b27805ce5fa109f64cfff073c9b077f3b (patch)
tree7697123a5a5ba8700ecbaf9b434a5e89b65edacf
parent9963cfac608cbe53e03339847a34318f637e6530 (diff)
downloadChibiOS-a8ea499b27805ce5fa109f64cfff073c9b077f3b.tar.gz
ChibiOS-a8ea499b27805ce5fa109f64cfff073c9b077f3b.tar.bz2
ChibiOS-a8ea499b27805ce5fa109f64cfff073c9b077f3b.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2927 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r--os/hal/platforms/STM32/sdc_lld.c9
-rw-r--r--os/hal/src/sdc.c1
2 files changed, 5 insertions, 5 deletions
diff --git a/os/hal/platforms/STM32/sdc_lld.c b/os/hal/platforms/STM32/sdc_lld.c
index 1697c2964..8afb41509 100644
--- a/os/hal/platforms/STM32/sdc_lld.c
+++ b/os/hal/platforms/STM32/sdc_lld.c
@@ -344,7 +344,7 @@ bool_t sdc_lld_read(SDCDriver *sdcp, uint32_t startblk,
SDIO->ICR = 0xFFFFFFFF;
SDIO->MASK = SDIO_MASK_DCRCFAILIE | SDIO_MASK_DTIMEOUTIE |
SDIO_MASK_DATAENDIE | SDIO_MASK_STBITERRIE;
- SDIO->DLEN = n;
+ SDIO->DLEN = n * SDC_BLOCK_SIZE;
SDIO->DCTRL = SDIO_DCTRL_RWMOD |
SDIO_DCTRL_DBLOCKSIZE_3 | SDIO_DCTRL_DBLOCKSIZE_3 |
SDIO_DCTRL_DMAEN |
@@ -353,14 +353,15 @@ bool_t sdc_lld_read(SDCDriver *sdcp, uint32_t startblk,
/* DMA channel activation.*/
dmaEnableChannel(STM32_DMA2, STM32_DMA_CHANNEL_4);
- if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_READ_MULTIPLE_BLOCK, n, resp) ||
+ if (sdc_lld_send_cmd_short_crc(sdcp, SDC_CMD_READ_MULTIPLE_BLOCK,
+ startblk, resp) ||
(resp[0] & SDC_R1_ERROR_MASK))
goto error;
chSysLock();
sta = SDIO->STA;
- if ((sta & SDIO_STA_DCRCFAIL | SDIO_STA_DTIMEOUT |
- SDIO_STA_DATAEND | SDIO_STA_STBITERR) == 0) {
+ if ((sta & (SDIO_STA_DCRCFAIL | SDIO_STA_DTIMEOUT |
+ SDIO_STA_DATAEND | SDIO_STA_STBITERR)) == 0) {
chDbgAssert(sdcp->thread == NULL, "sdc_lld_read_blocks(), #1", "not NULL");
sdcp->thread = chThdSelf();
chSchGoSleepS(THD_STATE_SUSPENDED);
diff --git a/os/hal/src/sdc.c b/os/hal/src/sdc.c
index 25fe6a259..3af421254 100644
--- a/os/hal/src/sdc.c
+++ b/os/hal/src/sdc.c
@@ -268,7 +268,6 @@ bool_t sdcDisconnect(SDCDriver *sdcp) {
bool_t sdcRead(SDCDriver *sdcp, uint32_t startblk,
uint8_t *buf, uint32_t n) {
bool_t sts;
- uint32_t resp[4];
chDbgCheck((sdcp != NULL) && (buf != NULL) && (n > 0), "sdcRead");