diff options
Diffstat (limited to 'firmware/target/arm/imx233/ssp-imx233.c')
-rw-r--r-- | firmware/target/arm/imx233/ssp-imx233.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/ssp-imx233.c b/firmware/target/arm/imx233/ssp-imx233.c index ef137fcfbf..59405bbdc2 100644 --- a/firmware/target/arm/imx233/ssp-imx233.c +++ b/firmware/target/arm/imx233/ssp-imx233.c | |||
@@ -258,6 +258,7 @@ enum imx233_ssp_error_t imx233_ssp_sd_mmc_transfer(int ssp, uint8_t cmd, | |||
258 | (3 << HW_APB_CHx_CMD__CMDWORDS_BP) | | 258 | (3 << HW_APB_CHx_CMD__CMDWORDS_BP) | |
259 | (xfer_size << HW_APB_CHx_CMD__XFER_COUNT_BP); | 259 | (xfer_size << HW_APB_CHx_CMD__XFER_COUNT_BP); |
260 | 260 | ||
261 | __REG_CLR(HW_SSP_CTRL1(ssp)) = HW_SSP_CTRL1__ALL_IRQ; | ||
261 | imx233_dma_reset_channel(APB_SSP(ssp)); | 262 | imx233_dma_reset_channel(APB_SSP(ssp)); |
262 | imx233_dma_start_command(APB_SSP(ssp), &ssp_dma_cmd[ssp - 1].dma); | 263 | imx233_dma_start_command(APB_SSP(ssp), &ssp_dma_cmd[ssp - 1].dma); |
263 | 264 | ||
@@ -266,7 +267,10 @@ enum imx233_ssp_error_t imx233_ssp_sd_mmc_transfer(int ssp, uint8_t cmd, | |||
266 | enum imx233_ssp_error_t ret; | 267 | enum imx233_ssp_error_t ret; |
267 | 268 | ||
268 | if(semaphore_wait(&ssp_sema[ssp - 1], HZ) == OBJ_WAIT_TIMEDOUT) | 269 | if(semaphore_wait(&ssp_sema[ssp - 1], HZ) == OBJ_WAIT_TIMEDOUT) |
270 | { | ||
271 | imx233_dma_reset_channel(APB_SSP(ssp)); | ||
269 | ret = SSP_TIMEOUT; | 272 | ret = SSP_TIMEOUT; |
273 | } | ||
270 | else if((HW_SSP_CTRL1(ssp) & HW_SSP_CTRL1__ALL_IRQ) == 0) | 274 | else if((HW_SSP_CTRL1(ssp) & HW_SSP_CTRL1__ALL_IRQ) == 0) |
271 | ret = SSP_SUCCESS; | 275 | ret = SSP_SUCCESS; |
272 | else if(HW_SSP_CTRL1(ssp) & (HW_SSP_CTRL1__RESP_TIMEOUT_IRQ | | 276 | else if(HW_SSP_CTRL1(ssp) & (HW_SSP_CTRL1__RESP_TIMEOUT_IRQ | |