mirror of https://github.com/rusefi/ChibiOS.git
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2927 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
9963cfac60
commit
a8ea499b27
|
@ -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);
|
||||||
|
|
|
@ -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");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue