From a43ac717f550a166d27ca4cf21c941e43a8fc8e0 Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Tue, 15 Feb 2022 21:35:03 +1000 Subject: [PATCH] Fix SD hotswap regression --- src/firmware/bsp_driver_sd.c | 6 ++++++ src/firmware/sd.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/firmware/bsp_driver_sd.c b/src/firmware/bsp_driver_sd.c index 51f04718..b08ee418 100755 --- a/src/firmware/bsp_driver_sd.c +++ b/src/firmware/bsp_driver_sd.c @@ -56,6 +56,12 @@ uint8_t BSP_SD_Init(void) { return MSD_ERROR; } + + // Reset defaults. High-speed mode can be incorrectly set if user removed then + // inserted a new SD card and we re-run initialisation. + hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; + hsd.Init.BusWide = SDIO_BUS_WIDE_1B; + SD_state = HAL_SD_Init(&hsd); #ifdef BUS_4BITS if (SD_state == HAL_OK) diff --git a/src/firmware/sd.c b/src/firmware/sd.c index d717fb25..33c6371f 100755 --- a/src/firmware/sd.c +++ b/src/firmware/sd.c @@ -233,7 +233,7 @@ int sdInit() // power on if (!firstInit) { - for (int i = 0; cs && i < 50; ++i) + for (int i = 0; cs && (i < 50); ++i) { cs = HAL_GPIO_ReadPin(nSD_CD_GPIO_Port, nSD_CD_Pin) ? 0 : 1; s2s_delay_ms(5); -- 2.38.5