From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
To: <vkoul@kernel.org>
Cc: <broonie@kernel.org>, <yung-chuan.liao@linux.intel.com>,
<pierre-louis.bossart@linux.dev>, <Basavaraj.Hiregoudar@amd.com>,
<Sunil-kumar.Dommati@amd.com>, <venkataprasad.potturu@amd.com>,
<Syed.SabaKareem@amd.com>, <Mario.Limonciello@amd.com>,
<Poojitha.N@amd.com>, <sravisar@amd.com>, <Richard.Gong@amd.com>,
<linux-sound@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Subject: [PATCH 00/11] soundwire: amd: add ACP7B/7E/7F SoundWire manager support
Date: Sun, 8 Nov 2026 03:37:55 +0530 [thread overview]
Message-ID: <20261107220913.4058072-1-Vijendar.Mukunda@amd.com> (raw)
This series adds the first drop of SoundWire manager support for AMD
ACP7B, ACP7E, and ACP7F platforms. These revisions represent a
significant hardware evolution compared to the ACP7.0/7.1/7.2
generation:
- Up to four SoundWire manager instances (ACP_SDW0 through ACP_SDW3),
compared to two in earlier generations.
- Banked registers on the manager side for clock frequency and frame
shape parameters, enabling seamless transitions without bus
re-enumeration.
- Dynamic clock scaling with both fixed frame shape and dynamic frame
shape selection, enabling efficient bandwidth use across a wider
range of bus clock frequencies.
- Extended sample rate and bit-depth support (48/96/192 kHz,
S16/S24/S32) and a broader set of supported bus clock frequencies
compared to ACP7.0/7.1/7.2.
- Up to 22 DAIs per manager with 11 TX and 11 RX data ports and
8 TX and 8 RX DMA channels, compared to fewer ports and DMAs
in earlier generations.
- SSP synchronisation tag propagation per bus transfer, required by
the ACP7B/7E/7F hardware and absent in older revisions.
- Shared per-platform wake enable control across all manager instances
with software serialisation to prevent races between concurrent
managers during clock stop.
- Separate wake and bus-event IRQ paths, giving cleaner interrupt
handling compared to earlier generations.
- Per-revision IO pad pin assignments with hardware-required restore
order on D0 resume after power-off (ACP7B, ACP7E, and ACP7F each
have distinct physical SoundWire clock and data pin mappings).
- Custom bandwidth allocation with dynamic frame-shape selection
across candidate clock frequencies.
The new backend amd_acp7x_manager.c plugs into the hw_ops dispatch
framework introduced by the refactor series. It handles the full
driver lifecycle: IRQ handling and slave status processing, port
configuration, DAI PCM capability registration, host wake
enable/disable, clock-stop suspend and resume, and IO pad management.
Multi-manager synchronisation (GSYNC) is planned for a future series
once the required design work is complete; the existing implementation
is structured to accommodate it incrementally.
Two patches to generic_bandwidth_allocation.c are included: one
fixes the hwidth computation for the skipped block-offset slot
(a correctness fix relevant to any user of the generic algorithm),
and one exports the bandwidth helper functions needed by the new
ACP7x compute_params callback.
The interrupt_enabled guard used by ACP6.3/7.0/7.1/7.2 to prevent
new work from being queued during teardown is mirrored in the ACP7x
enable/disable and IRQ thread paths. The corresponding ASoC-side
patches that guard interrupt_enabled checks in the ACP7B/7E/7F IRQ
handler are not included in this series and will be posted separately.
Dependencies:
This series applies on top of the AMD SoundWire fix series (v5,
25 patches) and the AMD SoundWire refactor series (v3, 11 patches):
https://lore.kernel.org/linux-sound/20261107154659.3358223-1-Vijendar.Mukunda@amd.com/
https://lore.kernel.org/linux-sound/20261107161345.3411491-1-Vijendar.Mukunda@amd.com/
Vijendar Mukunda (11):
soundwire: amd: add ACP7B/7E/7F register definitions and revision IDs
soundwire: amd: add ACP7B/7E/7F hardware backend
soundwire: amd: extend ctl_word_prep to set SSP_TAG for ACP7B/7E/7F
soundwire: amd: add ACP7B/7E/7F DAI PCM capabilities in
register_dais()
soundwire: amd: enable host wake support for ACP7B/7E/7F
soundwire: amd: add ACP7B/7E/7F clock-stop support
soundwire: amd: add IO pad enable/disable for ACP7B/7E/7F D0/D3
sequence
soundwire: generic_bandwidth_allocation: fix hwidth for skipped block
offset
soundwire: generic_bandwidth_allocation: export bandwidth helper
functions
soundwire: amd: add ACP7x generic bandwidth allocation support
soundwire: amd: add interrupt_enabled synchronization for ACP7B/7E/7F
drivers/soundwire/Makefile | 2 +-
drivers/soundwire/amd_acp7x_manager.c | 1163 +++++++++++++++++
drivers/soundwire/amd_init.c | 365 +++++-
drivers/soundwire/amd_init.h | 13 +
drivers/soundwire/amd_manager.h | 297 +++++
drivers/soundwire/amd_manager_common.c | 130 +-
drivers/soundwire/bus.h | 10 +
.../soundwire/generic_bandwidth_allocation.c | 129 +-
include/linux/soundwire/sdw_amd.h | 28 +-
9 files changed, 2116 insertions(+), 21 deletions(-)
create mode 100644 drivers/soundwire/amd_acp7x_manager.c
--
2.53.0
next reply other threads:[~2026-11-07 22:10 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-07 22:07 Vijendar Mukunda [this message]
2026-11-07 22:07 ` [PATCH 01/11] soundwire: amd: add ACP7B/7E/7F register definitions and revision IDs Vijendar Mukunda
2026-11-07 22:07 ` [PATCH 02/11] soundwire: amd: add ACP7B/7E/7F hardware backend Vijendar Mukunda
2026-11-07 22:07 ` [PATCH 03/11] soundwire: amd: extend ctl_word_prep to set SSP_TAG for ACP7B/7E/7F Vijendar Mukunda
2026-11-07 22:07 ` [PATCH 04/11] soundwire: amd: add ACP7B/7E/7F DAI PCM capabilities in register_dais() Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 05/11] soundwire: amd: enable host wake support for ACP7B/7E/7F Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 06/11] soundwire: amd: add ACP7B/7E/7F clock-stop support Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 07/11] soundwire: amd: add IO pad enable/disable for ACP7B/7E/7F D0/D3 sequence Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 08/11] soundwire: generic_bandwidth_allocation: fix hwidth for skipped block offset Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 09/11] soundwire: generic_bandwidth_allocation: export bandwidth helper functions Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 10/11] soundwire: amd: add ACP7x generic bandwidth allocation support Vijendar Mukunda
2026-11-07 22:08 ` [PATCH 11/11] soundwire: amd: add interrupt_enabled synchronization for ACP7B/7E/7F Vijendar Mukunda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261107220913.4058072-1-Vijendar.Mukunda@amd.com \
--to=vijendar.mukunda@amd.com \
--cc=Basavaraj.Hiregoudar@amd.com \
--cc=Mario.Limonciello@amd.com \
--cc=Poojitha.N@amd.com \
--cc=Richard.Gong@amd.com \
--cc=Sunil-kumar.Dommati@amd.com \
--cc=Syed.SabaKareem@amd.com \
--cc=broonie@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=pierre-louis.bossart@linux.dev \
--cc=sravisar@amd.com \
--cc=venkataprasad.potturu@amd.com \
--cc=vkoul@kernel.org \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®