Commit 0e789b491ba0 ("pmdomain: core: Leave powered-on genpds on until sync_state") made genpd trust that a power domain already on at probe time is correctly, fully initialized, and stopped forcing a real power-off/power-on cycle for it until the devicetree provider's sync_state() callback fires. On the Juniper board (Acer Chromebook Spin 311, MT8183), the firmware leaves the audio power domain in exactly this misleading state: genpd reports it as on, so this new behavior never runs the real hardware sequencing in scpsys_power_on() that clears the domain's AXI bus protection. Register access to the AFE block over APB keeps working normally, giving no obvious sign anything is wrong, but the memif DMA engine's own bus transactions silently never complete: its current- position register stays frozen at the value it was reset to, the period-elapsed interrupt is never raised, and ALSA playback fails with -EIO. The net effect is silent internal speakers on every boot. This is the same class of problem already fixed for the MFG/GPU domains in commit 818d56ac1d ("pmdomain: mediatek: Fix mt8183 hang on boot"), which does not cover the audio domain. Apply the identical, already-reviewed fix here: MTK_SCPD_KEEP_DEFAULT_OFF makes genpd start the domain in GENPD_STATE_OFF instead of trusting the bootloader's "on" state, so the AFE driver's own first pm_runtime resume triggers a genuine power-on transition and actually runs the bus-protection clear. Root-caused with a git bisect across released kernel versions on real Juniper hardware (audio works on v6.6, fails from v6.16 onward), narrowing the regression down to this exact commit, and confirmed fixed with speaker-test playback after applying this change. Fixes: 0e789b491ba0 ("pmdomain: core: Leave powered-on genpds on until sync_state") Cc: stable@vger.kernel.org Signed-off-by: Nils Büchner --- drivers/pmdomain/mediatek/mt8183-pm-domains.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/pmdomain/mediatek/mt8183-pm-domains.h b/drivers/pmdomain/mediatek/mt8183-pm-domains.h index 5e33b8628..8e29e5117 100644 --- a/drivers/pmdomain/mediatek/mt8183-pm-domains.h +++ b/drivers/pmdomain/mediatek/mt8183-pm-domains.h @@ -22,6 +22,15 @@ static const struct scpsys_domain_data scpsys_domain_data_mt8183[] = { .pwr_sta2nd_offs = 0x0184, .sram_pdn_bits = GENMASK(11, 8), .sram_pdn_ack_bits = GENMASK(15, 12), + /* + * Depending on firmware, the audio domain may be left + * partially on at boot, with genpd detecting it as on when + * it isn't fully initialized. Force a real off/on cycle + * instead of trusting that state, same as the MFG domains + * in commit 818d56ac1d ("pmdomain: mediatek: Fix mt8183 + * hang on boot"). + */ + .caps = MTK_SCPD_KEEP_DEFAULT_OFF, }, [MT8183_POWER_DOMAIN_CONN] = { .name = "conn", -- 2.53.0