aboutsummaryrefslogtreecommitdiff
path: root/sound/soc/sof
AgeCommit message (Collapse)AuthorFilesLines
2023-05-23ASoC: SOF: ipc4-topology: Fix an unsigned comparison which can never be negativeYang Li1-2/+2
The return value from the call to sof_ipc4_get_valid_bits() is int. However, the return value is being assigned to an unsigned int variable 'out_ref_valid_bits', so making it an int. Eliminate the following warning: ./sound/soc/sof/ipc4-topology.c:1537:6-24: WARNING: Unsigned expression compared with zero: out_ref_valid_bits < 0 Reported-by: Abaci Robot <[email protected]> Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=4985 Signed-off-by: Yang Li <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-23ASoC: SOF: Intel: tgl: unify core_put on IPC3 & IPC4 pathRander Wang1-3/+7
Firmware may do context saving before powering off primary core, so driver needs to send ipc msg by set_core_state. In IPC4 path, firmware needs to save current context to IMR before powering off primary core. Firmware does nothing for set_core_state message in IPC3 path. So IPC4 and IPC3 can share the same operation sequence. Signed-off-by: Rander Wang <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Reviewed-by: Péter Ujfalusi <[email protected]> Signed-off-by: Peter Ujfalusi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-23ASoC: SOF: Intel: mtl: add core_get & put support on MeterLake platformsRander Wang1-1/+32
In core_get case, driver can power up primary core and don't need to send ipc message to fw. Non-primary core should be powered up by fw with ipc message. In core_put case, driver should first send ipc message to fw to disable dsp core then power down primary core if the target is primary core. Signed-off-by: Rander Wang <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Reviewed-by: Péter Ujfalusi <[email protected]> Signed-off-by: Peter Ujfalusi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-23ASoC: do not include pm_runtime.h if not usedClaudiu Beznea5-5/+0
Do not include pm_runtime.h header in files where APIs exported by pm_runtime.h are not used. Signed-off-by: Claudiu Beznea <[email protected]> Acked-by: Jarkko Nikula <[email protected]> # for omap-mcbsp-st.c Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-23ASoC: SOF: amd: Add pci revision id checkVenkata Prasad Potturu3-0/+9
Add pci revision id check for renoir and rembrandt platforms. Signed-off-by: Venkata Prasad Potturu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-22ASoC: SOF: ipc4-loader/topology: Query the CPC value from manifestPeter Ujfalusi3-0/+78
The manifest's firmware module configuration section contains the measured CPC values along with a matching IBS/OBS values. The CPC can be looked up by looking for a matching IBS/OBS entry. In case of multiple matches we will use the highest CPC value. If there is no mod_cfg or no CPC value (all 0) or no match was found then print warning message and use 0 as CPC value. Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-22ASoC: SOF: ipc4-topology: Do not use the CPC value from topologyPeter Ujfalusi1-7/+5
Stop parsing the CPC value from topology to module_base_cfg. The CPC value is only set for few modules in topology which makes the CPC handling inconsistent. Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-22ASoC: SOF: ipc4-topology: Rename sof_ipc4_update_pipeline_mem_usage() to be ↵Peter Ujfalusi1-7/+7
generic Rename sof_ipc4_update_pipeline_mem_usage() to sof_ipc4_update_resource_usage() in order to be re-usable for generic resource storage, calculation of a module, like CPC adjustment. Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-22ASoC: SOF: ipc4-loader: Save a pointer to fm_config in sof_ipc4_fw_modulePeter Ujfalusi2-0/+3
Save a pointer to the firmware module configuration area in sof_ipc4_fw_module struct for later use. Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-22ASoC: SOF: ipc4-loader: Drop unused bss_size from struct sof_ipc4_fw_modulePeter Ujfalusi2-7/+1
The bss_size is only set, but not used by the code, remove it. Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
2023-05-16ASoC: SOF: ipc4-topology: Improve the audio formatMark Brown1-121/+237
Merge series from Peter Ujfalusi <[email protected]>: Improve the logic to account for the current restrictions in topology while making it extensible for future topology modifications. The current topology definitions assume that input/output formats come in pairs. For example even if there's only 1 output format for a module, we add 3 output formats to match that of the input format count with the same parameters. This is unnecessary but we have to deal with it until the topologies are modified. Additionally, choosing the input/output audio format should depend only on the pipeline params or the runtime FE hw_params depending on where the module is in the pipeline. This series modifies the logic for selection based on this and removes unnecessary dependencies between the input and output formats.
2023-05-16ASoC: SOF: Intel/ipc4: Do not reset BE DAI pipelineMark Brown3-21/+53
Merge series from Peter Ujfalusi <[email protected]>: Do not reset pipelines during the stop/suspend triggers in the BE DAI ops as the BE DAI pipeline needs to be left in the PAUSED state. It should only be reset during hw_free. This simplification is already done for the FE pipelines and the DAI trigger only toggles the states between PAUSED and RUNNING.
2023-05-16ASoC: SOF: Intel: hda-dai: prepare LNL supportMark Brown5-61/+63
Merge series from Pierre-Louis Bossart <[email protected]>: The HDAudio support has not changed much since CometLake/2019: the code was reshuffled for IPC4 support and we used hdac_hda for external and Display Audio codec, but the hda-dai code was only used for HDAudio codecs. In the LunarLake architecture, all endpoints (HDaudio, SSP, DMIC, SoundWire) are handled with the HDaudio DMA, which requires us to revisit the definitions of HDA_LINK, and remove the mutual exclusion between NOCODEC and HDA_LINK: we do want the ability to test SSP/DMIC in NOCODEC mode even with an HDA DMA. This code change exposed a number of issues, with a useless .prepare callback, a DAI number mismatch and the need to support SoundWire which is handled by a different component in drivers/soundwire/intel_ace2.c.
2023-05-16ASoC: SOF: Intel: hda-mlink: fixes and extensionsMark Brown1-9/+87
Merge series from Pierre-Louis Bossart <[email protected]>: With additional testing with multiple links and multiple DAI types, we found a couple of mistakes with refcounts, base address, missing initialization. A new helper was also added due to a change in the SoundWire programming sequences, with the host driver in charge of setting up the DMA channel mapping instead of the firmware.
2023-05-15ASoC: SOF: ipc4-pcm: reset all pipelines during FE DAI hw_freeRanjani Sridharan2-19/+32
Do not reset pipelines during the stop/suspend triggers in the BE DAI ops as the BE DAI pipeline needs to be left in the PAUSED state. It should only be reset during hw_free. This simplification is already done for the FE pipelines and the DAI trigger only toggles the states between PAUSED and RUNNING. But because the FE DAI hw_free is invoked first and all the pipelines are freed during this op, we need to make sure that the BE DAI pipeline also gets reset before it is freed. So do not skip the pipelines that have the skip_during_fe_trigger flag set when resetting pipelines. Also, because the pipeline state changes are split between the FE and BE DAI ops now, protect the BE DAI pipeline state changes with the pipeline_state_mutex as well. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-dai-ops: Split the get_hext_stream() op for IPC4Ranjani Sridharan2-2/+21
Introduce a separate op implementation for get_hext_stream() for IPC4. This op will also be used to set the skip_during_fe_trigger flag for the BE DAI pipeline. With this change, we can remove the flag setting in sof_ipc4_dai_config() which will further simplify support for DMIC/SSP/Soundwire in the LunarLake platform. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Simplify the calculation of variablesJiapeng Chong1-1/+1
./sound/soc/sof/pcm.c:372:27-29: WARNING !A || A && B is equivalent to !A || B. Reported-by: Abaci Robot <[email protected] Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=4938 Signed-off-by: Jiapeng Chong <[email protected] Reviewed-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Use set_get_data() to send LARGE_CONFIG messagePeter Ujfalusi1-14/+7
Instead of open coding the sending of sink format of the copier with LARGE_CONFIG_SET message, use the proper function to do so. Signed-off-by: Peter Ujfalusi <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: remove mutual exclusion between NOCODEC and HDA_LINKPierre-Louis Bossart1-1/+0
The nocodec mode served two purposes so far a) generate a test driver for DMIC/SSP without any codec connected b) make sure the use of snd_hdac_ libraries was contained b) is no longer an option for LunarLake, the HDaudio DMA is used for DMIC/SSP and the HDA_LINK option needs to be enabled. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-dai: use HDA_LINK instead of HDA_AUDIO_CODECPierre-Louis Bossart2-4/+8
For LunarLake support, we will have to use HDAudio DMA-based DAIs even for SSP/DMIC/SoundWire. That's completely different to the HDA_AUDIO_CODEC, the DAI ops deal with DMA configuration and that can happen in the absence of any HDAudio codec. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-dai: mark functions as __maybe_unusedPierre-Louis Bossart1-5/+7
hda_dai_hw_params, hda_dai_trigger(), hda_dai_hw_free are currently only used for HDaudio codec support, but will be reused for SSP/DMIC/SoundWire in the LunarLake/ACE2.x case. To avoid 'defined but not used' errors or added complexity in Kconfig, mark all these functions as __maybe_used. When SSP/DMIC/SoundWire are added, some of these changes may be reverted. For now this avoids compilation warnings. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-dai: move hda_dai_prepare() codePierre-Louis Bossart1-8/+8
Before we change the Kconfig support, move code around. No functionality change with this commit in isolation. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: Kconfig: move selection of PROBE_WORK_QUEUEPierre-Louis Bossart1-1/+1
The probe workqueue is only needed if we have a Display Audio codec. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: clarify initialization when HDA_AUDIO_CODEC is not usedPierre-Louis Bossart1-3/+8
For LunarLake support, we need to enable HDA_LINK but we also want the ability to remove HDaudio codec support, e.g. for 'nocodec' tests. This requires a small change in the bus initialization without any codec-specific callbacks provided. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: fix DAI number mismatchPierre-Louis Bossart1-1/+1
The number of DAIs was based on a Kconfig option and the declaration on another. Fix before changing the dependencies. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-dai: remove use of cpu_dai->component drvdataPierre-Louis Bossart1-10/+30
The existing code relies on conversions from cpu_dai to the sdev structure pointer based on the cpu_dai component. This works fine for HDaudio but will not work for SoundWire DAIs which are registered by a different component. That's a problem preventing reuse of the HDaudio DMA stream allocation for SoundWire DAIs starting with the LunarLake platform. This patch introduces a set of helpers to perform the conversion, and an indirect way of retrieving the sdev pointer based on the swidget->comp intermediate pointer. Suggested-by: Ranjani Sridharan <[email protected] Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-dai: simplify .prepare callbackPierre-Louis Bossart1-31/+3
The code has been cleaned-up multiple times, but while adding the new abstractions for DMIC/SSP/SoundWire it appears that we don't really need a specific sequence for .prepare, and we can reuse what .hw_params already does. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Bard Liao <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Modify input audio format selection logicRanjani Sridharan1-100/+32
The current selection logic assumes that input and output formats always come in pairs in topology. Handle this special case by checking if all input formats are the same. And for the case where there are multiple supported input audio formats, modify the selection logic to pick the audio formats based on the reference params which is either the FE hw_params or the pipeline params based on the type of module. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: New helper to check if all output formats are the sameRanjani Sridharan1-22/+31
Add a helper function to check if all formats are identical. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Modify the output format selection logicRanjani Sridharan1-20/+107
Modify the output format selection when there are multiple output formats available to choose the one that matches the reference params. The reference params depend on the type of module. In the case of processing modules, the reference params are based on the selected input audio format. This would be the case when a processing module does not perform any format conversion during processing. The only special case is the copier module. The copier module is capable of format conversion but it is only used in the case when the output is fixed to a single format. In the case of a module copier, when there are multiple formats, the reference params is based on the selected input params and the output format must match that of the selected input format. In the case of host copier, the reference params should be based on the input audio format for playback and the FE hw_params for capture. In the case DAI copier, the reference params should be based on the input audio format for capture and the FE hw_params for playback when there is no format conversion in the pipeline from the host to the DAI. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Add a new helper function to get the valid bitsRanjani Sridharan1-14/+18
Add a new helper function sof_ipc4_get_valid_bits() to get the valid bits in the PCM params. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Handle output format special caseRanjani Sridharan1-5/+50
The current topologies have input/output formats in pairs and even though there are multiple output formats, they are all the same. Handle this case as if there were only one format in topology. Also, add a check for the number of output formats and reports errors where applicable. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Rename sof_ipc4_init_audio_fmt()Ranjani Sridharan1-25/+26
Rename it to sof_ipc4_init_input_audio_fmt() as it only does input format selection now. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Move the call to init output formatRanjani Sridharan1-6/+23
In preparation for changing the logic for input/output format selection, move the call to sof_ipc4_init_output_audio_fmt() into the individual widget prepare ops. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Add a helper function for output format selectionRanjani Sridharan1-9/+21
Add a helper function to select the output format. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc4-topology: Handle input/output audio format special caseRanjani Sridharan1-1/+10
When there is only one input/output format specified in topology, there is no need to search for a matching format, simply pick the available one. This is in preparation to modify and split the selection logic for the input and output audio formats. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: topology: Fix tuples array allocationRanjani Sridharan1-1/+1
The memory allocated for the tuples array assumes that there's 1 instance of all tokens already. So for those tokens that have multiple instances in topology, we need to exclude the initial instance that has already been accounted for. Fixes: 4fdef47a44d6 ("ASoC: SOF: ipc4-topology: Add new tokens for input/output pin format count") Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Separate the tokens for input and output pin indexRanjani Sridharan1-2/+2
Using the same token ID for both input and output format pin index results in collisions and incorrect pin index getting parsed from topology. Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Paul Olaru <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Various runtime pm fixes, improvementsMark Brown3-13/+16
Merge series from Peter Ujfalusi <[email protected]>: Three patch to correct error path PM runtime handling in few places. Regards, Peter --- Pierre-Louis Bossart (3): ASoC: SOF: debug: conditionally bump runtime_pm counter on exceptions ASoC: SOF: pcm: fix pm_runtime imbalance in error handling ASoC: SOF: sof-client-probes: fix pm_runtime imbalance in error handling sound/soc/sof/debug.c | 4 ++-- sound/soc/sof/pcm.c | 11 ++++++----- sound/soc/sof/sof-client-probes.c | 14 ++++++++------ 3 files changed, 16 insertions(+), 13 deletions(-) -- 2.40.1
2023-05-15ASoC: Merge up fixes for CIMark Brown1-1/+6
Avoid tripping over fixed issues in CI.
2023-05-15ASoC: SOF: topology: Fix logic for copying tuplesRanjani Sridharan1-0/+4
Topology could have more instances of the tokens being searched for than the number of sets that need to be copied. Stop copying token after the limit of number of token instances has been reached. This worked before only by chance as we had allocated more size for the tuples array than the number of actual tokens being parsed. Fixes: 7006d20e5e9d ("ASoC: SOF: Introduce IPC3 ops") Signed-off-by: Ranjani Sridharan <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: pm: save io region state in case of errors in resumeKai Vehmanen1-1/+13
If there are failures in DSP runtime resume, the device state will not reach active and this makes it impossible e.g. to retrieve a possible DSP panic dump via "exception" debugfs node. If CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE=y is set, the data in cache is stale. If debugfs cache is not used, the region simply cannot be read. To allow debugging these scenarios, update the debugfs cache contents in resume error handler. User-space can then later retrieve DSP panic and other state via debugfs (requires SOF debugfs cache to be enabled in build). Reported-by: Curtis Malainey <[email protected] Link: https://github.com/thesofproject/linux/issues/4274 Signed-off-by: Kai Vehmanen <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Reviewed-by: Curtis Malainey <[email protected] Reviewed-by: Péter Ujfalusi <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: ipc3-topology: Make sure that only one cmd is sent in dai_configPeter Ujfalusi1-2/+5
The commands in sof_ipc_dai_config.flags are encoded as bits: 1 (bit0) - hw_params 2 (bit1) - hw_free 4 (bit2) - pause These are commands, they cannot be combined as one would assume, for example 3 (bit0 | bit1) is invalid. This can happen right at the second start of a stream as at the end of the first stream we set the hw_free command (bit1) and on the second start we would OR on top of it the hw_params (bit0). Fixes: b66bfc3a9810 ("ASoC: SOF: sof-audio: Fix broken early bclk feature for SSP") Signed-off-by: Peter Ujfalusi <[email protected] Reviewed-by: Daniel Baluta <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Reviewed-by: Pierre-Louis Bossart <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: sof-client-probes: fix pm_runtime imbalance in error handlingPierre-Louis Bossart1-6/+8
When an error occurs, we need to make sure the device can pm_runtime suspend instead of keeping it active. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Daniel Baluta <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: pcm: fix pm_runtime imbalance in error handlingPierre-Louis Bossart1-5/+6
When an error occurs, we need to make sure the device can pm_runtime suspend instead of keeping it active. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Daniel Baluta <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: debug: conditionally bump runtime_pm counter on exceptionsPierre-Louis Bossart1-2/+2
When a firmware IPC error happens during a pm_runtime suspend, we ignore the error and suspend anyways. However, the code unconditionally increases the runtime_pm counter. This results in a confusing configuration where the code will suspend, resume but never suspend again due to the use of pm_runtime_get_noresume(). The intent of the counter increase was to prevent entry in D3, but if that transition to D3 is already started it cannot be stopped. In addition, there's no point in that case in trying to prevent anything, the firmware error is handled and the next resume will re-initialize the firmware completely. This patch changes the logic to prevent suspend when the device is pm_runtime active and has a use_count > 0. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Daniel Baluta <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Signed-off-by: Peter Ujfalusi <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-mlink: add helper to program SoundWire PCMSyCM registersPierre-Louis Bossart1-0/+50
These registers enable the HDaudio DMA hardware to split/merge data from different PDIs, possibly on different links. This capability exists for all types of HDaudio extended links, but for now is only required for SoundWire. In the SSP/DMIC case, the IP is programmed by the DSP firmware. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-mlink: initialize instance_offset memberPierre-Louis Bossart1-0/+2
We defined the values but never initialized it for SoundWire/SSP, fix this miss. A Fixes: tag is not provided as instance_offset was not used so far, so nothing was really broken. This patch is only required for the SoundWire support in the following patch. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-mlink: use 'ml_addr' parameter consistentlyPierre-Louis Bossart1-1/+1
We mix the use of hlink->ml_addr and the 'ml_addr' parameter. It's the same thing, let's align on using the parameter. Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]
2023-05-15ASoC: SOF: Intel: hda-mlink: fix base_ptr computationPierre-Louis Bossart1-3/+3
The base_ptr value needs to be derived from the remap_addr pointer, not the ml_addr. This base_ptr was used only in debug logs that were so far not contributed upstream so the issue was not detected. It needs to be fixed for SoundWire support on LunarLake. Fixes: 17c9b6ec35c0 ("ASoC: SOF: Intel: hda-mlink: add structures to parse ALT links") Signed-off-by: Pierre-Louis Bossart <[email protected] Reviewed-by: Bard Liao <[email protected] Reviewed-by: Rander Wang <[email protected] Reviewed-by: Ranjani Sridharan <[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]