aboutsummaryrefslogtreecommitdiffstats
path: root/sound
AgeCommit message (Collapse)AuthorFilesLines
2021-09-28ALSA: hda: hdac_ext_stream: fix potential locking issuesPierre-Louis Bossart1-18/+28
The code for hdac_ext_stream seems inherited from hdac_stream, and similar locking issues are present: the use of the bus->reg_lock spinlock is inconsistent, with only writes to specific fields being protected. Apply similar fix as in hdac_stream by protecting all accesses to 'link_locked' and 'decoupled' fields, with a new helper snd_hdac_ext_stream_decouple_locked() added to simplify code changes. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20210924192417.169243-4-pierre-louis.bossart@linux.intel.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-09-28ALSA: hda: hdac_stream: fix potential locking issue in snd_hdac_stream_assign()Pierre-Louis Bossart1-2/+2
The fields 'opened', 'running', 'assigned_key' are all protected by a spinlock, but the spinlock is not taken when looking for a stream. This can result in a possible race between assign() and release(). Fix by taking the spinlock before walking through the bus stream list. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20210924192417.169243-2-pierre-louis.bossart@linux.intel.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-09-28ALSA: usb-audio: fix comment reference in __uac_clock_find_sourceGeraldo Nascimento1-2/+2
snd_usb_find_clock_source and snd_usb_find_clock_selector are helper macros that look at an entity id and validate that this entity id is in fact a clock source or a clock selector. The present comments inside __uac_clock_find_source give the reader the impression we're looking for an entity id. We're looking for an entity id indeed, the clock source, but since __uac_clock_find_source is recursive, we're also looking *at* the entity ids, in the search for the one clock source. Fix the comment so we don't give readers a wrong idea. Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com> Link: https://lore.kernel.org/r/YU6Kj05oOqRmhJDf@geday Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-09-27Merge series "add driver to support firmware loading on Cirrus Logic DSPs" from Simon Trimmer <simont@opensource.cirrus.com>:Mark Brown14-3310/+410
This series of patches gradually separates the ASoC specific wm_adsp code from that required to manage firmware in Cirrus Logic DSPs. The series starts with renaming, progresses to splitting the functionality before finally moving the independent functionality into drivers/firmware so that it can be used by both the existing ASoC wm_adsp and new non-audio parts. Charles Keepax (3): ASoC: wm_adsp: Move check for control existence ASoC: wm_adsp: Switch to using wm_coeff_read_ctrl for compressed buffers ASoC: wm_adsp: Move sys_config_size to wm_adsp Simon Trimmer (13): ASoC: wm_adsp: Remove use of snd_ctl_elem_type_t ASoC: wm_adsp: Cancel ongoing work when removing controls ASoC: wm_adsp: Rename generic DSP support ASoC: wm_adsp: Introduce cs_dsp logging macros ASoC: wm_adsp: Separate some ASoC and generic functions ASoC: wm_adsp: Split DSP power operations into helper functions ASoC: wm_adsp: Separate generic cs_dsp_coeff_ctl handling ASoC: wm_adsp: Move check of dsp->running to better place ASoC: wm_adsp: Pass firmware names as parameters when starting DSP core ASoC: wm_adsp: move firmware loading to client ASoC: wm_adsp: Split out struct cs_dsp from struct wm_adsp ASoC: wm_adsp: Separate wm_adsp specifics in cs_dsp_client_ops firmware: cs_dsp: add driver to support firmware loading on Cirrus Logic DSPs MAINTAINERS | 11 + drivers/firmware/Kconfig | 1 + drivers/firmware/Makefile | 1 + drivers/firmware/cirrus/Kconfig | 5 + drivers/firmware/cirrus/Makefile | 3 + drivers/firmware/cirrus/cs_dsp.c | 3109 ++++++++++++++++ include/linux/firmware/cirrus/cs_dsp.h | 242 ++ .../linux/firmware/cirrus}/wmfw.h | 8 +- sound/soc/codecs/Kconfig | 1 + sound/soc/codecs/cs47l15.c | 22 +- sound/soc/codecs/cs47l24.c | 20 +- sound/soc/codecs/cs47l35.c | 24 +- sound/soc/codecs/cs47l85.c | 32 +- sound/soc/codecs/cs47l90.c | 34 +- sound/soc/codecs/cs47l92.c | 20 +- sound/soc/codecs/madera.c | 18 +- sound/soc/codecs/wm2200.c | 30 +- sound/soc/codecs/wm5102.c | 16 +- sound/soc/codecs/wm5110.c | 24 +- sound/soc/codecs/wm_adsp.c | 3188 ++--------------- sound/soc/codecs/wm_adsp.h | 105 +- 21 files changed, 3794 insertions(+), 3120 deletions(-) create mode 100644 drivers/firmware/cirrus/Kconfig create mode 100644 drivers/firmware/cirrus/Makefile create mode 100644 drivers/firmware/cirrus/cs_dsp.c create mode 100644 include/linux/firmware/cirrus/cs_dsp.h rename {sound/soc/codecs => include/linux/firmware/cirrus}/wmfw.h (91%) -- 2.33.0
2021-09-27ASoC: ak4458: Use modern ASoC DAI format terminologyMark Brown1-6/+6
As part of moving to remove the old style defines for the bus clocks update the ak4458 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210920163817.16490-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ak5558: Use modern ASoC DAI format terminologyMark Brown1-5/+5
As part of moving to remove the old style defines for the bus clocks update the ak5558 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210920164753.17030-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: dmaengine: Introduce module option prealloc_buffer_size_kbytesSugar Zhang1-1/+5
Currently, The fixed 512KB prealloc buffer size is too larger for tiny memory kernel (such as 16MB memory). This patch adds the module option "prealloc_buffer_size_kbytes" to specify prealloc buffer size. It's suitable for cards which use the generic dmaengine pcm driver with no config. Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com> Link: https://lore.kernel.org/r/1632394246-59341-1-git-send-email-sugar.zhang@rock-chips.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: dwc-i2s: Update to modern clocking terminologyMark Brown1-6/+6
As part of moving to remove the old style defines for the bus clocks update the dwc-i2s driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210921205313.46710-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ak4671: Use modern ASoC DAI format terminologyMark Brown1-3/+3
As part of moving to remove the old style defines for the bus clocks update the ak4671 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210920164211.16718-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: alc5623: Use modern ASoC DAI format terminologyMark Brown1-4/+4
As part of moving to remove the old style defines for the bus clocks update the alc5623 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210920165036.17142-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: bcm: Convert to modern clocking terminologyMark Brown2-31/+31
As part of the effort to remove our old APIs based on outdated terminology update the Broadcom drivers to use modern terminology. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916143423.24025-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: cpcap: Use modern ASoC DAI format terminologyMark Brown1-9/+9
As part of moving to remove the old style defines for the bus clocks update the cpcap driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210921213034.31427-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: meson: aiu: Fix spelling mistake "Unsupport" -> "Unsupported"Colin Ian King1-1/+1
There is a spelling mistake in a dev_err error message. Fix it. Signed-off-by: Colin Ian King <colin.king@canonical.com> Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Link: https://lore.kernel.org/r/20210924231242.144692-1-colin.king@canonical.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: codecs: Fix spelling mistake "Unsupport" -> "Unsupported"Colin Ian King18-20/+20
There are spelling mistakes in dev_err error messages. Fix them. Signed-off-by: Colin Ian King <colin.king@canonical.com> Link: https://lore.kernel.org/r/20210924231003.144502-1-colin.king@canonical.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ad193x: Update to modern clocking terminologyMark Brown1-5/+5
As part of moving to remove the old style defines for the bus clocks update the ad193x driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916142232.33914-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: tegra: Constify static snd_soc_dai_ops structsRikard Falkeborn5-9/+9
The only usage of these is to assign their address to the ops field in the snd_soc_dai_driver struct, which is a pointer to const. Make them const to allow the compiler to put them in read-only memory. Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com> Acked-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/20210922205438.34519-1-rikard.falkeborn@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: cs42l42: Use two thresholds and increased wait time for manual type detectionStefan Binding2-23/+66
Some headsets require very different comparator thresholds for type detection, as well as longer settling times. In order to detect a larger number of headsets, use 2 thresholds to give maximum coverage (1.25V and 1.75V), as well as a longer settling time of 100ms. This will not affect default audotodetect mode and applies to manual mode type detection only. Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210927111437.18113-1-vitalyr@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: adav80x: Update to modern clocking terminologyMark Brown1-3/+3
As part of moving to remove the old style defines for the bus clocks update the adav80x driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916151806.20756-6-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: adau1977: Update to modern clocking terminologyMark Brown1-15/+16
As part of moving to remove the old style defines for the bus clocks update the adau1977 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916151806.20756-5-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: adau17x1: Update to modern clocking terminologyMark Brown1-3/+3
As part of moving to remove the old style defines for the bus clocks update the adau17x1 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916151806.20756-4-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: adau1701: Update to modern clocking terminologyMark Brown1-3/+3
As part of moving to remove the old style defines for the bus clocks update the adau1701 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916151806.20756-3-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: adau1373: Update to modern clocking terminologyMark Brown1-7/+7
As part of moving to remove the old style defines for the bus clocks update the adau1373 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916151806.20756-2-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: adau1372: Update to modern clocking terminologyMark Brown1-7/+7
As part of moving to remove the old style defines for the bus clocks update the adau1372 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916151806.20756-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ad1836: Update to modern clocking terminologyMark Brown1-3/+3
As part of moving to remove the old style defines for the bus clocks update the ad1836 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916142125.7226-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ep93xx: Convert to modern clocking terminologyMark Brown3-7/+7
As part of the effort to remove our old APIs based on outdated terminology update the EP93xx drivers to use modern terminology. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916143828.36215-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: samsung: add missing "fallthrough;"Arnd Bergmann1-0/+2
With gcc, we get a warning in this file: In file included from include/linux/io.h:13, from sound/soc/samsung/s3c-i2s-v2.c:16: sound/soc/samsung/s3c-i2s-v2.c: In function 's3c2412_i2s_trigger': arch/arm/include/asm/io.h:92:22: error: this statement may fall through [-Werror=implicit-fallthrough=] #define __raw_writel __raw_writel ^ arch/arm/include/asm/io.h:299:29: note: in expansion of macro '__raw_writel' #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c) ^~~~~~~~~~~~ arch/arm/include/asm/io.h:307:36: note: in expansion of macro 'writel_relaxed' #define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); }) ^~~~~~~~~~~~~~ sound/soc/samsung/s3c-i2s-v2.c:398:3: note: in expansion of macro 'writel' writel(0x0, i2s->regs + S3C2412_IISFIC); ^~~~~~ sound/soc/samsung/s3c-i2s-v2.c:400:2: note: here case SNDRV_PCM_TRIGGER_RESUME: ^~~~ From all I can tell, this was indeed meant to fall through, so add "fallthrough;" statement to avoid the warning. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> Link: https://lore.kernel.org/r/20210927095449.1070639-1-arnd@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ak4642: Use modern ASoC DAI format terminologyMark Brown1-4/+4
As part of moving to remove the old style defines for the bus clocks update the ak4642 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210920164042.16624-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wcd9335: Use correct version to initialize Class HYassine Oudjana1-1/+1
The versioning scheme was changed in an earlier patch, which caused the version being used to initialize WCD9335 to be interpreted as if it was WCD937X, which changed code paths causing broken headphones output. Pass WCD9335 instead of WCD9335_VERSION_2_0 to wcd_clsh_ctrl_alloc to fix it. Fixes: 19c5d1f6a0c3 ("ASoC: codecs: wcd-clsh: add new version support") Signed-off-by: Yassine Oudjana <y.oudjana@protonmail.com> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20210925022339.786296-1-y.oudjana@protonmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: alc5632: Use modern ASoC DAI format terminologyMark Brown1-4/+4
As part of moving to remove the old style defines for the bus clocks update the alc5632 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210920165128.17224-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ak4104: Update to modern clocking terminologyMark Brown1-2/+2
As part of moving to remove the old style defines for the bus clocks update the ak4104 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916150922.20183-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: ak4118: Update to modern clocking terminologyMark Brown1-11/+9
As part of moving to remove the old style defines for the bus clocks update the ak4118 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210916150804.20058-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: zl38060: Update to modern clocking terminologyMark Brown1-2/+2
As part of moving to remove the old style defines for the bus clocks update the zl38060 driver to use more modern terminology for clocking. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210921205117.4393-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27firmware: cs_dsp: add driver to support firmware loading on Cirrus Logic DSPsSimon Trimmer4-3208/+37
wm_adsp originally provided firmware loading on some audio DSP and was implemented as an ASoC codec driver. However, the firmware loading now covers a wider range of DSP cores and peripherals containing them, beyond just audio. So it needs to be available to non-audio drivers. All the core firmware loading support has been moved into a new driver cs_dsp, leaving only the ASoC-specific parts in wm_adsp. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-17-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Separate wm_adsp specifics in cs_dsp_client_opsSimon Trimmer2-10/+48
This is preparation for moving the generic DSP support out of ASoC. The event callbacks let the client add custom handling of events. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-16-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Split out struct cs_dsp from struct wm_adspSimon Trimmer12-277/+307
In preparation for moving the generic DSP support out of ASoC split struct wm_adsp into two parts, one will form the structure for the new generic DSP code and embed that one into wm_adsp. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-15-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: move firmware loading to clientSimon Trimmer1-51/+112
This is preparation for moving the generic DSP support out of ASoC. Passing the firmware as parameters into the power_up functions simplifies the generic code that will be moved out of wm_adsp. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-14-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Pass firmware names as parameters when starting DSP coreSimon Trimmer2-17/+27
As preparation for moving the generic DSP support out of ASoC pass the firmware names used when loading files as parameters as the generic code can't refer directly to the array specific to wm_adsp. The code remaining in wm_adsp.c doesn't need to change, it can continue to use the string arrays directly. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-13-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Move check of dsp->running to better placeSimon Trimmer1-1/+4
In preparation for moving the generic DSP support out of ASoC, move the check of dsp->running to a more appropriate place that will move to the generic code. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-12-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Separate generic cs_dsp_coeff_ctl handlingSimon Trimmer2-127/+176
This is preparation for moving the generic DSP support out of ASoC. The majority of the handling of firmware controls is generic and this change separates the generic and ASoC specific details into separate structures and functions and renames the generic code named wm_* to cs_*. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-11-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Move sys_config_size to wm_adspCharles Keepax2-7/+7
sys_config_size is part of the compressed stream support, move it from what will become generic DSP code so that it remains in ASoC. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-10-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Split DSP power operations into helper functionsSimon Trimmer1-222/+273
This is preparation for moving the generic DSP support out of ASoC. This change separates the generic handling of power and state transitions from the DAPM API wrapper. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-9-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Separate some ASoC and generic functionsSimon Trimmer1-31/+74
Split some functions into ASoC and generic portions so that existing interfaces can be retained whilst allowing the implementation to be moved out of ASoC. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-8-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Introduce cs_dsp logging macrosSimon Trimmer1-227/+234
In preparation for moving the generic DSP support out of ASoC, add some new logging macros that will be used from the generic code. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-7-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Rename generic DSP supportSimon Trimmer11-472/+472
This rename is preparation for moving the generic DSP support out of ASoC, generic code named wm_* will be renamed to cs_*. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-6-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Cancel ongoing work when removing controlsSimon Trimmer1-25/+9
Removes wm_adsp_ctl_work and integrates the work_struct into wm_coeff_ctl so it may be referenced. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-5-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Switch to using wm_coeff_read_ctrl for compressed buffersCharles Keepax1-17/+7
When parsing a compressed buffer from the firmware the driver currently open codes reading the firmware coefficient containing the buffer description. Improve this slightly by using the coefficient read functions already provided by the wm_adsp driver. It is worth noting this change requires the running variable to be set before wm_adsp_buffer_init is called, however this is safe, since its all still under the power lock and nothing in the compressed code gates itself on running. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-4-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Move check for control existenceCharles Keepax1-8/+13
Checking earlier in the function if a control already exists avoids superfluous string construction and also prepares for future refactoring. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-3-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: wm_adsp: Remove use of snd_ctl_elem_type_tSimon Trimmer2-16/+16
In preparation for moving the generic DSP support out of ASoC, remove the use of the ALSA specific types for the control type. The use of an ALSA type was unnecessary, the simplified code is easier to read and avoids Sparse warnings. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210913160057.103842-2-simont@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: cs4341: Add SPI device ID tableMark Brown1-0/+7
Currently autoloading for SPI devices does not use the DT ID table, it uses SPI modalises. Supporting OF modalises is going to be difficult if not impractical, an attempt was made but has been reverted, so ensure that module autoloading works for this driver by adding SPI IDs for parts that only have a compatible listed. Fixes: 96c8395e2166 ("spi: Revert modalias changes") Signed-off-by: Mark Brown <broonie@kernel.org> Cc: patches@opensource.cirrus.com Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20210924194844.45974-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
2021-09-27ASoC: pcm179x: Add missing entries SPI to device ID tableMark Brown1-0/+1
Currently autoloading for SPI devices does not use the DT ID table, it uses SPI modalises. Supporting OF modalises is going to be difficult if not impractical, an attempt was made but has been reverted, so ensure that module autoloading works for this driver by adding SPI IDs for parts that only have a compatible listed. Fixes: 96c8395e2166 ("spi: Revert modalias changes") Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210924194956.46079-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>