sdmmc: fix speed mode extension, add CheckMmcConnection for debug

This commit is contained in:
Michael Scire 2020-10-25 21:57:37 -07:00
parent b2f4e0c1b4
commit 9a41e19004
4 changed files with 17 additions and 2 deletions

View file

@ -73,8 +73,18 @@ namespace ams::sdmmc_test {
DEBUG[0] = 5;
CheckResult(result);
/* Get the connection status. */
sdmmc::SpeedMode speed_mode;
sdmmc::BusWidth bus_width;
result = sdmmc::CheckMmcConnection(std::addressof(speed_mode), std::addressof(bus_width), Port);
/* Save status for debug. */
DEBUG[0] = 6;
DEBUG[1] = result.GetValue();
DEBUG[2] = static_cast<u32>(speed_mode);
DEBUG[3] = static_cast<u32>(bus_width);
/* Perform a reboot. */
DEBUG[1] = 0;
PmcMainReboot();
}

View file

@ -38,5 +38,6 @@ namespace ams::sdmmc {
Result GetMmcBootPartitionCapacity(u32 *out_num_sectors, Port port);
Result GetMmcExtendedCsd(void *out_buffer, size_t buffer_size, Port port);
Result CheckMmcConnection(SpeedMode *out_speed_mode, BusWidth *out_bus_width, Port port);
}

View file

@ -65,7 +65,7 @@ namespace ams::sdmmc::impl {
return (ext_csd[163] & (1u << 1)) != 0;
}
constexpr bool GetDeviceType(const u8 *ext_csd) {
constexpr u8 GetDeviceType(const u8 *ext_csd) {
/* Get the DEVICE_TYPE register. */
AMS_ABORT_UNLESS(ext_csd != nullptr);
return ext_csd[196];

View file

@ -66,4 +66,8 @@ namespace ams::sdmmc {
return GetMmcDeviceAccessor(port)->GetMmcExtendedCsd(out_buffer, buffer_size);
}
Result CheckMmcConnection(SpeedMode *out_speed_mode, BusWidth *out_bus_width, Port port) {
return GetMmcDeviceAccessor(port)->CheckConnection(out_speed_mode, out_bus_width);
}
}