Re: [PATCH] ASoC: amd: acp: Add DMI quirk for Valve Steam Deck OLED
From: Cristian Ciocaltea
Date: Tue Apr 21 2026 - 16:19:20 EST
Hi Guilherme,
On 4/21/26 10:17 PM, Guilherme G. Piccoli wrote:
> Commit 671dd2ffbd8b ("ASoC: amd: acp: Add new cpu dai and dailink creation for I2S BT instance")
> introduced a change that "broke" Steam Deck's audio probe, in the OLED
> model, as observed in the following dmesg snippet:
>
> [...]
> snd_sof_amd_vangogh 0000:04:00.5: Topology: ABI 3:26:0 Kernel ABI 3:23:1
> sof_mach nau8821-max: ASoC: physical link acp-bt-codec (id 2) not exist
> sof_mach nau8821-max: ASoC: topology: could not load header: -22
> snd_sof_amd_vangogh 0000:04:00.5: tplg amd/sof-tplg/sof-vangogh-nau8821-max.tplg component load failed -22
> snd_sof_amd_vangogh 0000:04:00.5: error: failed to load DSP topology -22
> snd_sof_amd_vangogh 0000:04:00.5: ASoC error (-22): at snd_soc_component_probe() on 0000:04:00.5
> sof_mach nau8821-max: ASoC: failed to instantiate card -22
> sof_mach nau8821-max: error -EINVAL: Failed to register card(sof-nau8821-max)
> sof_mach nau8821-max: probe with driver sof_mach failed with error -22
> [...]
>
> Notice the quotes in "broke": it's not really a bug in such commit,
> but instead a problem with a topology file from Steam Deck OLED. This
> was discussed to great extent in [1], and Cristian proposed a pretty
> simple and functional change that resolved the issue for the Deck's
> issue. That change, though, would break other devices, so it wasn't
> accepted upstream. And the proper suggested solution (fix the topology)
> was never implemented, so Valve's kernel (and anyone that wants to boot
> the mainline on Steam Deck OLED) is carrying that fix downstream.
>
> So, we propose hereby a different approach: a DMI quirk, as many already
> present in the sound drivers, to address this issue solely on Steam Deck
> OLED, not breaking other devices and as a bonus, allowing simple patch
> up in case eventually the topology file gets fixed (we'd just need to
> check against any DMI info reflecting that or the topology/FW versions).
>
> The motivation of such upstream quirk is related to users that want
> to test latest kernel trees on their devices and get no only non-working
> sound device, but seems some games (like Ori and the Blind Forest)
> can't properly work without a proper functional audio device.
> Example of such report can be seen at [2].
[...]
> diff --git a/sound/soc/amd/acp/acp-mach.h b/sound/soc/amd/acp/acp-mach.h
> index f94c30c20f20..edf5e479afd4 100644
> --- a/sound/soc/amd/acp/acp-mach.h
> +++ b/sound/soc/amd/acp/acp-mach.h
> @@ -26,6 +26,10 @@
>
> #define acp_get_drvdata(card) ((struct acp_card_drvdata *)(card)->drvdata)
>
> +/* List of DMI quirks - check acp-mach-common.c for usage. */
> +#define TDM_MODE_ENABLE 1
> +#define REMAP_DMIC_BT 2
Since the list of quirks may grow over time, it might be worth differentiating
these macros from the common ones — either by adding a `QUIRK_` prefix (or
similar), or better yet, turning them into an enum?!
Regardless,
Reviewed-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>