git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2927 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2011-05-08 05:58:29 +00:00
parent 9963cfac60
commit a8ea499b27
2 changed files with 5 additions and 5 deletions

View File

@ -344,7 +344,7 @@ bool_t sdc_lld_read(SDCDriver *sdcp, uint32_t startblk,
SDIO->ICR = 0xFFFFFFFF; SDIO->ICR = 0xFFFFFFFF;
SDIO->MASK = SDIO_MASK_DCRCFAILIE | SDIO_MASK_DTIMEOUTIE | SDIO->MASK = SDIO_MASK_DCRCFAILIE | SDIO_MASK_DTIMEOUTIE |
SDIO_MASK_DATAENDIE | SDIO_MASK_STBITERRIE; SDIO_MASK_DATAENDIE | SDIO_MASK_STBITERRIE;
SDIO->DLEN = n; SDIO->DLEN = n * SDC_BLOCK_SIZE;
SDIO->DCTRL = SDIO_DCTRL_RWMOD | SDIO->DCTRL = SDIO_DCTRL_RWMOD |
SDIO_DCTRL_DBLOCKSIZE_3 | SDIO_DCTRL_DBLOCKSIZE_3 | SDIO_DCTRL_DBLOCKSIZE_3 | SDIO_DCTRL_DBLOCKSIZE_3 |
SDIO_DCTRL_DMAEN | SDIO_DCTRL_DMAEN |
@ -353,14 +353,15 @@ bool_t sdc_lld_read(SDCDriver *sdcp, uint32_t startblk,
/* DMA channel activation.*/ /* DMA channel activation.*/
dmaEnableChannel(STM32_DMA2, STM32_DMA_CHANNEL_4); 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)) (resp[0] & SDC_R1_ERROR_MASK))
goto error; goto error;
chSysLock(); chSysLock();
sta = SDIO->STA; sta = SDIO->STA;
if ((sta & SDIO_STA_DCRCFAIL | SDIO_STA_DTIMEOUT | if ((sta & (SDIO_STA_DCRCFAIL | SDIO_STA_DTIMEOUT |
SDIO_STA_DATAEND | SDIO_STA_STBITERR) == 0) { SDIO_STA_DATAEND | SDIO_STA_STBITERR)) == 0) {
chDbgAssert(sdcp->thread == NULL, "sdc_lld_read_blocks(), #1", "not NULL"); chDbgAssert(sdcp->thread == NULL, "sdc_lld_read_blocks(), #1", "not NULL");
sdcp->thread = chThdSelf(); sdcp->thread = chThdSelf();
chSchGoSleepS(THD_STATE_SUSPENDED); chSchGoSleepS(THD_STATE_SUSPENDED);

View File

@ -268,7 +268,6 @@ bool_t sdcDisconnect(SDCDriver *sdcp) {
bool_t sdcRead(SDCDriver *sdcp, uint32_t startblk, bool_t sdcRead(SDCDriver *sdcp, uint32_t startblk,
uint8_t *buf, uint32_t n) { uint8_t *buf, uint32_t n) {
bool_t sts; bool_t sts;
uint32_t resp[4];
chDbgCheck((sdcp != NULL) && (buf != NULL) && (n > 0), "sdcRead"); chDbgCheck((sdcp != NULL) && (buf != NULL) && (n > 0), "sdcRead");