From: Cezary Rojewski <cezary.rojewski@intel.com>
To: linux-sound@vger.kernel.org
Cc: broonie@kernel.org, tiwai@suse.com, perex@perex.cz,
amade@asmblr.net, linux-kernel@vger.kernel.org,
pierre-louis.bossart@linux.dev, vkoul@kernel.org,
yung-chuan.liao@linux.intel.com,
Cezary Rojewski <cezary.rojewski@intel.com>
Subject: [PATCH v2 0/7] ASoC: Intel: avs: Soundwire support
Date: Tue, 3 Nov 2026 14:49:51 +0100 [thread overview]
Message-ID: <20261103134958.2089136-1-cezary.rojewski@intel.com> (raw)
The RaptorLake-P and RaptorLake-M based platform used in Automotive area
do utilize SoundWire for streaming audio. This patchset brings such
support to the public domain.
If possible, I'd like the changes to go through Mark's tree.
As the patchset updates drivers/soundwire, I've decided to strip it off
any machine-boards and have here just the changes done to the main
soundwire driver and their user/usage. Machine boards for RPL-P/M will
follow in a separate set and do not touch drivers/soundwire stuff.
The reasoning behind modyfing the soundwire code:
Typically dai->startup() is responsible for checking if all the required
resources are available whereas dai->hw_params() is responsible for
configuring such resources. Existing code does the PDI assignment and
its configuration within one function - intel_hw_params(). The logical
split is not possible. The change provides functions that represent
such logical blocks: assign, release and config. Such division exists
already for the HDAudio interface, see sound/hda/core/stream.c
For the user i.e.: avs-driver (sound/soc/intel/avs) it also makes the
code very cohesive - aligns with that's done on the HDAudio side as all
the HDAudio streams are assignment during dai->startup() and configured
with dai->hw_params().
Also, the existing code fetches the PDIs based on pre-defined "dai_id".
That's not the case for the avs-driver. It simply asks: "is any PDI
free?" and assigns it for the substream if one is found.
No predefining. Again, this aligns with how HDAudio streaming is done.
avs-driver -only patches follow the three soundwire ones. First, they
extend the existing code so it can accommodate SDW interface. With that
done, laverage existing PCM code (sound/soc/intel/avs/pcm.c) and
soundwire-intel to implement DAI operations.
Changes in v2:
- dropped duplicate headers as pointed by Amadeusz
- fixed PDI initialization for ace2x as pointed by Bard. This is done by
introducing ->init_pdis() ops and calling it just before
->register_dais(). The body of the ops is 1:1 with the existing PDI
initialization code
- fixed the error path if init_pdis() fails, as pointed by Bard
- fixed Amadeusz' email for all the headers
A number of changes pointed by Sashiko:
- fixed compilation when CONFIG_SND_SOC_INTEL_AVS=y and
CONFIG_SOUNDWIRE_INTEL=m. This is done with help of new kconfig:
SND_SOC_INTEL_AVS_SOUNDWIRE
- added missing kernel docs
- avs_sdw_dai_trigger()/prepare() now rollback sdw_stream state if DSP
operations fail
- avs_sdw_dai_shutdown() now NULLs the sdw_stream context
- wanted to reserve this for later but since the bot pointed this out,
updated hw_params(), hw_free() and prepare() to accommodate for
suspend/resume scenario with a SDW stream
- sdw_intel_acpi_scan() now returns -ENODEV if the library is disabled
(previously returned 0)
- avs_sdw_probe() now exits early if the link_mask is 0
- disabled SDW probing for avs-driver on ACE2+ platforms
Cezary Rojewski (7):
soundwire: intel: Define stubs when library is disabled
soundwire: intel: Allow for dynamic assignment of PDIs
soundwire: intel: Split PDIs and DAIs initialization
ASoC: Intel: avs: Pass irq to dsp_interrupt callback
ASoC: Intel: avs: SoundWire support
ASoC: Intel: avs: Expose common PCM functions
ASoC: Intel: avs: SoundWire PCM BE operations
drivers/soundwire/cadence_master.c | 65 ++++++
drivers/soundwire/cadence_master.h | 25 +--
drivers/soundwire/intel.c | 41 +++-
drivers/soundwire/intel.h | 10 +-
drivers/soundwire/intel_ace2x.c | 25 ++-
drivers/soundwire/intel_auxdevice.c | 4 +
include/linux/soundwire/sdw_cadence.h | 35 ++++
include/linux/soundwire/sdw_intel.h | 45 +++-
sound/hda/core/Kconfig | 2 +-
sound/hda/core/Makefile | 3 +
sound/soc/intel/Kconfig | 8 +
sound/soc/intel/avs/Makefile | 4 +
sound/soc/intel/avs/apl.c | 2 +-
sound/soc/intel/avs/avs.h | 15 +-
sound/soc/intel/avs/cnl.c | 25 ++-
sound/soc/intel/avs/core.c | 22 +-
sound/soc/intel/avs/loader.c | 3 +
sound/soc/intel/avs/messages.h | 2 +
sound/soc/intel/avs/mtl.c | 2 +-
sound/soc/intel/avs/path.c | 2 +
sound/soc/intel/avs/pcm.c | 42 +---
sound/soc/intel/avs/pcm.h | 50 +++++
sound/soc/intel/avs/pcm_sdw.c | 289 ++++++++++++++++++++++++++
sound/soc/intel/avs/registers.h | 4 +
sound/soc/intel/avs/skl.c | 2 +-
sound/soc/intel/avs/soundwire.c | 117 +++++++++++
sound/soc/intel/avs/soundwire.h | 63 ++++++
27 files changed, 816 insertions(+), 91 deletions(-)
create mode 100644 include/linux/soundwire/sdw_cadence.h
create mode 100644 sound/soc/intel/avs/pcm_sdw.c
create mode 100644 sound/soc/intel/avs/soundwire.c
create mode 100644 sound/soc/intel/avs/soundwire.h
--
2.34.1
next reply other threads:[~2026-11-03 13:43 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 13:49 Cezary Rojewski [this message]
2026-11-03 13:49 ` [PATCH v2 1/7] soundwire: intel: Define stubs when library is disabled Cezary Rojewski
2026-11-03 13:49 ` [PATCH v2 2/7] soundwire: intel: Allow for dynamic assignment of PDIs Cezary Rojewski
2026-11-03 13:49 ` [PATCH v2 3/7] soundwire: intel: Split PDIs and DAIs initialization Cezary Rojewski
2026-11-03 13:49 ` [PATCH v2 4/7] ASoC: Intel: avs: Pass irq to dsp_interrupt callback Cezary Rojewski
2026-11-03 13:49 ` [PATCH v2 5/7] ASoC: Intel: avs: SoundWire support Cezary Rojewski
2026-11-03 13:49 ` [PATCH v2 6/7] ASoC: Intel: avs: Expose common PCM functions Cezary Rojewski
2026-11-03 13:49 ` [PATCH v2 7/7] ASoC: Intel: avs: SoundWire PCM BE operations Cezary Rojewski
2026-11-03 17:20 ` [PATCH v2 0/7] ASoC: Intel: avs: Soundwire support Pierre-Louis Bossart
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=20261103134958.2089136-1-cezary.rojewski@intel.com \
--to=cezary.rojewski@intel.com \
--cc=amade@asmblr.net \
--cc=broonie@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=pierre-louis.bossart@linux.dev \
--cc=tiwai@suse.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®