linux_dsm_epyc7002/sound/soc
Stephan Gerhold 4ff028f6c1
ASoC: qcom: lpass-cpu: Make I2S SD lines configurable
The LPASS hardware allows configuring the MI2S SD lines to use
when playing/recording audio. However, at the moment the lpass-cpu
driver has SD0 hard-coded for mono/stereo (or additional fixed
SD lines for more channels).

For weird reasons there seems to be hardware that uses one of the
other SD lines for mono/stereo. For example, some Samsung devices
use an external Speaker amplifier connected to Quaternary MI2S.
For some reason, the SD line for audio playback was connected to
SD1 rather than SD0. (I have no idea why...)
At the moment, the lpass-cpu driver cannot be configured to work
for the Speaker on these devices.

The q6afe driver already allows configuring the MI2S SD lines
through the "qcom,sd-lines" device tree property, but this works
only when routing audio through the ADSP.

This commit adds a very similar configuration for the lpass-cpu driver.
It is now possible to add additional subnodes to the lpass device in
the device tree, to configure the SD lines for playback and/or capture.
E.g. for the Samsung devices mentioned above:

&lpass {
	dai@3 {
		reg = <MI2S_QUATERNARY>;
		qcom,playback-sd-lines = <1>;
	};
};

qcom,playback/capture-sd-lines takes a list of SD lines (0-3)
in the same format as the q6afe driver. (The difference here is that
q6afe has separate DAIs for playback/capture, while lpass-cpu has one
for both...)

For backwards compatibility with older device trees, the lpass-cpu driver
defaults to LPAIF_I2SCTL_MODE_8CH if the subnode for a DAI is missing.
This is equivalent to the previous behavior: Up to 8 channels can be
configured, and SD0/QUAT01 will be chosen when setting up a stream
with fewer channels.

This allows the speaker to work on Samsung MSM8916 devices
that use an external speaker amplifier.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20200425184657.121991-2-stephan@gerhold.net
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-05-05 13:17:23 +01:00
..
adi
amd ASoC: amd: Fix button configuration 2020-04-14 12:59:13 +01:00
atmel ASoC: atmel: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:31 +00:00
au1x ASoC: au1x: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:32 +00:00
bcm ASoC: bcm: Fix pointer cast warning 2020-03-30 15:32:34 +01:00
cirrus ASoC: cirrus: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:34 +00:00
codecs ASoC: wm8524: Add support S32_LE 2020-05-04 19:23:59 +01:00
dwc ASoC: dwc: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:35 +00:00
fsl ASoC: fsl_easrc: mark PM functions __maybe_unused 2020-04-29 17:21:32 +01:00
generic ASoC: generic: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:36 +00:00
hisilicon ASoC: hisilicon: Use the defined variable to clean code 2020-04-27 14:08:44 +01:00
img ASoC: img: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:37 +00:00
intel ASoC: SOF/Intel: clarify SPDX license with GPL-2.0-only 2020-05-01 17:45:24 +01:00
jz4740 ASoC: jz4740-i2s: Add support for the JZ4770 2020-03-24 17:16:01 +00:00
kirkwood ASoC: kirkwood: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:39 +00:00
mediatek ASoC: mediatek: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:40 +00:00
meson ASoC: meson: gx-card: fix codec-to-codec link setup 2020-04-20 13:58:22 +01:00
mxs ASoC: mxs-saif: Fix unused assignment 2020-04-29 14:23:19 +01:00
pxa Merge series "ASoC: remove rtd->cpu/codec_dai{s}" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: 2020-03-27 15:33:10 +00:00
qcom ASoC: qcom: lpass-cpu: Make I2S SD lines configurable 2020-05-05 13:17:23 +01:00
rockchip ASoC: rockchip: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:45 +00:00
samsung ASoC: samsung: s3c24xx-i2s: Fix build after removal of DAI suspend/resume 2020-04-14 12:16:22 +01:00
sh ASoC: rsnd: Fix "status check failed" spam for multi-SSI 2020-04-20 14:16:18 +01:00
sirf ASoC: sirf: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:05:39 +01:00
sof ASoC: SOF/Intel: clarify SPDX license with GPL-2.0-only 2020-05-01 17:45:24 +01:00
spear ASoC: spear: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:06:18 +01:00
sprd ASoC: sprd: use snd_compress_ops 2020-04-21 19:01:59 +01:00
sti ASoC: sti: sti_uniperif: move .suspend/.resume to component 2020-01-21 17:04:37 +00:00
stm ASoC: stm32: sai: fix sai probe 2020-04-17 19:37:14 +01:00
sunxi ASoC: sunxi: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:50 +00:00
tegra ASoC: tegra: tegra_wm8903: Use devm_snd_soc_register_card() 2020-04-28 16:40:36 +01:00
ti ASoC: ti: remove comparison to bool in omap_mcbsp_dai_set_dai_fmt() 2020-04-27 14:08:42 +01:00
txx9 ASoC: txx9: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:53 +00:00
uniphier ASoC: uniphier: use snd_compress_ops 2020-04-21 19:01:56 +01:00
ux500 ASoC: ux500: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:54 +00:00
xilinx ASoC: xilinx: Use managed buffer allocation 2019-12-11 16:43:25 +00:00
xtensa ASoC: xtensa: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:55 +00:00
zte ASoC: zte: zx-tdm: remove redundant variables dev 2020-03-11 17:59:49 +00:00
Kconfig ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
Makefile ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
soc-ac97.c
soc-acpi.c
soc-component.c ASoC: soc-component: tidyup snd_soc_pcm_component_sync_stop() 2020-02-28 17:06:09 +00:00
soc-compress.c ASoC: soc-dai: add snd_soc_dai_compr_get_metadata() 2020-04-29 13:27:50 +01:00
soc-core.c ASoC: soc-dai: add snd_soc_pcm_dai_remove() 2020-04-29 13:27:41 +01:00
soc-dai.c ASoC: soc-dai: add snd_soc_dai_compr_get_metadata() 2020-04-29 13:27:50 +01:00
soc-dapm.c Merge series "ASoC: Fix dependency issues of SND_SOC" from Wei Li <liwei391@huawei.com>: 2020-04-20 15:27:09 +01:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: soc: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-04-14 14:00:44 +01:00
soc-io.c
soc-jack.c ASoC: Jack: Fix NULL pointer dereference in snd_soc_jack_report 2019-11-12 17:12:56 +00:00
soc-ops.c ASoC: fix regwmask 2020-03-30 18:22:36 +01:00
soc-pcm.c ASoC: soc-dai: add snd_soc_pcm_dai_bespoke_trigger() 2020-04-29 13:27:39 +01:00
soc-topology.c Merge series "Add support for SOF on i.MX8M" from Daniel Baluta <daniel.baluta@oss.nxp.com> 2020-04-16 00:23:20 +01:00
soc-utils.c ASoC: utils: Drop superfluous ioctl PCM ops 2019-12-11 16:00:48 +00:00