- 04 Feb, 2021 1 commit
-
-
Stephen Boyd authored
This reverts commit a06cd8cf ("ASoC: da7218: skip of_device_id table when !CONFIG_OF") because we want to make of_match_device() stop using of_match_ptr() internally, confusing compilers and causing ifdef pollution. Reported-by: kernel test robot <lkp@intel.com> Cc: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Arnd Bergmann <arnd@arndb.de> Cc: Mark Brown <broonie@kernel.org> Signed-off-by: Stephen Boyd <swboyd@chromium.org> Link: https://lore.kernel.org/r/20210202192016.49028-1-swboyd@chromium.orgSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 03 Feb, 2021 7 commits
-
-
Mark Brown authored
Merge series "ASoC: soc-pcm: cleanup soc_new_pcm() and bugfix" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: Hi Mark These are soc-pcm cleanup patchset. 1) - 3) : cleanup soc_new_pcm() function 4) : cleanup dpcm_runtime_merge_xxx() function 5) : bugfix of snd_pcm_limit_hw_rates() order Kuninori Morimoto (5): 1) ASoC: soc-pcm: tidyup pcm setting 2) ASoC: soc-pcm: add soc_get_playback_capture() and simplify soc_new_pcm() 3) ASoC: soc-pcm: add soc_create_pcm() and simplify soc_new_pcm() 4) ASoC: soc-pcm: use snd_pcm_hardware at dpcm_runtime_merge_xxx() 5) ASoC: soc-pcm: fixup snd_pcm_limit_hw_rates() timing sound/soc/soc-pcm.c | 124 +++++++++++++++++++++++++++----------------- 1 file changed, 75 insertions(+), 49 deletions(-) -- 2.25.1
-
Kuninori Morimoto authored
soc-pcm has snd_pcm_limit_hw_rates() which determine rate_min/rate_max. It updates runtime->hw.rate_min/max (A) based on hw->rates (B). int snd_pcm_limit_hw_rates(...) { int i; for (...) { (B) if (runtime->hw.rates & (1 << i)) { (A) runtime->hw.rate_min = ... break; } } for (...) { (B) if (runtime->hw.rates & (1 << i)) { (A) runtime->hw.rate_max = ... break; } } return 0; } This means, setup order is 1) set hw->rates 2) call snd_pcm_limit_hw_rates() 3) update hw->rate_min/max soc_pcm_init_runtime_hw() is calling it in good order static void soc_pcm_init_runtime_hw(xxx) { ... 1) hw->rates = snd_pcm_rate_mask_intersect(...); 2) snd_pcm_limit_hw_rates(...); 3) hw->rate_min = max(...); hw->rate_min = max(...); hw->rate_max = min_not_zero(...); hw->rate_max = min_not_zero(...); } But, dpcm_fe_dai_startup() is not. static int dpcm_fe_dai_startup(xxx) { ... 1) 3) dpcm_set_fe_runtime(...); 2) snd_pcm_limit_hw_rates(...); ... } More detail of dpcm_set_fe_runtime() is static void dpcm_set_fe_runtime() { ... for_each_rtd_cpu_dais(rtd, i, cpu_dai) { ... 3) 1) dpcm_init_runtime_hw(...); } ... 3) 1) dpcm_runtime_merge_rate(...); } This patch fixup these into static void dpcm_set_fe_runtime() { ... for_each_rtd_cpu_dais(rtd, i, cpu_dai) { ... 1) 2) 3) dpcm_init_runtime_hw(...); } ... 1) 2) 3) dpcm_runtime_merge_rate(...); } static int dpcm_fe_dai_startup(xxx) { ... dpcm_set_fe_runtime(...); - snd_pcm_limit_hw_rates(...); ... } Link: https://lore.kernel.org/r/87k15l7ewd.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/8735ytaig8.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Kuninori Morimoto authored
soc-pcm has dpcm_runtime_merge_xxx() functions, but uses parameters are very verbose. dpcm_runtime_merge_format(..., &runtime->hw.formats); dpcm_runtime_merge_chan(..., &runtime->hw.channels_min, &runtime->hw.channels_max); dpcm_runtime_merge_rate(..., &runtime->hw.rates, &runtime->hw.rate_min, &runtime->hw.rate_max); We want to replace it into dpcm_runtime_merge_format(..., runtime); dpcm_runtime_merge_chan(..., runtime); dpcm_runtime_merge_rate(..., runtime); This patch do it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/874kj9aigd.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Kuninori Morimoto authored
soc_new_pcm() implementation is very long / verbose / complex, thus, it is very difficult to read. If we read it carefully, we can notice that it is consisted by int soc_new_pcm(...) { (1) judging playback/caputre part (2) creating the PCM part (3) setup pcm/rtd part } This patch adds new soc_create_pcm() for (2) part and offload it from snd_pcm_new(). Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/875z3paigi.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Kuninori Morimoto authored
soc_new_pcm() implementation is very long / verbose / complex, thus, it is very difficult to read. If we read it carefully, we can notice that it is consisted by int soc_new_pcm(...) { (1) judging playback/caputre part (2) creating the PCM part (3) setup pcm/rtd part } This patch adds new soc_get_playback_capture() for (1) part and offload it from soc_new_pcm(). Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/877do5aign.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Kuninori Morimoto authored
Current soc_new_pcm() setups pcm randomly. This patch tidyup it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/878s8laigt.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Yang Li authored
Eliminate the following coccicheck warning: ./sound/soc/intel/catpt/pcm.c:355:2-3: Unneeded semicolon Reported-by: Abaci Robot <abaci@linux.alibaba.com> Signed-off-by: Yang Li <yang.lee@linux.alibaba.com> Acked-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/1612166481-121376-1-git-send-email-yang.lee@linux.alibaba.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 02 Feb, 2021 3 commits
-
-
Amadeusz Sławiński authored
When creating topology templates and overriding data in specific test cases it should be done with cpu_to_le32 macro, so we operate on correct data on all architectures, as topology parser use le32_to_cpu to parse data from structures. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20210202163123.3942040-1-amadeuszx.slawinski@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Tang Bin authored
Utilize the defined parameter 'dev' to make the code cleaner. Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com> Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com> Link: https://lore.kernel.org/r/20210128112714.16324-1-tangbin@cmss.chinamobile.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Tzung-Bi Shih authored
DT properties "dmic-mode" and "mic-type-X" are optional. Reduces the log verbosity and changes the message a bit to avoid misleading. Signed-off-by: Tzung-Bi Shih <tzungbi@google.com> Link: https://lore.kernel.org/r/20210202033557.1621029-1-tzungbi@google.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 01 Feb, 2021 6 commits
-
-
Mark Brown authored
This series adds support for audio graph based solution on Tegra186 and Tegra194. This enables audio paths for I2S, DMIC and DSPK modules. Depending on the platform Jetson TX2 or Jetson AGX Xavier, required I/O module instances are enabled. Since the latter board has on board audio codec, DT support for the same is enabled and external audio playback and capture can be used. Changelog ========= v1 --> v2: ---------- - Dropped patch "ASoC: tegra: Select SND_SOC_RT5659" as per suggestion from Mark. - Add new patch "ASoC: rt5659: Add Kconfig prompt" - Add new patch "arm64: defconfig: Enable RT5659" - No changes in other patches from earlier series. Sameer Pujar (9): ASoC: dt-bindings: rt5659: Update binding doc ASoC: dt-bindings: tegra: Add iommus property to Tegra graph card ASoC: audio-graph-card: Add clocks property to endpoint node ASoC: rt5659: Add Kconfig prompt arm64: defconfig: Enable RT5659 arm64: tegra: Add RT5658 device entry Revert "arm64: tegra: Disable the ACONNECT for Jetson TX2" arm64: tegra: Audio graph sound card for Jetson TX2 arm64: tegra: Audio graph sound card for Jetson AGX Xavier .../bindings/sound/audio-graph-port.yaml | 3 + .../sound/nvidia,tegra-audio-graph-card.yaml | 3 + Documentation/devicetree/bindings/sound/rt5659.txt | 11 + arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 609 +++++++++++++++++++++ arch/arm64/boot/dts/nvidia/tegra186.dtsi | 22 + arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts | 468 ++++++++++++++++ arch/arm64/boot/dts/nvidia/tegra194.dtsi | 20 + arch/arm64/configs/defconfig | 1 + sound/soc/codecs/Kconfig | 2 +- 9 files changed, 1138 insertions(+), 1 deletion(-) -- 2.7.4
-
Geert Uytterhoeven authored
Audio Graph Card based Tegra driver is only useful on NVIDIA Tegra SoCs. Hence add a dependency on SND_SOC_TEGRA, to prevent asking the user about this driver when configuring a kernel without Tegra sound support. Wrap all Tegra sound config options inside a big if/endif block, instead of just adding the dependency to the single config option that does not have it yet, to preventing similar future mistakes. Fixes: 202e2f77 ("ASoC: tegra: Add audio graph based card driver") Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/20210129125915.2652952-1-geert+renesas@glider.beSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sameer Pujar authored
Add tristate prompt to allow codec selection. Cc: Oder Chiou <oder_chiou@realtek.com> Cc: Bard Liao <bardliao@realtek.com> Signed-off-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/1611944866-29373-5-git-send-email-spujar@nvidia.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sameer Pujar authored
Add optional 'clocks' property to audio port 'endpoint' node. One such example is where SoC supplies a clock to external audio codec component. Signed-off-by: Sameer Pujar <spujar@nvidia.com> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Reviewed-by: Jon Hunter <jonathanh@nvidia.com> Link: https://lore.kernel.org/r/1611944866-29373-4-git-send-email-spujar@nvidia.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sameer Pujar authored
Document 'iommus' property for APE (Audio Processing Engine) sound card. Signed-off-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/1611944866-29373-3-git-send-email-spujar@nvidia.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Sameer Pujar authored
Update following in rt5659.txt binding doc - Add JD source for Intel HDA header: Commit 041e74b7 ("ASoC: rt5659: Add the support of Intel HDA Header") added driver support. Add missing info here. - sound-name-prefix: Used to prefix component widgets/kcontrols with given prefix. - ports: Helps to use the Codec with audio graph card Signed-off-by: Sameer Pujar <spujar@nvidia.com> Reported-by: Jon Hunter <jonathanh@nvidia.com> Cc: Oder Chiou <oder_chiou@realtek.com> Cc: Bard Liao <bardliao@realtek.com> Link: https://lore.kernel.org/r/1611944866-29373-2-git-send-email-spujar@nvidia.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 29 Jan, 2021 1 commit
-
-
Srinivas Kandagatla authored
microblaze-linux-gcc (GCC) 9.3.0 complains about missing __ffssi2 symbol while using __builtin_ffs at runtime. This is because arch/h8300 is compiled with -fno-builtin option. so fallback and use kernel ffs() instead to all the arch builds happy! Fixes: 1da0b989 ("ASoC: soc-component: add snd_soc_component_read/write_field()") Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20210129100539.23459-1-srinivas.kandagatla@linaro.orgSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 28 Jan, 2021 7 commits
-
-
Mark Brown authored
Merge series "ASoC: SOF: use common code for DSP core pm" from Kai Vehmanen <kai.vehmanen@linux.intel.com>: Series to refactor the DSP core management: - move tracking of powered up DSP cores to common SOF code - add logic filter unnecessary power actions - modify existing implementations to use common code whenever DSP cores are powered, so the state in common code stays in sync Bard Liao (5): ASoC: SOF: Intel: hda: use snd_sof_dsp_core_power_up/down API ASoC: SOF: Intel: hda-loader: keep init cores alive ASoC: SOF: update dsp core power status in common APIs ASoC: SOF: Filter out unneeded core power up/downs ASoC: SOF: intel: hda-loader: use snd_sof_dsp_core_power_down/up APIs sound/soc/sof/intel/hda-dsp.c | 2 +- sound/soc/sof/intel/hda-loader.c | 9 +++++---- sound/soc/sof/intel/hda.c | 2 +- sound/soc/sof/loader.c | 6 ------ sound/soc/sof/ops.h | 24 ++++++++++++++++++------ sound/soc/sof/pm.c | 1 - sound/soc/sof/topology.c | 8 -------- 7 files changed, 25 insertions(+), 27 deletions(-) base-commit: e32df142 -- 2.29.2
-
Kai Vehmanen authored
The snd-soc-acpi-intel-match has duplicate module tags for all platforms separately. Remove all but one and save some storage space and cleanup modinfo output. Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20210128105751.1049837-1-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Bard Liao authored
To manage enabled_cores_mask flag, we should always use snd_sof_dsp_ core_power_down/up APIs to power up/down dsp cores. The APIs do a little bit more than the original functions, but it is harmless. Suggested-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20210128093850.1041387-6-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Bard Liao authored
Exclude cores that are already powered on/off correctly. This allows to simplify dsp_power_up/down() implementations and avoid unexpected error. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20210128093850.1041387-5-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Bard Liao authored
Only manage enabled_cores_mask in common snd_sof_dsp_core_power_up/down APIs to ensure it stays in sync with actual DSP core state. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20210128093850.1041387-4-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Bard Liao authored
init_core_mask should be the available cores mask after fw boot. So we should keep not core 0 but init cores alive. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20210128093850.1041387-3-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Bard Liao authored
To implement common logic in SOF core, core power up/down flows should use common SOF API and not directly use low-level platform specific helper functions. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20210128093850.1041387-2-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 27 Jan, 2021 7 commits
-
-
Libin Yang authored
ADL will use sof-adl-s.ri if it is ADL-S platform. So let's use the default_fw_filename in pdata->desc for the ADL FW filename. Signed-off-by: Libin Yang <libin.yang@intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Bard Liao <bard.liao@intel.com> Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20210125070500.807474-3-kai.vehmanen@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Mark Brown authored
Merge series "ASoC: SOF: Intel: hda: Enable DMI L1 for power savings" from Ranjani Sridharan <ranjani.sridharan@linux.intel.com>: This series includes 2 patches that enable DMI L1 for D0I3-compatible streams and trace DMA stream to maximise power savings on Intel HDA platforms. v2 changes: FIx compilation error when probes feature is enabled in SOF Kconfig. Ranjani Sridharan (2): ASoC: SOF: Intel: hda: enable DMI L1 for D0i3-compatible streams ASoC: SOF: Intel: hda: Enable DMI L1 for trace sound/soc/sof/intel/hda-compress.c | 2 +- sound/soc/sof/intel/hda-loader.c | 2 +- sound/soc/sof/intel/hda-pcm.c | 16 ++++++++++++- sound/soc/sof/intel/hda-stream.c | 38 +++++++++++++++++------------- sound/soc/sof/intel/hda-trace.c | 4 ++-- sound/soc/sof/intel/hda.h | 6 ++++- 6 files changed, 46 insertions(+), 22 deletions(-) -- 2.25.1
-
Bjorn Helgaas authored
Fix misspellings of "physical". Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20210126212023.2921168-1-helgaas@kernel.orgSigned-off-by: Mark Brown <broonie@kernel.org>
-
Srinivas Kandagatla authored
Make use of snd_soc_component_read_field() to make the code more readable! Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20210126171749.1863-2-srinivas.kandagatla@linaro.orgSigned-off-by: Mark Brown <broonie@kernel.org>
-
Srinivas Kandagatla authored
It's often the case that we would write or read a particular field in register. With the current soc_component apis, reading a particular field in register would involve first read the register and then perform shift operations. Ex: to read from a field mask of 0xf0 val = snd_soc_component_read(component, reg); field = ((val & 0xf0) >> 0x4); This is sometimes prone to errors and code become less readable! With this new api we could just do field = snd_soc_component_read_field(component, reg, 0xf0); this makes it bit simple, easy to write and less error prone! This also applies to writing! There are various places in kernel which provides such field interfaces however soc_component seems to be missing this. This patch is inspired by FIELD_GET/FIELD_PREP macros in include/linux/bitfield.h Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20210126171749.1863-1-srinivas.kandagatla@linaro.orgSigned-off-by: Mark Brown <broonie@kernel.org>
-
Ranjani Sridharan authored
Enabling DMI L1 for capture streams could result in xruns during pause/release. As pause/release is not a valid scenario for trace, we can safely enable DMI L1 for it. Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://lore.kernel.org/r/20210127020737.1088960-3-ranjani.sridharan@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Ranjani Sridharan authored
DMI L1 entry is currently disabled whenever any capture stream is opened to prevent xruns during pause/release. But, in order to maximise power savings for the wake-on-voice usecase, DMI L1 entry should be enabled for D0i3-compatible capture streams. Introduce a new field, flags in struct sof_intel_hda_stream that stores whether a stream is dmi_l1_compatible. All playback streams, and D0i3-compatible capture streams are DMI L1 compatible. Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://lore.kernel.org/r/20210127020737.1088960-2-ranjani.sridharan@linux.intel.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 25 Jan, 2021 3 commits
-
-
Dmitry Osipenko authored
Assert hardware resets before clocks are enabled and then de-assert them after clocks are enabled. This brings hardware into a predictable state. Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30 audio works Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30 boot-tested Tested-by: Dmitry Osipenko <digetx@gmail.com> # Nexus7 T30 audio works Tested-by: Nicolas Chauvet <kwizart@gmail.com> # TK1 boot-tested Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Link: https://lore.kernel.org/r/20210120003154.26749-7-digetx@gmail.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Dmitry Osipenko authored
Use clk_bulk helpers to make code cleaner. Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30 audio works Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30 boot-tested Tested-by: Dmitry Osipenko <digetx@gmail.com> # Nexus7 T30 audio works Tested-by: Nicolas Chauvet <kwizart@gmail.com> # TK1 boot-tested Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Link: https://lore.kernel.org/r/20210120003154.26749-6-digetx@gmail.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Dmitry Osipenko authored
AHUB driver misses D_AUDIO and APBIF resets. CPU hangs on trying to access hardware if resets aren't de-asserted. This problem is currently masked by the tegra-clk driver which implicitly de-asserts the resets when the corresponding clocks are enabled. Soon the implicit de-assertion will be gone from the tegra-clk driver, thus we need to fix the AHUB driver. Add the missing resets to the driver. Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30 audio works Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30 boot-tested Tested-by: Dmitry Osipenko <digetx@gmail.com> # Nexus7 T30 audio works Tested-by: Nicolas Chauvet <kwizart@gmail.com> # TK1 boot-tested Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Link: https://lore.kernel.org/r/20210120003154.26749-5-digetx@gmail.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
- 21 Jan, 2021 5 commits
-
-
Mark Brown authored
Merge series "Add sanity checks for topology API calls" from Amadeusz Sławiński<amadeuszx.slawinski@linux.intel.com>: Topology API exposes just 2 function calls, to load and unload topology. This adds sanity checks to make sure that it behaves well when some of parameters are set incoorectly or not needed. This makes developer live easier by failing early instead of proceeding on and then failing in unexpected ways. As loading and unloading topology usually happens one the overhead of additional checks should be negligible. Amadeusz Sławiński (2): ASoC: topology: Ensure that needed parameters are set ASoC: topology: Check if ops is set before dereference sound/soc/soc-topology.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) -- 2.25.1
-
Mark Brown authored
Merge series "ASoC: sync parameter naming : rate / sample_bits" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: Hi Mark snd_pcm_runtime / snd_soc_dai / snd_soc_dai_driver / snd_soc_dai_link have related parameter which is similar but not same naming. struct snd_pcm_runtime { ... (A) unsigned int rate; ... (B) unsigned int sample_bits; ... }; struct snd_soc_dai { ... (A) unsigned int rate; (B) unsigned int sample_bits; ... }; struct snd_soc_dai_driver { ... (A) unsigned int symmetric_rates:1; (B) unsigned int symmetric_samplebits:1; ... }; struct snd_soc_dai_link { ... (A) unsigned int symmetric_rates:1; (B) unsigned int symmetric_samplebits:1; ... }; Because it is similar but not same naming rule, code can be verbose / can't share macro. This patch-set sync naming rule to struct snd_pcm_runtime base. - xxx_rates; + xxx_rate; - xxx_samplebits; + xxx_sample_bits; Kuninori Morimoto (44): ASoC: soc-pcm: revert soc_pcm_apply_symmetry() ASoC: sync parameter naming : rate / sample_bits ASoC: adi: sync parameter naming (rate/sample_bits) ASoC: atmel: sync parameter naming (rate/sample_bits) ASoC: au1x: sync parameter naming (rate/sample_bits) ASoC: bcm: sync parameter naming (rate/sample_bits) ASoC: cirrus: sync parameter naming (rate/sample_bits) ASoC: tegra: sync parameter naming (rate/sample_bits) ASoC: rockchip: sync parameter naming (rate/sample_bits) ASoC: samsung: sync parameter naming (rate/sample_bits) ASoC: sh: sync parameter naming (rate/sample_bits) ASoC: ti: sync parameter naming (rate/sample_bits) ASoC: pxa: sync parameter naming (rate/sample_bits) ASoC: mediatek: sync parameter naming (rate/sample_bits) ASoC: fsl: sync parameter naming (rate/sample_bits) ASoC: wm*: sync parameter naming (rate/sample_bits) ASoC: tlv*: sync parameter naming (rate/sample_bits) ASoC: rt*: sync parameter naming (rate/sample_bits) ASoC: nau*: sync parameter naming (rate/sample_bits) ASoC: tas*: sync parameter naming (rate/sample_bits) ASoC: da*: sync parameter naming (rate/sample_bits) ASoC: es*: sync parameter naming (rate/sample_bits) ASoC: max*: sync parameter naming (rate/sample_bits) ASoC: cs*: sync parameter naming (rate/sample_bits) ASoC: tscs*: sync parameter naming (rate/sample_bits) ASoC: ak*: sync parameter naming (rate/sample_bits) ASoC: adau*: sync parameter naming (rate/sample_bits) ASoC: jz4740: sync parameter naming (rate/sample_bits) ASoC: sunxi: sync parameter naming (rate/sample_bits) ASoC: zl38060: sync parameter naming (rate/sample_bits) ASoC: ssm2602: sync parameter naming (rate/sample_bits) ASoC: sgtl5000: sync parameter naming (rate/sample_bits) ASoC: mc13783: sync parameter naming (rate/sample_bits) ASoC: mt6660: sync parameter naming (rate/sample_bits) ASoC: lochnagar-sc: sync parameter naming (rate/sample_bits) ASoC: ab8500: sync parameter naming (rate/sample_bits) ASoC: alc5632: sync parameter naming (rate/sample_bits) ASoC: cx2072x: sync parameter naming (rate/sample_bits) ASoC: inno_rk3036: sync parameter naming (rate/sample_bits) ASoC: lm49453: sync parameter naming (rate/sample_bits) ASoC: ml26124: sync parameter naming (rate/sample_bits) ASoC: soc-dai.h: remove symmetric_rates/samplebits ASoC: soc-pcm: cleanup soc_pcm_apply_symmetry() ASoC: soc-pcm: cleanup soc_pcm_params_symmetry() include/sound/soc-dai.h | 4 +- include/sound/soc.h | 4 +- sound/soc/adi/axi-i2s.c | 2 +- sound/soc/atmel/atmel-i2s.c | 2 +- sound/soc/atmel/mchp-i2s-mcc.c | 4 +- sound/soc/au1x/i2sc.c | 2 +- sound/soc/bcm/bcm2835-i2s.c | 4 +- sound/soc/bcm/bcm63xx-i2s-whistler.c | 2 +- sound/soc/cirrus/ep93xx-i2s.c | 2 +- sound/soc/codecs/ab8500-codec.c | 4 +- sound/soc/codecs/adau1372.c | 2 +- sound/soc/codecs/adau1373.c | 6 +- sound/soc/codecs/adau1701.c | 2 +- sound/soc/codecs/ak4554.c | 2 +- sound/soc/codecs/ak4613.c | 2 +- sound/soc/codecs/ak4641.c | 4 +- sound/soc/codecs/ak4642.c | 2 +- sound/soc/codecs/alc5632.c | 2 +- sound/soc/codecs/cs35l32.c | 2 +- sound/soc/codecs/cs35l33.c | 2 +- sound/soc/codecs/cs35l34.c | 2 +- sound/soc/codecs/cs35l35.c | 2 +- sound/soc/codecs/cs35l36.c | 2 +- sound/soc/codecs/cs4234.c | 2 +- sound/soc/codecs/cs4271.c | 2 +- sound/soc/codecs/cs42l73.c | 6 +- sound/soc/codecs/cs43130.c | 6 +- sound/soc/codecs/cs4341.c | 2 +- sound/soc/codecs/cs4349.c | 2 +- sound/soc/codecs/cs47l15.c | 12 ++-- sound/soc/codecs/cs47l24.c | 12 ++-- sound/soc/codecs/cs47l35.c | 12 ++-- sound/soc/codecs/cs47l85.c | 16 ++--- sound/soc/codecs/cs47l90.c | 16 ++--- sound/soc/codecs/cs47l92.c | 12 ++-- sound/soc/codecs/cs53l30.c | 2 +- sound/soc/codecs/cx2072x.c | 2 +- sound/soc/codecs/da7210.c | 2 +- sound/soc/codecs/da7213.c | 2 +- sound/soc/codecs/da7218.c | 4 +- sound/soc/codecs/da7219.c | 4 +- sound/soc/codecs/da9055.c | 2 +- sound/soc/codecs/es8316.c | 2 +- sound/soc/codecs/es8328.c | 2 +- sound/soc/codecs/inno_rk3036.c | 2 +- sound/soc/codecs/jz4740.c | 2 +- sound/soc/codecs/lm49453.c | 2 +- sound/soc/codecs/lochnagar-sc.c | 12 ++-- sound/soc/codecs/max9860.c | 2 +- sound/soc/codecs/max9867.c | 2 +- sound/soc/codecs/mc13783.c | 2 +- sound/soc/codecs/ml26124.c | 2 +- sound/soc/codecs/mt6660.c | 4 +- sound/soc/codecs/nau8810.c | 2 +- sound/soc/codecs/nau8822.c | 2 +- sound/soc/codecs/rt274.c | 2 +- sound/soc/codecs/rt286.c | 4 +- sound/soc/codecs/rt298.c | 4 +- sound/soc/codecs/rt5670.c | 4 +- sound/soc/codecs/sgtl5000.c | 2 +- sound/soc/codecs/ssm2602.c | 4 +- sound/soc/codecs/tas2764.c | 2 +- sound/soc/codecs/tas2770.c | 2 +- sound/soc/codecs/tlv320adcx140.c | 2 +- sound/soc/codecs/tlv320aic31xx.c | 4 +- sound/soc/codecs/tlv320aic32x4.c | 2 +- sound/soc/codecs/tlv320aic3x.c | 2 +- sound/soc/codecs/tscs42xx.c | 4 +- sound/soc/codecs/tscs454.c | 12 ++-- sound/soc/codecs/wm5102.c | 12 ++-- sound/soc/codecs/wm5110.c | 12 ++-- sound/soc/codecs/wm8510.c | 2 +- sound/soc/codecs/wm8731.c | 2 +- sound/soc/codecs/wm8770.c | 2 +- sound/soc/codecs/wm8804.c | 2 +- sound/soc/codecs/wm8903.c | 2 +- sound/soc/codecs/wm8904.c | 2 +- sound/soc/codecs/wm8940.c | 2 +- sound/soc/codecs/wm8960.c | 2 +- sound/soc/codecs/wm8962.c | 2 +- sound/soc/codecs/wm8974.c | 2 +- sound/soc/codecs/wm8978.c | 2 +- sound/soc/codecs/wm8983.c | 2 +- sound/soc/codecs/wm8985.c | 2 +- sound/soc/codecs/wm8988.c | 2 +- sound/soc/codecs/wm8993.c | 2 +- sound/soc/codecs/wm8994.c | 4 +- sound/soc/codecs/wm8997.c | 8 +-- sound/soc/codecs/wm8998.c | 12 ++-- sound/soc/codecs/wm9713.c | 2 +- sound/soc/codecs/zl38060.c | 4 +- sound/soc/fsl/fsl_esai.c | 4 +- sound/soc/fsl/fsl_sai.c | 8 +-- sound/soc/fsl/fsl_ssi.c | 4 +- sound/soc/jz4740/jz4740-i2s.c | 2 +- sound/soc/mediatek/mt2701/mt2701-afe-pcm.c | 10 +-- sound/soc/mediatek/mt6797/mt6797-dai-pcm.c | 8 +-- sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 2 +- sound/soc/mediatek/mt8183/mt8183-dai-pcm.c | 8 +-- sound/soc/mediatek/mt8192/mt8192-dai-pcm.c | 8 +-- sound/soc/pxa/pxa2xx-i2s.c | 2 +- sound/soc/rockchip/rockchip_i2s.c | 4 +- sound/soc/rockchip/rockchip_pdm.c | 2 +- sound/soc/samsung/i2s.c | 2 +- sound/soc/samsung/pcm.c | 2 +- sound/soc/sh/rcar/core.c | 4 +- sound/soc/soc-pcm.c | 80 +++++++--------------- sound/soc/soc-topology.c | 8 +-- sound/soc/sunxi/sun4i-i2s.c | 2 +- sound/soc/sunxi/sun8i-codec.c | 12 ++-- sound/soc/tegra/tegra186_dspk.c | 2 +- sound/soc/tegra/tegra20_i2s.c | 2 +- sound/soc/tegra/tegra210_dmic.c | 2 +- sound/soc/tegra/tegra210_i2s.c | 2 +- sound/soc/tegra/tegra30_i2s.c | 2 +- sound/soc/ti/davinci-mcasp.c | 2 +- 116 files changed, 253 insertions(+), 283 deletions(-) -- 2.25.1
-
Mark Brown authored
Merge series "Add KUNIT tests for ASoC topology" from Amadeusz Sławiński<amadeuszx.slawinski@linux.intel.com>: This series adds unit tests for ASoC topology. First fix problems found when developing and running test cases and then add tests implementation. Tests themselves are quite simple and just call snd_soc_tplg_component_load() with various parameters and check the result. Tests themselves are described in more detail in commits adding them. Goal is to expand the amount of test cases in following patches. Prerequisity for this patchset are 2 patches which have already been sent: https://lore.kernel.org/alsa-devel/20210114163602.911205-1-amadeuszx.slawinski@linux.intel.com/T/#t Description on how typical test case itself works: In order to load topology we need to have 3 things: card, codec component & platform component. In typical test case we register card and platform component and bind to dummy codec. There are of course execeptions, when we want to test behaviour of topology API when component or card is missing. Note that this is bit different from typical scenario (in SOF and skylake drivers) where card is registered by machine driver and component by platform driver, as we register both when setting up test. If you check the test case most of them have similar architecture of: 1. /* run test */ ret = snd_soc_register_card(&kunit_comp->card); if (ret != 0 && ret != -EPROBE_DEFER) KUNIT_FAIL(test, "Failed to register card"); 2. ret = snd_soc_component_initialize(&kunit_comp->comp, &test_component, test_dev); KUNIT_EXPECT_EQ(test, 0, ret); 3. ret = snd_soc_add_component(&kunit_comp->comp, NULL, 0); KUNIT_EXPECT_EQ(test, 0, ret); Ad. 1. First we register card, which in most tests returns -EPROBE_DEFER (from snd_soc_bind_card()), as platform component is not yet created. I test for both 0 and -EPROBE_DEFER, as it makes it easier to reshuffle this code around if needed and there is one test case which does it in different order. Ad. 2. Then we initialize platform component with structure pointing at proper probe function, which calls snd_soc_tplg_component_load() with test parameters and checks expected result. Ad. 3. And then in follow up we call snd_soc_add_component() which creates platform component for us and calls snd_soc_try_rebind_card() which if everything is bound properly calls previously set probe function. Amadeusz Sławiński (5): ASoC: topology: Properly unregister DAI on removal Revert "ASoC: soc-devres: add devm_snd_soc_register_dai()" ASoC: topology: KUnit: Add KUnit tests passing various arguments to snd_soc_tplg_component_load ASoC: topology: KUnit: Add KUnit tests passing empty topology with variants to snd_soc_tplg_component_load ASoC: topology: KUnit: Add KUnit tests passing topology with PCM to snd_soc_tplg_component_load include/sound/soc.h | 4 - sound/soc/Kconfig | 17 + sound/soc/Makefile | 5 + sound/soc/soc-devres.c | 37 -- sound/soc/soc-topology-test.c | 843 ++++++++++++++++++++++++++++++++++ sound/soc/soc-topology.c | 9 +- 6 files changed, 870 insertions(+), 45 deletions(-) create mode 100644 sound/soc/soc-topology-test.c -- 2.25.1
-
Shuming Fan authored
The application circuit shall provide MICVDD power. In default, the codec driver doesn't need to enable LDO2. In case, a board wants to use VBAT for micbias, it should add a DAPM route which IN1P connects with LDO2 in the machine driver. e.g. { "IN1P", NULL, "LDO2" }, Signed-off-by: Shuming Fan <shumingf@realtek.com> Link: https://lore.kernel.org/r/20210121100353.6402-1-shumingf@realtek.comSigned-off-by: Mark Brown <broonie@kernel.org>
-
Kuninori Morimoto authored
soc_pcm_params_symmetry() checks rate/channel/sample_bits state. These are very similar but different, thus, it needs to have very verbose code. This patch use macro for it and make code more simple. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/878s8un6si.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: Mark Brown <broonie@kernel.org>
-