summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorheyuanjie87 <[email protected]>2024-08-29 06:33:50 +0800
committerGitHub <[email protected]>2024-08-28 18:33:50 -0400
commitb3fbddda80c13f048fbf27c3c8a5489dd8cc6e60 (patch)
treef5728d9890acd099eaec6ef94c2f3fc9d1a14b1f /bsp
parent4f10d05a5b0c4bd3bd53545e5fff1e05da4729cc (diff)
[bsp/cvitek]修正sdhci发送命令超时后触发两次信号量的问题
修正命令超时后触发两次信号量的问题 详解: 中断状态寄存器的BIT0仅表示sdhci处理命令完成,完成结果由其它位指示,当出错时 BIT0也会值1产生中断 Signed-off-by: heyuanjie87 <[email protected]>
Diffstat (limited to 'bsp')
-rw-r--r--bsp/cvitek/drivers/drv_sdhci.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bsp/cvitek/drivers/drv_sdhci.c b/bsp/cvitek/drivers/drv_sdhci.c
index 14ed7214d1..dd7ae14086 100644
--- a/bsp/cvitek/drivers/drv_sdhci.c
+++ b/bsp/cvitek/drivers/drv_sdhci.c
@@ -403,7 +403,6 @@ static void sdhci_cmd_irq(struct rthw_sdhci *sdhci, uint32_t intmask)
if (intmask & SDIF_INT_RESPONSE)
{
- sdhci->cmd_error = RT_EOK;
if (sdhci->response_type == RESP_R2)
{
/* CRC is stripped so we need to do some shifting. */
@@ -419,6 +418,8 @@ static void sdhci_cmd_irq(struct rthw_sdhci *sdhci, uint32_t intmask)
sdhci->response[0] = mmio_read_32(BASE + SDIF_RESPONSE_01);
LOG_D("sdhci->response: [%08x]", sdhci->response[0]);
}
+
+ rt_sem_release(sdhci->sem_cmd);
}
}
@@ -486,7 +487,6 @@ static void sdhci_transfer_handle_irq(int irqno, void *param)
if (intmask & SDIF_INT_CMD_MASK)
{
sdhci_cmd_irq(sdhci, intmask & SDIF_INT_CMD_MASK);
- rt_sem_release(sdhci->sem_cmd);
}
if (intmask & SDIF_INT_DMA_END)