[PATCH 00/11] ASoC: SOF: amd: SoundWire and PDM support and fixes for ACP7.B/7.F

From: Vijendar Mukunda

Date: Thu Sep 10 2026 - 09:26:34 EST


This series contains bug fixes for the existing AMD SOF SoundWire stack
that affect all ACP platforms, followed by new SoundWire support
specifically for ACP7.B and ACP7.F.

The existing stack has three bugs that are fixed here. First,
amd_sof_acp7x_suspend() silently falls through on an unrecognised PCI
revision instead of returning an error, leaving ACP_CONTROL with a stale
value; it now returns -EINVAL. Second, amd_sof_acp_remove() calls
amd_sof_sdw_exit() before free_irq(), so an IRQ that fires in that window
can dereference the freed SoundWire context; the teardown order is
corrected. Third, the same use-after-free hazard exists in the error
unwind of amd_sof_acp_probe() and is fixed in the same way.

On top of those fixes, the series brings SoundWire support to ACP7.B/7.F.
These platforms expose four SoundWire manager instances (SDW0-SDW3) rather
than the two found on ACP63/ACP70/ACP71/ACP72. The work covers ACPI DSDT
scanning for SoundWire endpoints, chip descriptor population so the SOF
core can enumerate all four managers, per-manager IRQ dispatch for data,
host-wake, PME and error events, selective host-wake interrupt arming based
on SW_WAKE_EN, and SoundWire-aware PM callbacks that take a clock-stop fast
path through suspend/resume to preserve SoundWire bus state across power
transitions.

ACP7.B/7.F also supports two PDM controllers (PDM0 and PDM1), but only
one is active at a time. The active controller is determined at probe time
by scanning the acp-audio-ep-port ACPI _DSD property of the PDM child
device in the DSDT. The selected controller is then propagated to the
machine driver via mach->pdata so that the correct SOF DMIC DAI link is
registered.

Vijendar Mukunda (11):
ASoC: SOF: amd: return -EINVAL for unknown PCI revision in acp7x
suspend
ASoC: SOF: amd: fix amd_sof_acp_remove() teardown ordering
ASoC: SOF: amd: fix amd_sof_acp_probe() error unwind ordering
ASoC: SOF: amd: add ACP7.B/7.F PDM controller scan and pdata
propagation
ASoC: SOF: amd: update SoundWire specific acp descriptor fields for
ACP7.B/7.F
ASoC: SOF: amd: enable SoundWire build for ACP7.B/7.F
ASoC: SOF: amd: wire SoundWire probe and remove into ACP7.B/7.F paths
ASoC: SOF: amd: add ACP7.B/7.F clock-stop detection in
check_acp_sdw_enable_status
ASoC: SOF: amd: add ACP7.B/7.F SoundWire IO IRQ handling
ASoC: SOF: amd: enable SoundWire host wake interrupt in acp_init
ASoC: SOF: amd: add SoundWire PM ops for ACP7.B/7.F

sound/soc/amd/acp/soc_amd_sdw_common.h | 13 +
sound/soc/sof/amd/Kconfig | 1 +
sound/soc/sof/amd/acp-common.c | 17 ++
sound/soc/sof/amd/acp-dsp-offset.h | 17 ++
sound/soc/sof/amd/acp.c | 389 +++++++++++++++++++++++--
sound/soc/sof/amd/acp.h | 16 +
sound/soc/sof/amd/acp7x.h | 37 +++
sound/soc/sof/amd/pci-acp7x.c | 2 +
8 files changed, 460 insertions(+), 32 deletions(-)
create mode 100644 sound/soc/sof/amd/acp7x.h

--
2.48.1