fusee: tactically don't trash PLLA1, fixes audio corruption on boot

This commit is contained in:
Michael Scire 2021-09-05 12:44:52 -07:00 committed by SciresM
parent a8f898b591
commit b7521465ee
3 changed files with 6 additions and 2 deletions

View file

@ -59,6 +59,10 @@ namespace ams::nxboot {
} }
void DoMbistWorkaround() { void DoMbistWorkaround() {
/* Enable AHUB/APE clock prior to I2S accesses. */
reg::ReadWrite(CLKRST + CLK_RST_CONTROLLER_CLK_OUT_ENB_V, CLK_RST_REG_BITS_ENUM(CLK_ENB_V_CLK_ENB_AHUB, ENABLE));
reg::ReadWrite(CLKRST + CLK_RST_CONTROLLER_CLK_OUT_ENB_Y, CLK_RST_REG_BITS_ENUM(CLK_ENB_Y_CLK_ENB_APE, ENABLE));
/* Configure CLK_RST_CONTROLLER_CLK_SOURCE_SOR1. */ /* Configure CLK_RST_CONTROLLER_CLK_SOURCE_SOR1. */
reg::ReadWrite(CLKRST + CLK_RST_CONTROLLER_CLK_SOURCE_SOR1, CLK_RST_REG_BITS_ENUM(CLK_SOURCE_SOR1_SOR1_CLK_SEL0, MUX), reg::ReadWrite(CLKRST + CLK_RST_CONTROLLER_CLK_SOURCE_SOR1, CLK_RST_REG_BITS_ENUM(CLK_SOURCE_SOR1_SOR1_CLK_SEL0, MUX),
CLK_RST_REG_BITS_ENUM(CLK_SOURCE_SOR1_SOR1_CLK_SEL1, SOR1_CLOCK_SWITCH)); CLK_RST_REG_BITS_ENUM(CLK_SOURCE_SOR1_SOR1_CLK_SEL1, SOR1_CLOCK_SWITCH));

View file

@ -230,7 +230,7 @@ DEFINE_CLK_RST_REG_BIT_ENUM(PLLMB_BASE_PLLMB_ENABLE, 30, DISABLE, ENABLE);
#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_DLL (0x664) #define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_DLL (0x664)
#define CLK_RST_CONTROLLER_CLK_SOURCE_UART_FST_MIPI_CAL (0x66C) #define CLK_RST_CONTROLLER_CLK_SOURCE_UART_FST_MIPI_CAL (0x66C)
#define CLK_RST_CONTROLLER_CLK_SOURCE_SDMMC_LEGACY_TM (0x694) #define CLK_RST_CONTROLLER_CLK_SOURCE_SDMMC_LEGACY_TM (0x694)
#define CLK_RST_CONTROLLER_CLK_SOURCE_NVENC (0x6A4) #define CLK_RST_CONTROLLER_CLK_SOURCE_NVENC (0x6A0)
#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_SAFE (0x724) #define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_SAFE (0x724)
/* RST_DEV_*_SET */ /* RST_DEV_*_SET */
@ -451,6 +451,7 @@ DEFINE_CLK_RST_REG_BIT_ENUM(RST_CPUG_CMPLX_CLR_CLR_PRESETDBG, 30, DISABLE, ENA
HANDLER(U, CRAM2, 2, 24) \ HANDLER(U, CRAM2, 2, 24) \
HANDLER(V, CPUG, 3, 0) \ HANDLER(V, CPUG, 3, 0) \
HANDLER(V, MSELECT, 3, 3) \ HANDLER(V, MSELECT, 3, 3) \
HANDLER(V, AHUB, 3, 10) \
HANDLER(V, APB2APE, 3, 11) \ HANDLER(V, APB2APE, 3, 11) \
HANDLER(V, SPDIF_DOUBLER, 3, 22) \ HANDLER(V, SPDIF_DOUBLER, 3, 22) \
HANDLER(V, ACTMON, 3, 23) \ HANDLER(V, ACTMON, 3, 23) \

View file

@ -234,7 +234,6 @@ namespace ams::fatal::srv {
font::PrintFormatLine( "Program: %016lX", static_cast<u64>(this->context->program_id)); font::PrintFormatLine( "Program: %016lX", static_cast<u64>(this->context->program_id));
font::AddSpacingLines(0.5f); font::AddSpacingLines(0.5f);
/* TODO: Remove Mesosphere identifier in 1.0.0. */
font::PrintFormatLine("Firmware: %s (Atmosphère %u.%u.%u-%s)", config.GetFirmwareVersion().display_version, ATMOSPHERE_RELEASE_VERSION, ams::GetGitRevision()); font::PrintFormatLine("Firmware: %s (Atmosphère %u.%u.%u-%s)", config.GetFirmwareVersion().display_version, ATMOSPHERE_RELEASE_VERSION, ams::GetGitRevision());
font::AddSpacingLines(1.5f); font::AddSpacingLines(1.5f);
if (!exosphere::ResultVersionMismatch::Includes(this->context->result)) { if (!exosphere::ResultVersionMismatch::Includes(this->context->result)) {