Rosen Penev and Mark Brown
d3d75c7676
ASoC: SOF: topology: use kzalloc_flex
...
Simplify allocation by using a flexible array member.
Add __counted_by for extra runtime analysis.
Signed-off-by: Rosen Penev <rosenp@gmail.com >
Link: https://patch.msgid.link/20260326023053.53493-1-rosenp@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2026-03-30 20:11:31 +01:00
Ben Dooks and Mark Brown
207fd1f4d8
ASoC: SOF: sof-audio: pcm_id is __le32
...
The pcm_id value is __le32 so convert it before passing to the dev_dbg
function to be printed. Also fixup some other uses of __le32 data and
a couple of places where %u should have been used instead of %d
Picked up by sparse prototype for variadic and printf
function checking. Fixes a large number of sparse warnings, such as:
sound/soc/sof/pcm.c:84:25: warning: incorrect type in argument 4 (different base types)
sound/soc/sof/pcm.c:84:25: expected unsigned int
sound/soc/sof/pcm.c:84:25: got restricted __le32 [usertype] pcm_id
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk >
Acked-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://patch.msgid.link/20260310125106.178944-1-ben.dooks@codethink.co.uk
Signed-off-by: Mark Brown <broonie@kernel.org >
2026-03-10 14:53:04 +00:00
Ranjani Sridharan and Mark Brown
15a55ec2f8
ASoC: SOF: ipc4-topology: Add new tokens for pipeline direction
...
Parse the pipeline direction from topology. The direction_valid token is
required for backward-compatibility with older topologies that may not
have the direction set for pipelines. This will be used when
setting up pipelines to check if a pipeline is in the same direction as
the requested params and skip those in the opposite direction like in
the case of echo reference capture pipelines during playback.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://patch.msgid.link/20260204081833.16630-6-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2026-02-04 13:26:05 +00:00
Ranjani Sridharan and Mark Brown
f462697680
ASoC: SOF: pcm: Split up widget prepare and setup
...
Widgets are set up in 2 steps, first ipc_prepare followed by the actual
IPC sent to the DSP to set up the widget. Split these 2 steps to do the
ipc_prepare during hw_params and the setting up in the prepare callback.
This will allow for future modifications to pipeline set up to be split
up between the FE and BE DAI prepare ops.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://patch.msgid.link/20260204081833.16630-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2026-02-04 13:26:02 +00:00
Ranjani Sridharan and Mark Brown
236d5e66b5
ASoC: SOF: sof-audio: Add a new op in struct sof_ipc_tplg_ops
...
Add a new host_config op in struct sof_ipc_tplg_ops and define it for
IPC4. This will be used to configure the host widget during prepare
after a suspend/resume or after an xrun.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://patch.msgid.link/20260204081833.16630-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2026-02-04 13:26:01 +00:00
Jyri Sarha and Mark Brown
854d4389f2
ASoC: sof: Add domain_id, heap_bytes and stack_bytes to snd_sof_widget
...
Add dp_domain_id, dp_heap_bytes and dp_stack_bytes to struct
snd_sof_widget and fill the values from topology tuples with
SOF_TKN_COMP_DOMAIN_ID, SOF_TKN_COMP_STACK_BYTES_REQUIREMENT and
SOF_TKN_COMP_HEAP_BYTES_REQUIREMENT tokens.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://patch.msgid.link/20260112113221.4442-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2026-01-12 11:48:37 +00:00
Peter Ujfalusi and Mark Brown
18dbff48a1
ASoC: SOF: sof-audio: add dev_dbg_ratelimited wrapper
...
Add dev_dbg_ratelimited() wrapper for snd_sof_pcm specific debug prints
that needs rate limited.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Link: https://patch.msgid.link/20251002074719.2084-4-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2025-10-03 12:39:47 +01:00
Jyri Sarha and Mark Brown
3d439e1ec3
ASoC: sof: ipc4-topology: Add support to sched_domain attribute
...
Add SOF_TKN_COMP_SCHED_DOMAIN and connect it to struct snd_sof_widget
comp_domain member, with new get_token_comp_domain() function.
The logic is such that if the topology attribute is not present in the
widget node the corresponding IPC4 extension value is taken from the
module's manifest like before. But if the attribute is found and
recognized its value overrides what is there in the manifest.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Message-ID: <20250829151101.27327-1-peter.ujfalusi@linux.intel.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2025-08-29 20:52:20 +02:00
Peter Ujfalusi and Mark Brown
860693187c
ASoC: SOF: pcm: Add snd_sof_pcm specific wrappers for dev_dbg() and dev_err()
...
Introduce spcm_dbg() and spcm_err() macros to provide consistent printing
for debug and error messages which includes usable information in the
print's prefix.
Update the prints in pcm.c, ipc3-pcm.c and ipc4-pcm.c to take advantage of
the features provided by the macros.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Link: https://patch.msgid.link/20250206092828.7569-4-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2025-02-06 11:25:43 +00:00
Peter Ujfalusi and Mark Brown
169ec0a541
ASoC: SOF: Relocate and rework functionality for PCM stream freeing
...
Move the sof_pcm_stream_free() from sof-audio.c to pcm.c as static function
and add wrapper to free all active stream, which is going to be used in
ipc3/4 topology code (removes duplicated code).
With this change most of the PCM stream related code is located in one
source file for easier lookup and simplified flow.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Link: https://patch.msgid.link/20250206092828.7569-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2025-02-06 11:25:41 +00:00
Peter Ujfalusi and Mark Brown
70a667d70c
ASoC: SOF: Add support for pause supported tokens from topology
...
New tokens are added to topology:
1202: SOF_TKN_STREAM_PLAYBACK_PAUSE_SUPPORTED
1203: SOF_TKN_STREAM_CAPTURE_PAUSE_SUPPORTED
The new tokens are used to advertise support for PAUSE/RESUME operation on
a PCM device depending on firmware product, use case, pipeline topology.
The snd_sof_pcm_stream.pause_supported is updated to reflect the advertised
value for the PCM device.
If the token does not exist then the pause_supported is set to false.
Note: it is up to the platform code to use this flag to decide to advertise
the PAUSE support for user space or not.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com >
Link: https://patch.msgid.link/20241213101123.27318-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-12-13 13:10:29 +00:00
Gustavo A. R. Silva and Mark Brown
5dde0cd243
ASoC: SOF: sof-audio: Avoid -Wflex-array-member-not-at-end warnings
...
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are
getting ready to enable it, globally.
Move the conflicting declaration to the end of the structure. Notice
that `struct snd_sof_pcm` ends in a flexible-array member through
`struct snd_soc_tplg_pcm` -> `struct snd_soc_tplg_private`.
Whith this, fix the following warnings:
sound/soc/sof/sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
./include/trace/events/../../../sound/soc/sof/sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
sound/soc/amd/../sof/amd/../sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
sound/soc/sof/amd/../sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
sound/soc/sof/intel/../sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
sound/soc/sof/mediatek/mt8186/../../sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
sound/soc/sof/mediatek/mt8195/../../sof-audio.h:350:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org >
Link: https://patch.msgid.link/ZrDvt6eyeFyajq6l@cute
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-08-08 09:17:16 +01:00
Pierre-Louis Bossart and Mark Brown
5821d7b498
ASoC: SOF: sof-audio.h: optimize snd_sof_pcm_stream_pipeline_list
...
Invert members to remove hole.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://patch.msgid.link/20240802124609.188954-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-08-02 14:05:16 +01:00
Brent Lu and Mark Brown
1deba6e24c
ASoC: SOF: sof-audio: add sof_dai_get_tdm_slots function
...
An new interface, sof_dai_get_tdm_slots(), is added for machine driver
to get tdm slot number from topology. The dai_get_param() callback
needs to support new parameter type SOF_DAI_PARAM_INTEL_SSP_TDM_SLOTS
by returning the tdm slot number of specific SSP port.
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Brent Lu <brent.lu@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240527193552.165567-14-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-05-29 11:10:54 +01:00
Brent Lu and Mark Brown
6073c477d1
ASoC: SOF: sof-audio: rename dai clock setting query function
...
We are going to extend the dai_get_clk() callback function to retrieve
other dai-specific settings like tdm slot number, not just mclk/bclk
frequencies. Revisit functions and macros related to the callback and
replace the string 'clk' with 'param' to reflect the ongoing change.
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Brent Lu <brent.lu@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240527193552.165567-13-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-05-29 11:10:53 +01:00
Pierre-Louis Bossart and Mark Brown
293ad28116
ASoC: SOF: Intel: clarify Copyright information
...
For some reason a number of files included the "All rights reserved"
statement. Good old copy-paste made sure this mistake proliferated.
Remove the "All rights reserved" in all Intel-copyright to align with
internal guidance.
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://lore.kernel.org/r/20240503140359.259762-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-05-06 23:59:35 +09:00
Mark Brown
9b4f41684b
ASoC: Merge up fixes
...
Some new SOF changes depend on the fixes there.
2024-04-30 00:15:57 +09:00
Ranjani Sridharan and Mark Brown
90a2353080
ASoC: SOF: pcm: Restrict DSP D0i3 during S0ix to IPC3
...
Introduce a new field in struct sof_ipc_pcm_ops that can be used to
restrict DSP D0i3 during S0ix suspend to IPC3. With IPC4, all streams
must be stopped before S0ix suspend.
Reviewed-by: Uday M Bhat <uday.m.bhat@intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240408194147.28919-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-04-09 14:03:34 +01:00
Mark Brown
327719aa62
ASoC: Merge up fixes
...
Some of these, particularly the wm_adsp one in the immediate case, are
needed as a basis for new work.
2024-04-03 16:07:41 +01:00
Pierre-Louis Bossart and Mark Brown
dbc78bce74
ASoC: SOF: pcm: add pending_stop state variable
...
Add a state variable to keep track of delayed stops, in case
pcm_ops->platform_stop_during_hw_free is set.
This patch should be iso-functionality, possibly removing no-op
cases. The main purpose of this new state variable is to prepare a
follow-up patch to reset all PCM and DMAs in case of stop/prepare xrun
sequences.
Reviewed-by: Rander Wang <rander.wang@intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240402151828.175002-16-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-04-02 17:14:56 +01:00
Pierre-Louis Bossart and Mark Brown
a936456d4b
ASoC: SOF: IPC4: extend dai_data with node_id
...
The node_id value needs to be handled specifically for ALH.
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240402151828.175002-11-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-04-02 17:14:51 +01:00
Peter Ujfalusi and Mark Brown
77165bd955
ASoC: SOF: sof-pcm: Add pointer callback to sof_ipc_pcm_ops
...
The IPC specific pointer callback can be used when additional or custom
handling is needed during the pointer calculation, like executing a delay
calculation at the same time to minimize drift between the reported pointer
and the calculated delay.
Cc: stable@vger.kernel.org # 6.8
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240321130814.4412-15-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-03-25 16:36:03 +00:00
Peter Ujfalusi and Mark Brown
fb9f8125ed
ASoC: SOF: Add dsp_max_burst_size_in_ms member to snd_sof_pcm_stream
...
The dsp_max_burst_size_in_ms can be used to save the length of the maximum
burst size in ms the host DMA will use.
Platform code can place constraint using this to avoid user space
requesting too small ALSA buffer which will result xruns.
Cc: stable@vger.kernel.org # 6.8
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://msgid.link/r/20240321130814.4412-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-03-25 16:35:51 +00:00
Ranjani Sridharan and Mark Brown
f9618ff105
ASoC: SOF: topology: Parse DAI type token for dspless mode
...
Starting with LunarLake, the dspless mode can handle SoundWire/ALH,
DMIC and SSPs, so we need to identify the dai type from topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://msgid.link/r/20240213101247.28887-12-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-02-13 13:29:00 +00:00
Vijendar Mukunda and Mark Brown
14d89e55de
ASoC: SOF: amd: Add Soundwire DAI configuration support for AMD platforms
...
Add support for configuring AMD Soundwire DAI from topology.
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com >
Link: https://msgid.link/r/20240129055147.1493853-10-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2024-01-30 16:06:39 +00:00