| Age | Commit message (Collapse) | Author | Files | Lines |
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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]>
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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]
|
|
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]
|
|
./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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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
|
|
Avoid tripping over fixed issues in CI.
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|