From 80788154b31c6097fd152e6e2e971319e8e3da1e Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Wed, 28 Apr 2021 21:32:57 +0200 Subject: [PATCH] stm32/sdio: Add functions to re/enable SDIO/SDIOIT. --- ports/stm32/sdio.c | 15 +++++++++++++++ ports/stm32/sdio.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/ports/stm32/sdio.c b/ports/stm32/sdio.c index 87f550e3a6..3ebd4947f4 100644 --- a/ports/stm32/sdio.c +++ b/ports/stm32/sdio.c @@ -93,6 +93,21 @@ void sdio_deinit(void) { #endif } +void sdio_reenable(void) { + if (__HAL_RCC_SDMMC1_IS_CLK_DISABLED()) { + __HAL_RCC_SDMMC1_CLK_ENABLE(); // enable SDIO peripheral + sdio_enable_high_speed_4bit(); + } +} + +void sdio_enable_irq(bool enable) { + if (enable) { + SDMMC1->MASK |= SDMMC_MASK_SDIOITIE; + } else { + SDMMC1->MASK &= ~SDMMC_MASK_SDIOITIE; + } +} + void sdio_enable_high_speed_4bit(void) { SDMMC_TypeDef *SDIO = SDMMC1; SDIO->POWER = 0; // power off diff --git a/ports/stm32/sdio.h b/ports/stm32/sdio.h index e7115e6f80..7cbf024ca8 100644 --- a/ports/stm32/sdio.h +++ b/ports/stm32/sdio.h @@ -31,6 +31,8 @@ void sdio_init(uint32_t irq_pri); void sdio_deinit(void); +void sdio_reenable(void); +void sdio_enable_irq(bool enable); void sdio_enable_high_speed_4bit(void); int sdio_transfer(uint32_t cmd, uint32_t arg, uint32_t *resp); int sdio_transfer_cmd53(bool write, uint32_t block_size, uint32_t arg, size_t len, uint8_t *buf);