Commit Graph

1169905 Commits

Author SHA1 Message Date
Pierre-Louis Bossart
ce8ffc1bac
ASoC: codecs: rt1308-sdw: simplify set_stream
Using a dynamic allocation to store a single pointer is not very
efficient/useful.

Worse, the memory is released in the SoundWire stream.c file, but
still accessed in the DAI shutdown, leading to kmemleak reports.

And last the API requires the previous stream information to be
cleared when the argument is NULL.

Simplify the code to address all 3 problems.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230324014408.1677505-5-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 15:03:02 +01:00
Pierre-Louis Bossart
658d6f7381
ASoC: codecs: max98373-sdw: simplify set_stream
Using a dynamic allocation to store a single pointer is not very
efficient/useful.

Worse, the memory is released in the SoundWire stream.c file, but
still accessed in the DAI shutdown, leading to kmemleak reports.

And last the API requires the previous stream information to be
cleared when the argument is NULL.

Simplify the code to address all 3 problems.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230324014408.1677505-4-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 15:03:01 +01:00
Pierre-Louis Bossart
f3def17787
ASoC: codecs: sdw-mockup: simplify set_stream
Using a dynamic allocation to store a single pointer is not very
efficient/useful.

Worse, the memory is released in the SoundWire stream.c file, but
still accessed in the DAI shutdown, leading to kmemleak reports.

And last the API requires the previous stream information to be
cleared when the argument is NULL.

Simplify the code to address all 3 problems.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230324014408.1677505-3-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 15:03:00 +01:00
Pierre-Louis Bossart
892855d57c
ASoC: codecs: cs42l42-sdw: clear stream
The API requires the stream info to be cleared when the argument is
NULL.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230324014408.1677505-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 15:02:59 +01:00
Krzysztof Kozlowski
63e280a549
ASoC: codecs: lpass-wsa-macro: add support for SM8550
Add support for the WSA macro codec on Qualcomm SM8550.  SM8550 does not
use NPL clock, thus add flags allowing to skip it.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230327132254.147975-11-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 12:31:46 +01:00
Krzysztof Kozlowski
5d83b5ce86
ASoC: dt-bindings: qcom,lpass-wsa-macro: Add SM8550 WSA macro
Add the WSA macro codec on Qualcomm SM8550, which comes without NPL clock
exposed.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20230327132254.147975-10-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 12:31:45 +01:00
Krzysztof Kozlowski
84054a8d0d
ASoC: dt-bindings: qcom,lpass-va-macro: Add SM8550 VA macro
Add the VA macro codec on Qualcomm SM8550, which comes without NPL clock
exposed.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20230327132254.147975-9-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 12:31:44 +01:00
Krzysztof Kozlowski
f03038baac
ASoC: codecs: lpass-tx-macro: add support for SM8550
Add support for the TX macro codec on Qualcomm SM8550.  SM8550 does not
use NPL clock, thus add flags allowing to skip it.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230327132254.147975-7-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 12:31:41 +01:00
Krzysztof Kozlowski
3e226b4db2
ASoC: codecs: lpass-rx-macro: add support for SM8550
Add support for the RX macro codec on Qualcomm SM8550.  SM8550 does not
use NPL clock, thus add flags allowing to skip it.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230327132254.147975-4-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 12:31:37 +01:00
Kuninori Morimoto
ef36ca9275
ASoC: soc-topology.c: dai_link->platform again
On SOF, many topology is assuming dai_link->platform exists, and is
allowed to be overwritten on each link_load().
This patch restore the removed dai_link->platform for SOF, and add
the comment.

Fixes: e7098ba9b3 ("ASoC: soc-topology.c: remove unnecessary dai_link->platform")
Reported-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/87jzz7jczp.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/87v8ikcsr5.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-29 12:26:07 +01:00
Kuninori Morimoto
ffaf886e24
ASoC: soc-core.c: add snd_soc_add_pcm_runtimes()
Current ASoC supports snd_soc_add_pcm_runtime(), but user need to
call it one-by-one if it has multi dai_links.
This patch adds snd_soc_add_pcm_runtimes() which supports multi
dai_links.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87h6u76nhq.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-28 01:26:03 +01:00
Johan Hovold
8908c36dab
ASoC: qcom: audioreach: drop stray 'get' from error message
Drop the stray 'get', which appears to be a copy-paste error, from the
registration-failure error message.

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20230327145555.19351-1-johan+linaro@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-28 01:25:49 +01:00
Kuninori Morimoto
ad58151fa0
ASoC: audio-graph-card2-custom-sample.dtsi: use card->name to avoid long name
Current Card2 Custom Sample will be too long Card name, and be error

	audio-graph-card2-custom-sample audio-graph-card2-custom-sample \
		ASoC: driver name too long \
		audio-graph-card2-custom-sample' -> 'audio-graph-car'

This patch uses short name to avoid it

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87bkke7qzf.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-27 13:09:49 +01:00
Christophe JAILLET
65d4d7259b
ASoC: meson: Use the devm_clk_get_optional() helper
Use devm_clk_get_optional() instead of hand writing it.
This saves some loC and improves the semantic.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/8dab942d6ce47657a9c038295959be80bb2ee09e.1679834598.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-27 13:04:26 +01:00
Harshit Mogalapalli
283771e8ee
ASoC: cs35l56: Remove redundant return statement in cs35l56_spi_probe()
We have unreachable 'return ret' statement in cs35l56_spi_probe(),
delete it as its dead code..

This is found by static analysis with smatch.

Fixes: e496112529 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56")
Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230324145535.3951689-1-harshit.m.mogalapalli@oracle.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 16:36:18 +00:00
Mark Brown
09d9507234
ASoC: remove unnecessary dai_link->platform
Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

Current ASoC will ignore already connected component when binding Card.
This will happen mainly "CPU Component" is handled as "Platform Component",
which was needed before.

	static int snd_soc_rtd_add_component(...)
	{
		...
		for_each_rtd_components(rtd, i, comp) {
			/* already connected */
			if (comp == component)
				return 0;
		}
		...
	}

