From d108fc9c4793e1846b2ddfad925fb17bbc44cd51 Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 30 Aug 2022 11:18:08 +1000 Subject: [PATCH] esp32/machine_sdcard: Free SPI bus when deiniting SD card. So that everything is reset and the SD card can be created again after calling SDCard.deinit() (and after a soft reset). Fixes issue #8949. Signed-off-by: Damien George --- ports/esp32/machine_sdcard.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ports/esp32/machine_sdcard.c b/ports/esp32/machine_sdcard.c index 82c2e6cd4e..3f94356adb 100644 --- a/ports/esp32/machine_sdcard.c +++ b/ports/esp32/machine_sdcard.c @@ -283,6 +283,10 @@ STATIC mp_obj_t sd_deinit(mp_obj_t self_in) { { self->host.deinit(); } + if (self->host.flags & SDMMC_HOST_FLAG_SPI) { + // SD card used a (dedicated) SPI bus, so free that SPI bus. + spi_bus_free(self->host.slot); + } self->flags &= ~SDCARD_CARD_FLAGS_HOST_INIT_DONE; }