summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/ssp-imx233.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/ssp-imx233.c')
-rw-r--r--firmware/target/arm/imx233/ssp-imx233.c4
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 |