From 8254e56b58e26a5c5f57545105a9cb07829db763 Mon Sep 17 00:00:00 2001 From: Christoph Baumann Date: Thu, 22 May 2025 13:34:20 +0200 Subject: [PATCH] fix MountSd check --- emummc/source/emuMMC/emummc.c | 17 +++++++++++++++-- fusee/program/source/fusee_main.cpp | 4 ++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/emummc/source/emuMMC/emummc.c b/emummc/source/emuMMC/emummc.c index 049f56c7b..73b29984c 100644 --- a/emummc/source/emuMMC/emummc.c +++ b/emummc/source/emuMMC/emummc.c @@ -1114,11 +1114,25 @@ uint64_t sdmmc_wrapper_controller_close(int mmc_id) { if (mmc_id == FS_SDMMC_SD) { - DEBUG_LOG("Controller Close SD\n"); + + if(custom_driver) + { + lock_mutex(sd_mutex); + } + lock_mutex(nand_mutex); + // Deinitializing/initializing file based emuSD every time SD is opened/closed // takes a long time. Instead, keep the files open and flush when SD is closed. // Will be finalized when eMMC is finalized _file_based_sd_flush(); + + unlock_mutex(nand_mutex); + if(custom_driver) + { + unlock_mutex(sd_mutex); + } + + DEBUG_LOG("Controller Close SD\n"); if(_get_target_device(FS_SDMMC_EMMC) != FS_SDMMC_SD){ // eMMC not redirected to SD, can close SD uint64_t ret =_this->vtab->sdmmc_accessor_controller_close(_this); @@ -1138,7 +1152,6 @@ uint64_t sdmmc_wrapper_controller_close(int mmc_id) // Close file handles and unmount DEBUG_LOG("Controller Close eMMC\n"); _file_based_emmc_finalize(); - _file_based_sd_finalize(); if(_get_target_device(FS_SDMMC_EMMC) == FS_SDMMC_SD) diff --git a/fusee/program/source/fusee_main.cpp b/fusee/program/source/fusee_main.cpp index 315eb0cf6..6e8f08fc5 100644 --- a/fusee/program/source/fusee_main.cpp +++ b/fusee/program/source/fusee_main.cpp @@ -88,8 +88,8 @@ namespace ams::nxboot { if (R_FAILED(r = InitializeSdCard())) { ShowFatalError("Failed to init SD card (0x%" PRIx32 ")!\n", r.GetValue()); } - if (R_FAILED(r = fs::MountSdCard())) { - ShowFatalError("Failed to mount SD card (0x%" PRIx32 ")!\n", r.GetValue()); + if (!fs::MountSdCard()) { + ShowFatalError("Failed to mount SD card!\n"); } if (R_FAILED(r = fs::ChangeDrive("sdmc:"))) { ShowFatalError("Failed to change drive (0x%" PRIx32 ")!\n", r.GetValue());