Some drivers are still using CPU or Dummy Component as Platform Component,
but these are no meaning or ignored.
This patch-set remove these.
2023-03-24 16:36:05 +00:00
Daniel Baluta
37b58becc1
ASoC: soc-compress: Inherit atomicity from DAI link for Compress FE
After commit bbf7d3b1c4 ("ASoC: soc-pcm: align BE 'atomicity' with
that of the FE") BE and FE atomicity must match.

In the case of Compress PCM there is a mismatch in atomicity between FE
and BE and we get errors like this:

[   36.434566]  sai1-wm8960-hifi: dpcm_be_connect: FE is atomic but BE
is nonatomic, invalid configuration
[   36.444278]  PCM Deep Buffer: ASoC: can't connect SAI1.OUT

In order to fix this we must inherit the atomicity from DAI link
associated with current PCM Compress FE.

Fixes: bbf7d3b1c4 ("ASoC: soc-pcm: align BE 'atomicity' with that of the FE")
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20230324124019.30826-1-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 14:20:03 +00:00
Jiapeng Chong
ab76c891a6
ASoC: cs35l56: Fix an unsigned comparison which can never be negative
The variable 'rv' is defined as unsigned type, so the following if
statement is invalid, we can modify the type of rv to int.
if (rv < 0) {
	dev_err(cs35l56->dev, "irq: failed to get pm_runtime:
		%d\n", rv);
	goto err_unlock;
}

./sound/soc/codecs/cs35l56.c:333:5-7: WARNING: Unsigned expression compared with zero: rv < 0.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=4599
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230324022303.121485-1-jiapeng.chong@linux.alibaba.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 12:15:24 +00:00
Kuninori Morimoto
92405802a7
ASoC: simple-card.c: add missing of_node_put()
It is missing of_node_put() for platform.
This patch fixup it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87ilerjcvr.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 12:15:23 +00:00
Kuninori Morimoto
e7098ba9b3
ASoC: soc-topology.c: remove unnecessary dai_link->platform
dai_link->platform is no longer needed if CPU and Platform are
same Component. This patch removes unnecessary dai_link->platform.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87jzz7jczp.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 12:15:20 +00:00
Kuninori Morimoto
3b0db249cf
ASoC: ti: remove unnecessary dai_link->platform
dai_link->platform is no longer needed if CPU and Platform are
same Component. This patch removes unnecessary dai_link->platform.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87lejnjczu.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 12:15:19 +00:00
Kuninori Morimoto
2f650f87c0
ASoC: atmel: remove unnecessary dai_link->platform
dai_link->platform is no longer needed if CPU and Platform are
same Component. This patch removes unnecessary dai_link->platform.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/87mt43jd00.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 12:15:18 +00:00
Kuninori Morimoto
33683cbf49
ASoC: fsl: remove unnecessary dai_link->platform
dai_link->platform is no longer needed if CPU and Platform are
same Component. This patch removes unnecessary dai_link->platform.
Dummy Platform is also not necessary.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87o7ojjd06.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-24 12:15:17 +00:00
Saalim Quadri
829d78e3ea
ASoC: dt-bindings: ak5558: Convert to dtschema
Convert the AK5558 ADC audio codec bindings to DT schema.

Signed-off-by: Saalim Quadri <danascape@gmail.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230322200949.8986-1-danascape@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-23 14:08:09 +00:00
Krzysztof Kozlowski
80404e4e13
ASoC: dt-bindings: wlf,wm8994: Convert to dtschema
Convert the Wolfson WM1811/WM8994/WM8958 audio codecs bindings to DT
schema.

Changes against original binding:
1. Add missing LDO1VDD-supply and LDO2VDD-supply.
2. Use "gpios" suffix for wlf,ldo1ena and wlf,ldo2ena (Linux kernel's
   gpiolib already looks for both variants).
3. Do not require AVDD1-supply and DCVDD-supply, because at least on
   Arndale board with Exynos5250 these are being supplied by internal
   LDOs.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230322193541.827291-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-23 12:24:09 +00:00
Colin Ian King
056db84011
ASoC: SOF: ipc4/intel: Fix spelling mistake "schduler" -> "scheduler"
There are two spelling mistakes in dev_warn messages. Fix them.

Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Link: https://lore.kernel.org/r/20230323090531.67679-1-colin.i.king@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-23 12:24:08 +00:00
Jyri Sarha
935d31fdda
ASoC: SOF: ipc4/intel: Add missing mutex_unlock()
There was a missing mutex_unlock() in sof_ipc4_widget_free()
use_chain_dma if-branch that caused a static analysis error. The
branch should not be used in a normal working configuration and if its
used its an indication of a bad topology. Add missing mutex_unlock()
and a warning print if the if-branch is taken, and another warning
print to a symmetric place in sof_ipc4_widget_setup().

Fixes: ca5ce0caa6 ("ASoC: SOF: ipc4/intel: Add support for chained DMA")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/r/202303222050.dCw0fPCW-lkp@intel.com/
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Link: https://lore.kernel.org/r/20230322181830.574635-1-jyri.sarha@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 19:00:30 +00:00
Mark Brown
ba31f89c1b
ASoC: Intel: sof_rt5682: Updates for MTL BT offload
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:

Enable BT offload for Rex variants and RVP.
2023-03-22 18:44:52 +00:00
Mark Brown
f134bb6e28
ASoC: SOF: pcm/Intel: Handle IPC dependent sequencing
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:

IPC3 and IPC4 firmwares handle and execute tasks at different
stages, like managing DMAs.  In most cases these are aligned, but
we have few exceptions that needs to be handled differently.

This series introduces flags to handle the differing cases to make sure that
the correct sequencing is used regerless of the IPC version.
2023-03-22 18:44:46 +00:00
Jiapeng Chong
59385ed41c
ASoC: tegra: remove unneeded semicolon
./sound/soc/tegra/tegra_asoc_machine.c:206:3-4: Unneeded semicolon.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=4583
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230322014330.97079-1-jiapeng.chong@linux.alibaba.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:39 +00:00
Kuninori Morimoto
dcf084247e
ASoC: simple-card: add comment to indicate don't remove platforms
Basically CPU and Platform are different Component, but if CPU is using
soc-generic-dmaengine-pcm, same dev will be shared between CPU and
Platform, and Simple Card had been supporting it.

When we focus to clean up Simple Card driver, we tend to remove platforms
if no Platform was selected, but it is wrong because of above reasons.

This patch adds comment why we shouldn't remove platforms.

In case of CPU is not using soc-generic-dmaengine-pcm, CPU and Platform
will be duplicated, but it will be ignored by snd_soc_rtd_add_component().

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/875yattwqv.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:38 +00:00
Yong Zhi
3e1a334ad5
ASoC: Intel: sof_rt5682: Remove conditional dpcm_capture setting
The dpcm_capture is set unconditionally, we can drop the conditional
setting of it.

Signed-off-by: Yong Zhi <yong.zhi@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: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322075012.23463-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:37 +00:00
Uday M Bhat
f19f24d479
ASoC: Intel: sof_rt5682: Update BT offload config for MTL RVP
For MTL RVP, SSP2 is used for BT offload. This is enabled
in the sof_rt5682_quirk_table

Signed-off-by: Uday M Bhat <uday.m.bhat@intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322074916.23225-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:35 +00:00
Uday M Bhat
54e2887669
ASoC: Intel: sof_rt5682: Update BT offload config for Rex
For Rex, SSP1 is used for BT offload. This is enabled
in the sof_rt5682_quirk_table

Signed-off-by: Uday M Bhat <uday.m.bhat@intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322074916.23225-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:35 +00:00
Ranjani Sridharan
51ce3e6eff
ASoC: SOF: pcm: Improve the pcm trigger sequence
The recommended sequence for triggering the host DMA is to first program
the DMA in the FW before setting the RUN bit to start the stream in the
host. With IPC3, this sequence is honored because the FW programs the
DMA when the HW_PARAMS IPC is sent during PCM hw_params and then the host
sets the RUN bit during sof_pcm_trigger(). But with IPC4,
sof_pcm_trigger() sends the SET_PIPELINE_STATE IPC to program the DMA in
the FW after the DMA RUN bit is set.

In order to minimize the impact for IPC3, introduce a new flag as part
of struct sof_ipc_pcm_ops, ipc_first_on_start, which will be set for IPC4
only. With this flag set, the SET_PIPELINE_STATE IPC will be sent before
the DMA RUN bit is set by the host during the START/PAUSE_RELEASE
triggers.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter 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>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322094346.6019-4-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:31 +00:00
Ranjani Sridharan
7d6f623c6a
ASoC: SOF: pcm: Make hw_params reset conditional for IPC3
In the case of IPC4, since there is no PCM_PARAMS IPC to send the new
stream tag when restarting a stream without a hw_free, the original
stream tag needs to be preserved. So, add new a flag as part of struct
sof_ipc_pcm_ops, reset_hw_params_during_stop and set it only for IPC3.
This will ensure that the host DMA stream tag will not be given up during
the STOP trigger for IPC4.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322094346.6019-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:31 +00:00
Ranjani Sridharan
1bf83fa665
ASoC: SOF: Intel: hda-dai: Do not perform DMA cleanup during stop
In the case of repeated start/stop without involving hw_free, the stream
tag needs to be preserved for the subsequent starts. So, skip performing
the DMA clean up during stop and handle it only during suspend or
hw_free.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322094346.6019-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-22 13:17:30 +00:00
Mark Brown
e3057eb574
ASoC: SOF: ipc4/intel: Support for ChainDMA
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:

On a platform when the DSP is in use, we cannot select individual links
to use or not use the DSP, it is either all or none.  On some audio
endpoint, like HDMI/DP, it is preferred to not use any processing in DSP
to reduce the latency and to allow bytestream pass-through (DTS, DD,
etc)

IPC4 introduces a new type of end-to-end connection within the DSP which
is using the host DMA and link DMA in a single buffer, working
back-to-back, passing the received data without looking at it or trying
to understand the format, content.

This mode reduces the latency and allows non PCM streams to be sent from
userspace.

The feature is enabled per PCM bases, signalled in topology.
2023-03-21 19:23:48 +00:00
Peter Ujfalusi
1c12e032cc
ASoC: SOF: ipc4-control: Return on error in sof_ipc4_widget_kcontrol_setup()
The patch adding the bytes control support moved the error check outside
of the list_for_each_entry() which was not correct as at the end of the
list_for_each_entry() the scontrol will no longer point where the error
happened, but it to the list head.

Restore the original logic and return on the first error with the error
code.

Fixes: a062c8899f ("ASoC: SOF: ipc4-control: Add support for bytes control get and put")
Reported-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/alsa-devel/6be945d2-40cb-46fb-67ba-ed3a19cddfa4@linux.intel.com/T/#t
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230321145651.9118-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 16:31:10 +00:00
Mark Brown
1d78e193b5
ASoC: Initial support for Cirrus Logic CS35L56
Merge series from Richard Fitzgerald <rf@opensource.cirrus.com>:

The CS35L56 is a high-performance boosted mono audio amplifier.
Supported control interfaces are I2C, SPI or SoundWire.
Supported audio interfaces are I2S/TDM or SoundWire.

The CS35L56 has a self-booting firmware in ROM, with the ability
to patch the firmware and/or apply tunings.
Patches #1 to #7 add support to cs_dsp and wm_adsp for self-booting
firmware and the ability to apply a .bin file without having to
apply a .wmfw.
2023-03-21 16:30:29 +00:00
Mark Brown
4af574f58f
ALSA/ASoC: Convert to platform remove callback
Merge series from Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:

Hello,

this series adapts the platform drivers below sound/ to use the .remove_new()
callback. Compared to the traditional .remove() callback .remove_new() returns
no value. This is a good thing because the driver core doesn't (and cannot)
cope for errors during remove. The only effect of a non-zero return value in
.remove() is that the driver core emits a warning. The device is removed anyhow
and an early return from .remove() usually yields a resource leak.

By changing the remove callback to return void driver authors cannot
reasonably assume any more that there is some kind of cleanup later.

The first two patches simplify a driver each to return zero unconditionally,
and then all drivers are trivially converted to .remove_new().

There are nearly no interdependencies in this patch set---only 1 <- 11 and
2 <- 16. So even if some individual problems are found (I don't expect that),
the other patches can (and from my POV should) still be applied.

Best regards
Uwe

Uwe Kleine-König (173):
  ALSA: sh: aica: Drop if blocks with always false condition
  ASoC: amd: acp: rembrandt: Drop if blocks with always false condition
  ALSA: pxa2xx: Convert to platform remove callback returning void
  ALSA: atmel: ac97: Convert to platform remove callback returning void
  ALSA: mts64: Convert to platform remove callback returning void
  ALSA: portman2x4: Convert to platform remove callback returning void
  ALSA: mips/hal2: Convert to platform remove callback returning void
  ALSA: mips/sgio2audio: Convert to platform remove callback returning
    void
  ALSA: hda/tegra: Convert to platform remove callback returning void
  ALSA: ppc/powermac: Convert to platform remove callback returning void
  ALSA: sh: aica: Convert to platform remove callback returning void
  ALSA: sh_dac_audio: Convert to platform remove callback returning void
  ASoC: adi: axi-i2s: Convert to platform remove callback returning void
  ASoC: adi: axi-spdif: Convert to platform remove callback returning
    void
  ASoC: amd: acp-pcm-dma: Convert to platform remove callback returning
    void
  ASoC: amd: acp: rembrandt: Convert to platform remove callback
    returning void
  ASoC: amd: acp: renoir: Convert to platform remove callback returning
    void
  ASoC: amd: ps: Convert to platform remove callback returning void
  ASoC: amd: raven: acp3x-pcm-dma: Convert to platform remove callback
    returning void
  ASoC: amd: raven: acp3x-pdm-dma: Convert to platform remove callback
    returning void
  ASoC: amd: vangogh: acp5x-pcm-dma: Convert to platform remove callback
    returning void
  ASoC: amd: yc: acp6x-pdm-dma: Convert to platform remove callback
    returning void
  ASoC: apple: mca: Convert to platform remove callback returning void
  ASoC: atmel: atmel-i2s: Convert to platform remove callback returning
    void
  ASoC: atmel: atmel_wm8904: Convert to platform remove callback
    returning void
  ASoC: atmel: mchp-i2s-mcc: Convert to platform remove callback
    returning void
  ASoC: atmel: mchp-pdmc: Convert to platform remove callback returning
    void
  ASoC: atmel: mchp-spdifrx: Convert to platform remove callback
    returning void
  ASoC: atmel: mchp-spdiftx: Convert to platform remove callback
    returning void
  ASoC: atmel: mikroe-proto: Convert to platform remove callback
    returning void
  ASoC: atmel: sam9g20_wm8731: Convert to platform remove callback
    returning void
  ASoC: atmel: sam9x5_wm8731: Convert to platform remove callback
    returning void
  ASoC: atmel: tse850-pcm5142: Convert to platform remove callback
    returning void
  ASoC: au1x: ac97c: Convert to platform remove callback returning void
  ASoC: au1x: i2sc: Convert to platform remove callback returning void
  ASoC: au1x: psc-ac97: Convert to platform remove callback returning
    void
  ASoC: au1x: psc-i2s: Convert to platform remove callback returning
    void
  ASoC: bcm: bcm63xx-i2s-whistler: Convert to platform remove callback
    returning void
  ASoC: bcm: cygnus-ssp: Convert to platform remove callback returning
    void
  ASoC: cirrus: edb93xx: Convert to platform remove callback returning
    void
  ASoC: cirrus: ep93xx-i2s: Convert to platform remove callback
    returning void
  ASoC: codecs: cs47l15: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l24: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l35: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l85: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l90: Convert to platform remove callback returning
    void
  ASoC: codecs: cs47l92: Convert to platform remove callback returning
    void
  ASoC: codecs: inno_rk3036: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-rx-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-tx-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-va-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: lpass-wsa-macro: Convert to platform remove callback
    returning void
  ASoC: codecs: msm8916-wcd-analog: Convert to platform remove callback
    returning void
  ASoC: codecs: msm8916-wcd-digital: Convert to platform remove callback
    returning void
  ASoC: codecs: rk817_codec: Convert to platform remove callback
    returning void
  ASoC: codecs: wcd938x: Convert to platform remove callback returning
    void
  ASoC: codecs: wm5102: Convert to platform remove callback returning
    void
  ASoC: codecs: wm5110: Convert to platform remove callback returning
    void
  ASoC: codecs: wm8994: Convert to platform remove callback returning
    void
  ASoC: codecs: wm8997: Convert to platform remove callback returning
    void
  ASoC: codecs: wm8998: Convert to platform remove callback returning
    void
  ASoC: dwc: dwc-i2s: Convert to platform remove callback returning void
  ASoC: fsl: eukrea-tlv320: Convert to platform remove callback
    returning void
  ASoC: fsl: fsl_asrc: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_aud2htx: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_audmix: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_dma: Convert to platform remove callback returning void
  ASoC: fsl: fsl_easrc: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_esai: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_mqs: Convert to platform remove callback returning void
  ASoC: fsl: fsl_rpmsg: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_sai: Convert to platform remove callback returning void
  ASoC: fsl: fsl_spdif: Convert to platform remove callback returning
    void
  ASoC: fsl: fsl_ssi: Convert to platform remove callback returning void
  ASoC: fsl: fsl_xcvr: Convert to platform remove callback returning
    void
  ASoC: fsl: imx-audmux: Convert to platform remove callback returning
    void
  ASoC: fsl: imx-pcm-rpmsg: Convert to platform remove callback
    returning void
  ASoC: fsl: imx-sgtl5000: Convert to platform remove callback returning
    void
  ASoC: fsl: mpc5200_psc_ac97: Convert to platform remove callback
    returning void
  ASoC: fsl: mpc5200_psc_i2s: Convert to platform remove callback
    returning void
  ASoC: fsl: mpc8610_hpcd: Convert to platform remove callback returning
    void
  ASoC: fsl: p1022_ds: Convert to platform remove callback returning
    void
  ASoC: fsl: p1022_rdk: Convert to platform remove callback returning
    void
  ASoC: fsl: pcm030-audio-fabric: Convert to platform remove callback
    returning void
  ASoC: generic: test-component: Convert to platform remove callback
    returning void
  ASoC: img: img-i2s-in: Convert to platform remove callback returning
    void
  ASoC: img: img-i2s-out: Convert to platform remove callback returning
    void
  ASoC: img: img-parallel-out: Convert to platform remove callback
    returning void
  ASoC: img: img-spdif-in: Convert to platform remove callback returning
    void
  ASoC: img: img-spdif-out: Convert to platform remove callback
    returning void
  ASoC: img: pistachio-internal-dac: Convert to platform remove callback
    returning void
  ASoC: Intel: sst-mfld-platform-pcm: Convert to platform remove
    callback returning void
  ASoC: Intel: sst: Convert to platform remove callback returning void
  ASoC: Intel: bytcht_es8316: Convert to platform remove callback
    returning void
  ASoC: Intel: bytcr_rt5640: Convert to platform remove callback
    returning void
  ASoC: Intel: boards: bytcr_rt5651: Convert to platform remove callback
    returning void
  ASoC: Intel: bytcr_wm5102: Convert to platform remove callback
    returning void
  ASoC: Intel: cht_bsw_max98090_ti: Convert to platform remove callback
    returning void
  ASoC: Intel: sof_es8336: Convert to platform remove callback returning
    void
  ASoC: Intel: sof_pcm512x: Convert to platform remove callback
    returning void
  ASoC: Intel: sof_sdw: Convert to platform remove callback returning
    void
  ASoC: Intel: sof_wm8804: Convert to platform remove callback returning
    void
  ASoC: Intel: catpt: Convert to platform remove callback returning void
  ASoC: Intel: skl-ssp-clk: Convert to platform remove callback
    returning void
  ASoC: kirkwood: kirkwood-i2s: Convert to platform remove callback
    returning void
  ASoC: mediatek: mtk-btcvsd: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt2701-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt6797-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8173-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8183-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8188-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8192-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback
    returning void
  ASoC: meson: aiu: Convert to platform remove callback returning void
  ASoC: mxs: mxs-sgtl5000: Convert to platform remove callback returning
    void
  ASoC: pxa: mmp-sspa: Convert to platform remove callback returning
    void
  ASoC: pxa: pxa2xx-ac97: Convert to platform remove callback returning
    void
  ASoC: qcom: qdsp6: Convert to platform remove callback returning void
  ASoC: rockchip: rockchip_i2s: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_i2s_tdm: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_pdm: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_rt5645: Convert to platform remove callback
    returning void
  ASoC: rockchip: rockchip_spdif: Convert to platform remove callback
    returning void
  ASoC: samsung: arndale: Convert to platform remove callback returning
    void
  ASoC: samsung: i2s: Convert to platform remove callback returning void
  ASoC: samsung: odroid: Convert to platform remove callback returning
    void
  ASoC: samsung: pcm: Convert to platform remove callback returning void
  ASoC: samsung: snow: Convert to platform remove callback returning
    void
  ASoC: samsung: spdif: Convert to platform remove callback returning
    void
  ASoC: sh: fsi: Convert to platform remove callback returning void
  ASoC: sh: hac: Convert to platform remove callback returning void
  ASoC: sh: rcar: Convert to platform remove callback returning void
  ASoC: sh: rz-ssi: Convert to platform remove callback returning void
  ASoC: sh: siu_dai: Convert to platform remove callback returning void
  ASoC: sprd: sprd-mcdt: Convert to platform remove callback returning
    void
  ASoC: stm: stm32_adfsdm: Convert to platform remove callback returning
    void
  ASoC: stm: stm32_i2s: Convert to platform remove callback returning
    void
  ASoC: stm: stm32_sai_sub: Convert to platform remove callback
    returning void
  ASoC: stm: stm32_spdifrx: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun4i-codec: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun4i-i2s: Convert to platform remove callback returning
    void
  ASoC: sunxi: sun4i-spdif: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun50i-dmic: Convert to platform remove callback
    returning void
  ASoC: sunxi: sun8i-codec: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra186_asrc: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra186_dspk: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra20_ac97: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra20_i2s: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_admaif: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_adx: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_ahub: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_amx: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_dmic: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_i2s: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_mixer: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_mvc: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_ope: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra210_sfc: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra30_ahub: Convert to platform remove callback
    returning void
  ASoC: tegra: tegra30_i2s: Convert to platform remove callback
    returning void
  ASoC: ti: ams-delta: Convert to platform remove callback returning
    void
  ASoC: ti: davinci-i2s: Convert to platform remove callback returning
    void
  ASoC: ti: davinci-mcasp: Convert to platform remove callback returning
    void
  ASoC: ti: omap-hdmi: Convert to platform remove callback returning
    void
  ASoC: ti: omap-mcbsp: Convert to platform remove callback returning
    void
  ASoC: uniphier: evea: Convert to platform remove callback returning
    void
  ASoC: ux500: mop500: Convert to platform remove callback returning
    void
  ASoC: ux500: ux500_msp_dai: Convert to platform remove callback
    returning void
  ASoC: xilinx: xlnx_formatter_pcm: Convert to platform remove callback
    returning void
  ASoC: xilinx: xlnx_spdif: Convert to platform remove callback
    returning void
  ASoC: xtensa: xtfpga-i2s: Convert to platform remove callback
    returning void
  ALSA: sparc/cs4231: Convert to platform remove callback returning void
  ALSA: sparc/dbri: Convert to platform remove callback returning void

 sound/arm/pxa2xx-ac97.c                      |  6 ++----
 sound/atmel/ac97c.c                          |  6 ++----
 sound/drivers/mts64.c                        |  6 ++----
 sound/drivers/portman2x4.c                   |  6 ++----
 sound/mips/hal2.c                            |  5 ++---
 sound/mips/sgio2audio.c                      |  5 ++---
 sound/pci/hda/hda_tegra.c                    |  6 ++----
 sound/ppc/powermac.c                         |  5 ++---
 sound/sh/aica.c                              |  7 ++-----
 sound/sh/sh_dac_audio.c                      |  5 ++---
 sound/soc/adi/axi-i2s.c                      |  6 ++----
 sound/soc/adi/axi-spdif.c                    |  6 ++----
 sound/soc/amd/acp-pcm-dma.c                  |  6 ++----
 sound/soc/amd/acp/acp-rembrandt.c            | 13 +++----------
 sound/soc/amd/acp/acp-renoir.c               |  5 ++---
 sound/soc/amd/ps/ps-pdm-dma.c                |  5 ++---
 sound/soc/amd/raven/acp3x-pcm-dma.c          |  5 ++---
 sound/soc/amd/renoir/acp3x-pdm-dma.c         |  5 ++---
 sound/soc/amd/vangogh/acp5x-pcm-dma.c        |  5 ++---
 sound/soc/amd/yc/acp6x-pdm-dma.c             |  5 ++---
 sound/soc/apple/mca.c                        |  5 ++---
 sound/soc/atmel/atmel-i2s.c                  |  6 ++----
 sound/soc/atmel/atmel_wm8904.c               |  6 ++----
 sound/soc/atmel/mchp-i2s-mcc.c               |  6 ++----
 sound/soc/atmel/mchp-pdmc.c                  |  6 ++----
 sound/soc/atmel/mchp-spdifrx.c               |  6 ++----
 sound/soc/atmel/mchp-spdiftx.c               |  6 ++----
 sound/soc/atmel/mikroe-proto.c               |  6 ++----
 sound/soc/atmel/sam9g20_wm8731.c             |  6 ++----
 sound/soc/atmel/sam9x5_wm8731.c              |  6 ++----
 sound/soc/atmel/tse850-pcm5142.c             |  6 ++----
 sound/soc/au1x/ac97c.c                       |  6 ++----
 sound/soc/au1x/i2sc.c                        |  6 ++----
 sound/soc/au1x/psc-ac97.c                    |  6 ++----
 sound/soc/au1x/psc-i2s.c                     |  6 ++----
 sound/soc/bcm/bcm63xx-i2s-whistler.c         |  5 ++---
 sound/soc/bcm/cygnus-ssp.c                   |  6 ++----
 sound/soc/cirrus/edb93xx.c                   |  6 ++----
 sound/soc/cirrus/ep93xx-i2s.c                |  5 ++---
 sound/soc/codecs/cs47l15.c                   |  6 ++----
 sound/soc/codecs/cs47l24.c                   |  6 ++----
 sound/soc/codecs/cs47l35.c                   |  6 ++----
 sound/soc/codecs/cs47l85.c                   |  6 ++----
 sound/soc/codecs/cs47l90.c                   |  6 ++----
 sound/soc/codecs/cs47l92.c                   |  6 ++----
 sound/soc/codecs/inno_rk3036.c               |  6 ++----
 sound/soc/codecs/lpass-rx-macro.c            |  6 ++----
 sound/soc/codecs/lpass-tx-macro.c            |  6 ++----
 sound/soc/codecs/lpass-va-macro.c            |  6 ++----
 sound/soc/codecs/lpass-wsa-macro.c           |  6 ++----
 sound/soc/codecs/msm8916-wcd-analog.c        |  6 ++----
 sound/soc/codecs/msm8916-wcd-digital.c       |  6 ++----
 sound/soc/codecs/rk817_codec.c               |  6 ++----
 sound/soc/codecs/wcd938x.c                   |  6 ++----
 sound/soc/codecs/wm5102.c                    |  6 ++----
 sound/soc/codecs/wm5110.c                    |  6 ++----
 sound/soc/codecs/wm8994.c                    |  6 ++----
 sound/soc/codecs/wm8997.c                    |  6 ++----
 sound/soc/codecs/wm8998.c                    |  6 ++----
 sound/soc/dwc/dwc-i2s.c                      |  5 ++---
 sound/soc/fsl/eukrea-tlv320.c                |  6 ++----
 sound/soc/fsl/fsl_asrc.c                     |  6 ++----
 sound/soc/fsl/fsl_aud2htx.c                  |  6 ++----
 sound/soc/fsl/fsl_audmix.c                   |  6 ++----
 sound/soc/fsl/fsl_dma.c                      |  6 ++----
 sound/soc/fsl/fsl_easrc.c                    |  6 ++----
 sound/soc/fsl/fsl_esai.c                     |  6 ++----
 sound/soc/fsl/fsl_mqs.c                      |  5 ++---
 sound/soc/fsl/fsl_rpmsg.c                    |  6 ++----
 sound/soc/fsl/fsl_sai.c                      |  6 ++----
 sound/soc/fsl/fsl_spdif.c                    |  6 ++----
 sound/soc/fsl/fsl_ssi.c                      |  6 ++----
 sound/soc/fsl/fsl_xcvr.c                     |  5 ++---
 sound/soc/fsl/imx-audmux.c                   |  6 ++----
 sound/soc/fsl/imx-pcm-rpmsg.c                |  6 ++----
 sound/soc/fsl/imx-sgtl5000.c                 |  6 ++----
 sound/soc/fsl/mpc5200_psc_ac97.c             |  5 ++---
 sound/soc/fsl/mpc5200_psc_i2s.c              |  5 ++---
 sound/soc/fsl/mpc8610_hpcd.c                 |  6 ++----
 sound/soc/fsl/p1022_ds.c                     |  6 ++----
 sound/soc/fsl/p1022_rdk.c                    |  6 ++----
 sound/soc/fsl/pcm030-audio-fabric.c          |  6 ++----
 sound/soc/generic/test-component.c           |  6 ++----
 sound/soc/img/img-i2s-in.c                   |  6 ++----
 sound/soc/img/img-i2s-out.c                  |  6 ++----
 sound/soc/img/img-parallel-out.c             |  6 ++----
 sound/soc/img/img-spdif-in.c                 |  6 ++----
 sound/soc/img/img-spdif-out.c                |  6 ++----
 sound/soc/img/pistachio-internal-dac.c       |  6 ++----
 sound/soc/intel/atom/sst-mfld-platform-pcm.c |  5 ++---
 sound/soc/intel/atom/sst/sst_acpi.c          |  5 ++---
 sound/soc/intel/boards/bytcht_es8316.c       |  5 ++---
 sound/soc/intel/boards/bytcr_rt5640.c        |  5 ++---
 sound/soc/intel/boards/bytcr_rt5651.c        |  5 ++---
 sound/soc/intel/boards/bytcr_wm5102.c        |  5 ++---
 sound/soc/intel/boards/cht_bsw_max98090_ti.c |  6 ++----
 sound/soc/intel/boards/sof_es8336.c          |  6 ++----
 sound/soc/intel/boards/sof_pcm512x.c         |  6 ++----
 sound/soc/intel/boards/sof_sdw.c             |  6 ++----
 sound/soc/intel/boards/sof_wm8804.c          |  5 ++---
 sound/soc/intel/catpt/device.c               |  6 ++----
 sound/soc/intel/skylake/skl-ssp-clk.c        |  6 ++----
 sound/soc/kirkwood/kirkwood-i2s.c            |  6 ++----
 sound/soc/mediatek/common/mtk-btcvsd.c       |  5 ++---
 sound/soc/mediatek/mt2701/mt2701-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt6797/mt6797-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt8173/mt8173-afe-pcm.c   |  5 ++---
 sound/soc/mediatek/mt8183/mt8183-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt8188/mt8188-afe-pcm.c   |  6 ++----
 sound/soc/mediatek/mt8192/mt8192-afe-pcm.c   |  5 ++---
 sound/soc/mediatek/mt8195/mt8195-afe-pcm.c   |  5 ++---
 sound/soc/meson/aiu.c                        |  6 ++----
 sound/soc/mxs/mxs-sgtl5000.c                 |  6 ++----
 sound/soc/pxa/mmp-sspa.c                     |  7 +++----
 sound/soc/pxa/pxa2xx-ac97.c                  |  5 ++---
 sound/soc/qcom/qdsp6/q6routing.c             |  6 ++----
 sound/soc/rockchip/rockchip_i2s.c            |  6 ++----
 sound/soc/rockchip/rockchip_i2s_tdm.c        |  6 ++----
 sound/soc/rockchip/rockchip_pdm.c            |  6 ++----
 sound/soc/rockchip/rockchip_rt5645.c         |  6 ++----
 sound/soc/rockchip/rockchip_spdif.c          |  6 ++----
 sound/soc/samsung/arndale.c                  |  5 ++---
 sound/soc/samsung/i2s.c                      |  8 +++-----
 sound/soc/samsung/odroid.c                   |  6 ++----
 sound/soc/samsung/pcm.c                      |  6 ++----
 sound/soc/samsung/snow.c                     |  6 ++----
 sound/soc/samsung/spdif.c                    |  6 ++----
 sound/soc/sh/fsi.c                           |  6 ++----
 sound/soc/sh/hac.c                           |  5 ++---
 sound/soc/sh/rcar/core.c                     |  6 ++----
 sound/soc/sh/rz-ssi.c                        |  6 ++----
 sound/soc/sh/siu_dai.c                       |  5 ++---
 sound/soc/sprd/sprd-mcdt.c                   |  6 ++----
 sound/soc/stm/stm32_adfsdm.c                 |  6 ++----
 sound/soc/stm/stm32_i2s.c                    |  6 ++----
 sound/soc/stm/stm32_sai_sub.c                |  6 ++----
 sound/soc/stm/stm32_spdifrx.c                |  6 ++----
 sound/soc/sunxi/sun4i-codec.c                |  6 ++----
 sound/soc/sunxi/sun4i-i2s.c                  |  6 ++----
 sound/soc/sunxi/sun4i-spdif.c                |  6 ++----
 sound/soc/sunxi/sun50i-dmic.c                |  6 ++----
 sound/soc/sunxi/sun8i-codec.c                |  6 ++----
 sound/soc/tegra/tegra186_asrc.c              |  6 ++----
 sound/soc/tegra/tegra186_dspk.c              |  6 ++----
 sound/soc/tegra/tegra20_ac97.c               |  6 ++----
 sound/soc/tegra/tegra20_i2s.c                |  6 ++----
 sound/soc/tegra/tegra210_admaif.c            |  6 ++----
 sound/soc/tegra/tegra210_adx.c               |  6 ++----
 sound/soc/tegra/tegra210_ahub.c              |  6 ++----
 sound/soc/tegra/tegra210_amx.c               |  6 ++----
 sound/soc/tegra/tegra210_dmic.c              |  6 ++----
 sound/soc/tegra/tegra210_i2s.c               |  6 ++----
 sound/soc/tegra/tegra210_mixer.c             |  6 ++----
 sound/soc/tegra/tegra210_mvc.c               |  6 ++----
 sound/soc/tegra/tegra210_ope.c               |  6 ++----
 sound/soc/tegra/tegra210_sfc.c               |  6 ++----
 sound/soc/tegra/tegra30_ahub.c               |  6 ++----
 sound/soc/tegra/tegra30_i2s.c                |  6 ++----
 sound/soc/ti/ams-delta.c                     |  5 ++---
 sound/soc/ti/davinci-i2s.c                   |  6 ++----
 sound/soc/ti/davinci-mcasp.c                 |  6 ++----
 sound/soc/ti/omap-hdmi.c                     |  5 ++---
 sound/soc/ti/omap-mcbsp.c                    |  6 ++----
 sound/soc/uniphier/evea.c                    |  6 ++----
 sound/soc/ux500/mop500.c                     |  6 ++----
 sound/soc/ux500/ux500_msp_dai.c              |  6 ++----
 sound/soc/xilinx/xlnx_formatter_pcm.c        |  5 ++---
 sound/soc/xilinx/xlnx_spdif.c                |  5 ++---
 sound/soc/xtensa/xtfpga-i2s.c                |  5 ++---
 sound/sparc/cs4231.c                         |  6 ++----
 sound/sparc/dbri.c                           |  6 ++----
 171 files changed, 345 insertions(+), 654 deletions(-)

base-commit: fe15c26ee2
--
2.39.2
2023-03-21 16:29:48 +00:00
Vlad.Karpovich
6c07be8fe9
ASoC: cs35l45: Hibernation support
Adds support for a low-power Hibernation State.
Add support for a low-power hibernation state for the DSP. In
this state the DSP RAM contents are maintained, such that
firmware does not need to be re-downloaded, but the rest of the
chip's register state is lost.
Entry to this state is achieved via the register interface
(either by an external driver using the control port, or the
programmable DSP). Exit from this state is triggered by activity
on device GPIO pins, intended SPI transaction, or I2C
transaction with intended slave address.

Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Link: https://lore.kernel.org/r/167933511185.26.10641185496218226278@mailman-core.alsa-project.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:46:42 +00:00
Vlad.Karpovich
74b14e2850
ASoC: cs35l45: DSP Support
The CS35L45 digital core incorporates one programmable DSP block,
capable of running a wide range of audio enhancement and speaker
and battery protection functions.

Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Link: https://lore.kernel.org/r/167933510679.26.5992985447093367768@mailman-core.alsa-project.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:46:41 +00:00
Vlad.Karpovich
6085f9e6dc
ASoC: cs35l45: IRQ support
Adds IRQ handlers

Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Link: https://lore.kernel.org/r/167933510218.26.11092784685990338045@mailman-core.alsa-project.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:46:41 +00:00
Vlad.Karpovich
c6cec088ab
ASoC: dt-bindings: cs35l45: GPIOs configuration
This adds description of CS35L45 GPIOs configuration.

Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230315154722.3911463-2-vkarpovi@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:46:40 +00:00
Vlad.Karpovich
fa8c052b4c
ASoC: cs35l45: Support for GPIO pins configuration.
Adds device tree configuration for cs35l45 GPIOs

Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230315154722.3911463-1-vkarpovi@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:46:39 +00:00
Jyri Sarha
ca5ce0caa6
ASoC: SOF: ipc4/intel: Add support for chained DMA
Add logic for setting up and tearing down chained DMA connections.

Since pipelines are not used, all the logic to set the pipeline states
can be bypassed, with only the DMA programming sequences remaining. In
addition the same format needs to be used for host- and link-DMA,
without the usual fixup to use the S32_LE format on the link.

Note however that for convenience and compatibility with existing
definitions, the topology relies on the concept of pipelines with a
'USE_CHAIN_DMA' token indicating that all the logic shall be bypassed.

Unlike 'normal' ALSA sequences, the chain DMA is not programmed in
hw_params/hw_free. The IPC message to set-up and tear-down chained DMA
are sent in sof_ipc4_trigger_pipelines(), but the contents prepared
earlier.

Chained DMA is only supported by the Intel HDA DAI for now, and only
S16_LE and S32_LE formats are supported for now.

Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230321092654.7292-4-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:13:31 +00:00
Jyri Sarha
cb3cdef331
ASoC: SOF: ipc4: Add macros for chain-dma message bits
In the chained DMA mode, the firmware allocates buffers for the host
and link DMA, and takes care of copying data between host- and
link-DMA buffers in a low-latency thread. This is different to a
regular pipeline, no processing is allowed, and the connection between
host- and link DMA is handled with a dedicated IPC.

This patch exposes the macros needed to create the required IPC messages.

Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230321092654.7292-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:13:30 +00:00
Ranjani Sridharan
3d3e223f09
ASoC: SOF: topology: Set pipeline widget before updating IPC structures
Set up the IPC structure for scheduler widgets and set the pipeline widget
before updating the IPC structures for all widgets. This will be needed to
look up pipeline information during IPC structure set up.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230321092654.7292-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:13:30 +00:00
Richard Fitzgerald
e496112529
ASoC: cs35l56: Add driver for Cirrus Logic CS35L56
The CS35L56 combines a high-performance mono audio amplifier, Class-H
tracking inductive boost converter, Halo Core(TM) DSP and a DC-DC boost
converter supporting Class-H tracking.

Supported control interfaces are I2C, SPI or SoundWire.
Supported audio interfaces are I2S/TDM or SoundWire.

Most chip functionality is controlled by on-board ROM firmware that is
always running. The driver must apply patch/tune to the firmware
before using the CS35L56.

Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230320112245.115720-9-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-03-21 12:13:24 +00:00