Kai Vehmanen [Mon, 21 Jun 2021 19:40:49 +0000 (14:40 -0500)]
ASoC: Intel: sof_sdw: remove hdac-hdmi support
Remove support for using hdac_hdmi codec driver. No known products use
this configuration and hdac_hdmi cannot support all the platforms
sof_sdw does.
This change also fixes a bug in Kconfig rules.
SND_SOC_INTEL_SOUNDWIRE_SOF_MACH did not have a select SND_SOC_HDAC_HDMI
and this could cause build failures.
Reported-by: Richard Fitzgerald <rf@opensource.cirrus.com> Tested-by: Richard Fitzgerald <rf@opensource.cirrus.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20210621194057.21711-3-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Kai Vehmanen [Mon, 21 Jun 2021 19:40:48 +0000 (14:40 -0500)]
ASoC: Intel: sof_sdw: use mach data for ADL RVP DMIC count
On the reference boards, number of PCH dmics may vary and the number
should be taken from driver machine data. Remove the SOF_SDW_PCH_DMIC
quirk to make DMIC number configurable.
Fixes:d25bbe80485f8 ("ASoC: Intel: sof_sdw: add quirk for new ADL-P Rvp")
Mark Brown [Mon, 21 Jun 2021 18:16:54 +0000 (19:16 +0100)]
Merge series "ASoC: fsl: Use devm_platform_get_and_ioremap_resource()" from Yang Yingliang <yangyingliang@huawei.com>:
patch #1 ~ #8:
Use devm_platform_get_and_ioremap_resource()
patch #9
check return value of platform_get_resource_byname()
v2:
change error message in patch #9
Yang Yingliang (9):
ASoC: fsl_asrc: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_aud2htx: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_easrc: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_esai: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_micfil: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_sai: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_spdif: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_ssi: Use devm_platform_get_and_ioremap_resource()
ASoC: fsl_xcvr: check return value after calling
platform_get_resource_byname()
Mark Brown [Mon, 21 Jun 2021 18:16:53 +0000 (19:16 +0100)]
Merge series "ASoC: tidyup snd_soc_of_parse_daifmt()" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark
These are v3 of parsing for daifmt.
I want to add new audio-graph-card2 sound card driver,
and this is last part of necessary soc-core cleanup for it.
Current some drivers are using DT, and then,
snd_soc_of_parse_daifmt() parses daifmt, but bitclock/frame provider
parsing part is one of headache, because we are assuming below both cases.
A) node {
bitclock-master;
frame-master;
...
};
B) link {
bitclock-master = <&xxx>;
frame-master = <&xxx>;
...
};
The original was style A), and style B) was added later.
snd_soc_of_parse_daifmt() parses A) style as original style,
and user need to update to B) style for clock_provider part if needed.
To handle it more flexibile, this patch-set adds new functions
which separates snd_soc_of_parse_daifmt() helper function.
snd_soc_daifmt_parse_format() : format part
snd_soc_daifmt_parse_clock_provider_as_flag() : clock part for style A)
snd_soc_daifmt_parse_clock_provider_as_phandl() : clock part for style B)
snd_soc_daifmt_parse_clock_provider_as_bitmap() : clock part use with _from_bitmap
v1 -> v2
- tidyup parse_clock_provider functions to _as_flag/phandle/bitmap()
- don't exchange code style on each drivers.
v2 -> v3
- use daifmt as much as possible (don't use daiclk) on each driver.
Link: https://lore.kernel.org/r/875yypdxlm.wl-kuninori.morimoto.gx@renesas.com Link: https://lore.kernel.org/r/87czsvdc4o.wl-kuninori.morimoto.gx@renesas.com
Kuninori Morimoto (8):
ASoC: soc-core: add snd_soc_daifmt_clock_provider_from_bitmap()
ASoC: soc-core: add snd_soc_daifmt_clock_provider_fliped()
ASoC: soc-core: add snd_soc_daifmt_parse_format/clock_provider()
ASoC: atmel: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: fsl: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: meson: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: simple-card-utils: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: soc-core: remove snd_soc_of_parse_daifmt()
Mark Brown [Mon, 21 Jun 2021 18:16:52 +0000 (19:16 +0100)]
Merge series "ASoC: sunxi: Use devm_platform_get_and_ioremap_resource()" from Yang Yingliang <yangyingliang@huawei.com>:
Use devm_platform_get_and_ioremap_resource() to simplify
code.
Yang Yingliang (3):
ASoC: sunxi: sun4i-codec: Use devm_platform_get_and_ioremap_resource()
ASoC: sun4i-i2s: Use devm_platform_get_and_ioremap_resource()
ASoC: sunxi: sun4i-spdif: Use devm_platform_get_and_ioremap_resource()
Mark Brown [Mon, 21 Jun 2021 18:16:51 +0000 (19:16 +0100)]
Merge series "ASoC: samsung: Use devm_platform_get_and_ioremap_resource()" from Yang Yingliang <yangyingliang@huawei.com>:
Use devm_platform_get_and_ioremap_resource() to simplify
code.
Yang Yingliang (4):
ASoC: samsung: i2s: Use devm_platform_get_and_ioremap_resource()
ASoC: samsung: pcm: Use devm_platform_get_and_ioremap_resource()
ASoC: samsung: s3c2412-i2s: Use
devm_platform_get_and_ioremap_resource()
ASoC: samsung: s3c24xx-i2s: Use
devm_platform_get_and_ioremap_resource()
Shuming Fan [Thu, 17 Jun 2021 09:08:22 +0000 (17:08 +0800)]
ASoC: rt711: add two jack detection modes
Some boards use different circuits for jack detection.
This patch adds two modes as below
1. JD2/2 ports/external resister 100k
2. JD2/1 port/JD voltage 1.8V
snd_soc_of_parse_daifmt() parses daifmt, but bitclock/frame provider
parsing part is one of headacke, because we are assuming below both cases.
A) node {
bitclock-master;
frame-master;
...
};
B) link {
bitclock-master = <&xxx>;
frame-master = <&xxx>;
...
};
The original was style A), and style B) was added later
by commit b3ca11ff59bc ("ASoC: simple-card: Move dai-link level
properties away from dai subnodes").
snd_soc_of_parse_daifmt() parses it as style A),
and user need to update it to style B) if needed.
To handle it more flexibile, this patch adds new functions
which separates snd_soc_of_parse_daifmt() helper function.
snd_soc_daifmt_parse_format() :for DAI format
snd_soc_daifmt_parse_clock_provider_as_flag() :for style A)
snd_soc_daifmt_parse_clock_provider_as_phandl() :for style B)
snd_soc_daifmt_parse_clock_provider_as_bitmap() :use with _from_bitmap
This patch adds snd_soc_daifmt_clock_provider_from_bitmap() function
to judge clock/frame master from its bitmap.
This is prepare for snd_soc_of_parse_daifmt() cleanup.
The snd_soc_dai_ops structures is only stored in the ops field of a
snd_soc_dai_driver structure, so make the snd_soc_dai_ops structure
const to allow the compiler to put it in read-only memory.
Mark Brown [Thu, 17 Jun 2021 14:27:24 +0000 (15:27 +0100)]
Merge series "ASoC: stm32: Use devm_platform_get_and_ioremap_resource()" from Yang Yingliang <yangyingliang@huawei.com>:
Use devm_platform_get_and_ioremap_resource() to simplify
code.
Yang Yingliang (3):
ASoC: stm32: i2s: Use devm_platform_get_and_ioremap_resource()
ASoC: stm32: sai: Use devm_platform_get_and_ioremap_resource()
ASoC: stm32: spdifrx: Use devm_platform_get_and_ioremap_resource()
Return statements in functions returning bool should use true/false
instead of 1/0.
Fix the following coccicheck warning:
./sound/soc/codecs/wcd938x.c:1190:9-10: WARNING: return of 0/1 in
function 'wcd938x_volatile_register' with return type bool.
Mark Brown [Tue, 15 Jun 2021 17:16:31 +0000 (18:16 +0100)]
Merge series "ASoC: qdsp6: Add Quinary MI2S ports support" from Gabriel David <ultracoolguy@disroot.org>:
Various devices(such as the Motorola Moto G7 Power, codename ocean) use
the Quinary MI2S ports for reproducing audio. Add support to them in
kernel.
Signed-off-by: Gabriel David <ultracoolguy@disroot.org>
Gabriel David (4):
ASoC: q6afe: dt-bindings: Add QUIN_MI2S_RX/TX
ASoC: qdsp6: q6afe: Add Quinary MI2S ports
ASoC: qdsp6: q6afe-dai: Add Quinary MI2S ports
ASoC: qdsp6: q6routing: Add Quinary MI2S ports
include/dt-bindings/sound/qcom,q6afe.h | 2 ++
sound/soc/qcom/qdsp6/q6afe-dai.c | 41 ++++++++++++++++++++++++++
sound/soc/qcom/qdsp6/q6afe.c | 8 +++++
sound/soc/qcom/qdsp6/q6afe.h | 2 +-
sound/soc/qcom/qdsp6/q6routing.c | 11 +++++++
5 files changed, 63 insertions(+), 1 deletion(-)
---
As a warning, I'm currently the only tester of these patches. If that's
gonna be a problem then I understand.
The snd_soc_dai_ops structures is only stored in the ops field of a
snd_soc_dai_driver structure, so make the snd_soc_dai_ops structure
const to allow the compiler to put it in read-only memory.
Mark Brown [Tue, 15 Jun 2021 11:51:46 +0000 (12:51 +0100)]
Merge series "Unify NVIDIA Tegra ASoC machine drivers" from Dmitry Osipenko <digetx@gmail.com>:
This series squashes all the ASoC machine drivers into a single one,
this change was suggested by Jon Hunter. It also sets driver_name and
components string of each card, allowing userspace alsa-lib to find
UCMs at predictable path.
Changelog:
v6: - Fixed missed configuration of AC97 clock rate for the WM9712 codec
in the unified driver.
- Added new patch that removes now obsolete "utils" helpers and moves
code into the unified driver.
ASoC: tegra: Squash utils into common machine driver
v5: - The v4 removed the customization of components string for Nexus 7,
but I missed to remove the "components" hook which is unused now,
it's removed in v5 for consistency.
- Slightly improved naming of the common 12MHz MCLK rate function
to make it more consistent with the rest of the driver functions.
v4: - Moved out mclk_rate callback that is currently used only by WM8903
machine driver from the common driver. This was suggested by Jon Hunter.
- Dropped patch which was setting custom components string for Nexus 7.
Jaroslav Kysela wants it to be specified in a device-tree, but the
components string doesn't have a firm specification for today. It's
better to drop this change for now since it's optional anyways.
- Fixed compilation error that was reported by kernel robot for v3.
- Jaroslav Kysela merged alsa-ucm-conf PR [1] which added UCMs for
Nexus 7 and Acer A500. The UCMs are fully working using a combination
of updated kernel + alsa-ucm-conf master + alsa-lib master, meaning
that they will work with the next releases of kernel and ALSA userspace
upstream packages.
- Added ack from Jaroslav Kysela to the "Specify components string for
each card" patch that he gave to v3.
v3: - Added components string as was suggested by Jaroslav Kysela to v2.
- Renamed MCLK rate function that is used by max98090 and other codecs
to make it look more generic. Added option for specifying CLK ID per
device. This all was suggested by Jon Hunter to v2.
v2: - Dropped use of of_device_compatible_match(), like it was suggested
by Rob Herring in a review comment to v1.
- Added patch that sets card's driver_name of as Tegra ASoC drivers.
In a comment to v1 Jaroslav Kysela suggested that the Tegra drivers
don't set the card name properly and he was right.
I opened pull request with the new Tegra UCMs and updated lookup paths
for older UCMs [1].
Dmitry Osipenko (4):
ASoC: tegra: Set driver_name=tegra for all machine drivers
ASoC: tegra: Unify ASoC machine drivers
ASoC: tegra: Specify components string for each card
ASoC: tegra: Squash utils into common machine driver
Dmitry Osipenko [Sat, 29 May 2021 15:46:48 +0000 (18:46 +0300)]
ASoC: tegra: Specify components string for each card
Specify components string for each card of each supported device. It's
a free form string that describes audio hardware configuration. This
information is useful for ALSA UCM rules. It allows to generalize UCM
rules, potentially removing a need to add new UCM rule for each device.
Dmitry Osipenko [Sat, 29 May 2021 15:46:47 +0000 (18:46 +0300)]
ASoC: tegra: Unify ASoC machine drivers
Squash all machine drivers into a single-universal one. This reduces
code duplication, eases addition of a new drivers and upgrades older
code to a modern Linux kernel APIs.
Suggested-by: Jonathan Hunter <jonathanh@nvidia.com> Co-developed-by: Ion Agorria <ion@agorria.com> Signed-off-by: Ion Agorria <ion@agorria.com> Co-developed-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Link: https://lore.kernel.org/r/20210529154649.25936-3-digetx@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
Dmitry Osipenko [Sat, 29 May 2021 15:46:46 +0000 (18:46 +0300)]
ASoC: tegra: Set driver_name=tegra for all machine drivers
The driver_name="tegra" is now required by the newer ALSA UCMs, otherwise
Tegra UCMs don't match by the path/name.
All Tegra machine drivers are specifying the card's name, but it has no
effect if model name is specified in the device-tree since it overrides
the card's name. We need to set the driver_name to "tegra" in order to
get a usable lookup path for the updated ALSA UCMs. The new UCM lookup
path has a form of driver_name/card_name.
The old lookup paths that are based on driver module name continue to
work as before. Note that UCM matching never worked for Tegra ASoC drivers
if they were compiled as built-in, this is fixed by supporting the new
naming scheme.
ASoC: qcom: Add four speaker support on MI2S secondary
Add four speaker support on MI2S secondary block
by using I2S SD1 line on gpio52 pin, and add channel map
control support in the lpass-cpu audio driver.
Martin Blumenstingl [Sat, 12 Jun 2021 20:06:50 +0000 (22:06 +0200)]
ASoC: rt5640: Make codec selectable
The Realtek rt5640 codec driver can be used with the generic sound card
drivers, so it should be selectable. For example, with the addition
of #sound-dai-cells = <0> property in DT, it can be used with simple and
graph card drivers.
Tan Zhongjun [Thu, 10 Jun 2021 12:50:52 +0000 (20:50 +0800)]
ASoC: fsl_easrc: Remove superfluous error message around platform_get_irq()
Clean up the check for irq.dev_err is superfluous as platform_get_irq()
already prints an error.Remove curly braces to confirm to styling
requirements.
Jaroslav Kysela [Mon, 14 Jun 2021 07:17:46 +0000 (09:17 +0200)]
ASoC: soc-pcm: fix the return value in dpcm_apply_symmetry()
In case, where the loops are not executed for a reason, the uninitialized
variable 'err' is returned to the caller. Make code fully predictible
and assign zero in the declaration.
Mark Brown [Mon, 14 Jun 2021 13:58:52 +0000 (14:58 +0100)]
Merge series "ASoC: codecs: add wcd938x support" from Srinivas Kandagatla <srinivas.kandagatla@linaro.org>:
This patchset adds support for Qualcomm WCD938X codec.
Qualcomm WCD9380/WCD9385 Codec is a standalone Hi-Fi audio codec IC
connected over SoundWire. This device has two SoundWire devices, RX and
TX respectively supporting 4 x ADCs, ClassH, Ear, Aux PA, 2xHPH,
7 x TX diff inputs, 8 DMICs and MBHC.
Eventhough this device has two SoundWire devices, only tx device has
access to main codec Control/Status Registers!
For codec driver to be functional it would need both tx and rx Soundwire devices
to be up and this is taken care by using device component framework and device-links
are used to ensure proper pm dependencies. Ex tx does not enter suspend
before rx or codec is suspended.
This patchset along with other SoundWire patches on the list
have been tested on SM8250 MTP device.
Thanks,
srini
Changes since v8:
- moved Kconfig and Makefile changes to last patch as suggested by Mark
- removed array of enums and used static entries instead. Suggested by Mark
- return true if put succeeds, Suggested by Mark
- removed some unneeded semi-colons in switch
Srinivas Kandagatla [Wed, 9 Jun 2021 09:09:38 +0000 (10:09 +0100)]
ASoC: dt-bindings: wcd938x-sdw: add bindings for wcd938x-sdw
Qualcomm WCD9380/WCD9385 Codec is a standalone Hi-Fi audio codec IC
connected over SoundWire. This device has two SoundWire devices RX and
TX respectively. This bindings is for those slave devices on WCD9380/WCD9385.
Srinivas Kandagatla [Wed, 9 Jun 2021 09:09:35 +0000 (10:09 +0100)]
ASoC: dt-bindings: wcd938x: add bindings for wcd938x
Qualcomm WCD9380/WCD9385 Codec is a standalone Hi-Fi audio codec IC
connected over SoundWire. This device has two SoundWire device RX and
TX respectively, supporting 4 x ADCs, ClassH, Ear, Aux PA, 2xHPH,
7 x TX diff inputs, 8 DMICs, MBHC.