1. 22 Apr, 2021 1 commit
    • Arnd Bergmann's avatar
      ASoC: tegra: mark runtime-pm functions as __maybe_unused · ccd4cc3e
      Arnd Bergmann authored
      A reorganization of the driver source led to two of them causing
      a compile time warning in some configurations:
      
      tegra/tegra20_spdif.c:36:12: error: 'tegra20_spdif_runtime_resume' defined but not used [-Werror=unused-function]
         36 | static int tegra20_spdif_runtime_resume(struct device *dev)
            |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      tegra/tegra20_spdif.c:27:12: error: 'tegra20_spdif_runtime_suspend' defined but not used [-Werror=unused-function]
         27 | static int tegra20_spdif_runtime_suspend(struct device *dev)
            |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      tegra/tegra30_ahub.c:64:12: error: 'tegra30_ahub_runtime_resume' defined but not used [-Werror=unused-function]
         64 | static int tegra30_ahub_runtime_resume(struct device *dev)
            |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      tegra/tegra30_ahub.c:43:12: error: 'tegra30_ahub_runtime_suspend' defined but not used [-Werror=unused-function]
         43 | static int tegra30_ahub_runtime_suspend(struct device *dev)
            |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      Mark these functions as __maybe_unused to avoid this kind of warning.
      
      Fixes: b5571449 ("ASoC: tegra30: ahub: Remove handing of disabled runtime PM")
      Fixes: c53b396f ("ASoC: tegra20: spdif: Remove handing of disabled runtime PM")
      Fixes: 80ec4a4c ("ASoC: tegra20: i2s: Remove handing of disabled runtime PM")
      Fixes: b5f6f781 ("ASoC: tegra30: i2s: Remove handing of disabled runtime PM")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Link: https://lore.kernel.org/r/20210422133418.1757893-1-arnd@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      ccd4cc3e
  2. 21 Apr, 2021 5 commits
  3. 20 Apr, 2021 10 commits
  4. 19 Apr, 2021 14 commits
  5. 16 Apr, 2021 10 commits
    • Rob Herring's avatar
      ASoC: mt6359: Drop ASoC mt6359 ASoC accdet jack document · d63f2a88
      Rob Herring authored
      This reverts commit e61c5895.
      
      The binding document has lots of schema errors and there's been no
      effort to fix them, so let's remove it.
      
      Cc: Argus Lin <argus.lin@mediatek.com>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: Liam Girdwood <lgirdwood@gmail.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: alsa-devel@alsa-project.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-mediatek@lists.infradead.org
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Link: https://lore.kernel.org/r/20210416180118.3662904-1-robh@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      d63f2a88
    • Jack Yu's avatar
      ASoC: rt715: remove kcontrols which no longer be used · fa2f9837
      Jack Yu authored
      Using new kcontrols "Capture Switch" and "Capture Volume" instead,
      remove kcontrols which no longer be used.
      Signed-off-by: default avatarJack Yu <jack.yu@realtek.com>
      Link: https://lore.kernel.org/r/5c314f5512654aca9fff0195f77264de@realtek.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      fa2f9837
    • Jack Yu's avatar
      ASoC: rt715: add main capture switch and main capture volume · dcca646c
      Jack Yu authored
      Add main capture switch and main capture volume control.
      Main capture control has its own channel value respectivelly.
      Signed-off-by: default avatarJack Yu <jack.yu@realtek.com>
      Link: https://lore.kernel.org/r/dfd43a8db04e4d52a889d6f5c1262173@realtek.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      dcca646c
    • Jack Yu's avatar
      a48f928e
    • Mark Brown's avatar
      Merge series "ASoC: Intel: add new TGL/ADL configurations" from Pierre-Louis... · 7ae6af41
      Mark Brown authored
      Merge series "ASoC: Intel: add new TGL/ADL configurations" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
      
      Very little code but quite a few descriptors to add TigerLake (TGL)
      /AlderLake (ADL) ACPI match tables for I2S and SoundWire devices, new
      dailinks for Bluetooth offload. Some day this will be read from
      platform firmware.
      
      Also clarify how microphones are handled for SoundWire devices, and
      create modules to avoid linking the same code multiple times.
      
      Pierre-Louis Bossart (5):
        ASoC: Intel: soc-acpi: add ADL SoundWire base configurations
        ASoC: Intel: soc-acpi: add ADL jack-less SoundWire configurations
        ASoC: Intel: sof_sdw: add mutual exclusion between PCH DMIC and RT715
        ASoC: Intel: boards: handle hda-dsp-common as a module
        ASoC: Intel: boards: create sof-maxim-common module
      
      Vamshi Krishna Gopal (3):
        ASoC: Intel: soc-acpi: add entries for i2s machines in ADL match table
        ASoC: Intel: sof_sdw: add quirk for new ADL-P Rvp
        ASoC: Intel: boards: add support for adl boards in sof-rt5682
      
      Yong Zhi (1):
        ASoC: Intel: Boards: tgl_max98373: Add BT offload support
      
       sound/soc/intel/boards/Kconfig                |  18 ++
       sound/soc/intel/boards/Makefile               |  28 +-
       sound/soc/intel/boards/bxt_da7219_max98357a.c |   1 +
       sound/soc/intel/boards/bxt_rt298.c            |   1 +
       sound/soc/intel/boards/cml_rt1011_rt5682.c    |   1 +
       sound/soc/intel/boards/ehl_rt5660.c           |   1 +
       sound/soc/intel/boards/glk_rt5682_max98357a.c |   1 +
       sound/soc/intel/boards/hda_dsp_common.c       |   5 +
       sound/soc/intel/boards/skl_hda_dsp_generic.c  |   1 +
       sound/soc/intel/boards/sof_da7219_max98373.c  |   1 +
       sound/soc/intel/boards/sof_maxim_common.c     |  24 +-
       sound/soc/intel/boards/sof_maxim_common.h     |   6 +-
       sound/soc/intel/boards/sof_pcm512x.c          |   1 +
       sound/soc/intel/boards/sof_rt5682.c           |  67 ++++-
       sound/soc/intel/boards/sof_sdw.c              |  32 ++-
       sound/soc/intel/boards/sof_sdw_common.h       |   1 +
       sound/soc/intel/boards/sof_sdw_max98373.c     |   4 +-
       .../intel/common/soc-acpi-intel-adl-match.c   | 249 ++++++++++++++++++
       18 files changed, 415 insertions(+), 27 deletions(-)
      
      --
      2.25.1
      7ae6af41
    • Mark Brown's avatar
      Merge series "ASoC: soc-pcm: ignore dummy-DAI at soc_pcm_params_symmetry()"... · ac22cf52
      Mark Brown authored
      Merge series "ASoC: soc-pcm: ignore dummy-DAI at soc_pcm_params_symmetry()" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
      
      Hi Mark
      
      I noticed if we have...
      
      	1) Sound Card used DPCM
      	2) It exchanges rate to 48kHz by using .be_hw_params_fixup()
      	3) Codec had symmetric_rate = 1
      
      We will get below error.
      I didn't confirm, but maybe same things happen
      if it exchanged channels/sample_bits.
      
      	# aplay 44100.wav
      	# aplay 44100.wav
      =>	[kernel] be.ak4613-hifi: ASoC: unmatched rate symmetry: snd-soc-dummy-dai:44100 - soc_pcm_params_symmetry:48000
      	[kernel] be.ak4613-hifi: ASoC: hw_params BE failed -22
      	[kernel] fe.rsnd-dai.0: ASoC: hw_params BE failed -22
      	aplay: set_params:1407: Unable to install hw params:
      	ACCESS:  RW_INTERLEAVED
      	FORMAT:  S16_LE
      	SUBFORMAT:  STD
      	SAMPLE_BITS: 16
      	FRAME_BITS: 32
      	CHANNELS: 2
      	RATE: 44100
      	PERIOD_TIME: (23219 23220)
      	PERIOD_SIZE: 1024
      	PERIOD_BYTES: 4096
      	PERIODS: 4
      	BUFFER_TIME: (92879 92880)
      	BUFFER_SIZE: 4096
      	BUFFER_BYTES: 16384
      	TICK_TIME: 0
      
      This patch-set solves this issue.
      patch 1) - 3) are just cleanup patches.
      4) is fot this issue.
      
      Link: https://lore.kernel.org/r/87a6q0z4xt.wl-kuninori.morimoto.gx@renesas.com
      
      Kuninori Morimoto (4):
        ASoC: soc-pcm: don't use "name" on __soc_pcm_params_symmetry() macro
        ASoC: soc-pcm: indicate DAI name if soc_pcm_params_symmetry() failed
        ASoC: soc-utils: add snd_soc_component_is_dummy()
        ASoC: soc-pcm: ignore dummy-DAI at soc_pcm_params_symmetry()
      
       include/sound/soc-component.h |  1 +
       sound/soc/soc-core.c          |  2 +-
       sound/soc/soc-pcm.c           | 14 ++++++++------
       sound/soc/soc-utils.c         |  6 ++++++
       4 files changed, 16 insertions(+), 7 deletions(-)
      
      --
      2.25.1
      ac22cf52
    • Thierry Reding's avatar
      ASoC: simple-card-utils: Increase maximum number of links to 128 · 343e55e7
      Thierry Reding authored
      On Tegra186 and later, the number of links can go up to 72, so bump the
      maximum number of links to the next power of two (128).
      
      Fixes: f2138aed ("ASoC: simple-card-utils: enable flexible CPU/Codec/Platform")
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Link: https://lore.kernel.org/r/20210416071147.2149109-2-thierry.reding@gmail.comReviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      343e55e7
    • Thierry Reding's avatar
      ASoC: simple-card-utils: Propagate errors on too many links · 0f687d82
      Thierry Reding authored
      The DAI counting code doesn't propagate errors when the number of
      maximum links is exceeded, which causes subsequent initialization code
      to continue to run and that eventually leads to memory corruption with
      the code trying to access memory that is out of bounds.
      
      Fix this by propagating errors when the maximum number of links is
      reached, which ensures that the driver fails to load and prevents the
      memory corruption.
      
      Fixes: f2138aed ("ASoC: simple-card-utils: enable flexible CPU/Codec/Platform")
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Link: https://lore.kernel.org/r/20210416071147.2149109-1-thierry.reding@gmail.comReviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      0f687d82
    • Kuninori Morimoto's avatar
      ASoC: soc-pcm: ignore dummy-DAI at soc_pcm_params_symmetry() · 9c2ae363
      Kuninori Morimoto authored
      soc_pcm_params_symmetry() checks CPU / Codec symmetry.
      Unfortunately there was bug on it (= A) which didn't check Codec.
      But is back by (B).
      
      	A: v5.7:  commit c840f769 ("ASoC: soc-pcm: Merge for_each_rtd_cpu/codec_dais()")
      	B: v5.12: commit 3a906721 ("ASoC: soc-pcm: cleanup soc_pcm_params_symmetry()")
      
      In total,
      old - v5.6 (= Generation-1):
      
      	symmetric_rate		: DAI_Link / CPU / Codec
      	symmetric_channels	: DAI_Link / CPU / Codec
      	symmetric_sample_bits	: DAI_Link / CPU / Codec
      
      v5.7 - v5.11 (= Generation-2): (= because of bug by (A))
      
      	symmetric_rate		: DAI_Link / CPU
      	symmetric_channels	: DAI_Link / CPU / Codec
      	symmetric_sample_bits	: DAI_Link / CPU / Codec
      
      v5.12 - (= Generation-3): (= back by (B))
      
      	symmetric_rate		: DAI_Link / CPU / Codec
      	symmetric_channels	: DAI_Link / CPU / Codec
      	symmetric_sample_bits	: DAI_Link / CPU / Codec
      
      OTOH, we can use DPCM which is configured by FE / BE.
      Both FE / BE uses dummy-DAI.
      
      	FE: CPU       <-> dummy-DAI
      	BE: dummy-DAI <-> Codec
      
      One note is that we can use .be_hw_params_fixup in DPCM case.
      This means BE settings might be fixuped/updated by FE.
      This feature is used for example on MIXer case.
      It can be happen not only for rate, but for channels/sample_bits too.
      
      Because of these reasons, below issue happen on
      Generation-1 / Generation-3, if...
      
      	1) Sound Card used DPCM
      	2) It exchanges rate to 48kHz by using .be_hw_params_fixup()
      	3) Codec had symmetric_rate = 1
      
      I didn't confirm, but maybe same things happen
      if it exchanged channels/sample_bits at Generation-1/2/3 too.
      
      	# aplay 44100.wav
      	# aplay 44100.wav
      =>	[kernel] be.ak4613-hifi: ASoC: unmatched rate symmetry: snd-soc-dummy-dai:44100 - soc_pcm_params_symmetry:48000
      	[kernel] be.ak4613-hifi: ASoC: hw_params BE failed -22
      	[kernel] fe.rsnd-dai.0: ASoC: hw_params BE failed -22
      	aplay: set_params:1407: Unable to install hw params:
      	ACCESS:  RW_INTERLEAVED
      	FORMAT:  S16_LE
      	SUBFORMAT:  STD
      	SAMPLE_BITS: 16
      	FRAME_BITS: 32
      	CHANNELS: 2
      	RATE: 44100
      	PERIOD_TIME: (23219 23220)
      	PERIOD_SIZE: 1024
      	PERIOD_BYTES: 4096
      	PERIODS: 4
      	BUFFER_TIME: (92879 92880)
      	BUFFER_SIZE: 4096
      	BUFFER_BYTES: 16384
      	TICK_TIME: 0
      
      soc_pcm_params_symmetry() checks by below
      
      	if (symmetry)
      		for_each_rtd_cpu_dais(rtd, i, cpu_dai)
      			if (cpu_dai->xxx && cpu_dai->xxx != d.xxx) {
      				dev_err(rtd->dev, "...");
      				return -EINVAL;
      			}
      
      Because of above reason 3) (= Codec had symmetric_rate = 1)
      BE can't ignore "if (symmetric)".
      
      At 1st aplay, soc_pcm_params_symmetry() ignores it,
      because dummy-DAI->rate is 0.
      After this check, each DAI sets/keep settings.
      
      In above sample case, BE gets 48000 and FE gets 44100,
      and it happen BE -> FE order.
      Because DPCM is sharing *same* dummy-DAI,
      dummy-DAI sets as 48000 by BE, and is overwrote by 44100 by FE.
      
      This settings never be cleaned (= a) after 1st aplay,
      because dummy-DAI is used from FE/BE, never be last user (b).
      
      	static int soc_pcm_hw_clean(...)
      	{
      		...
      		for_each_rtd_dais(rtd, i, dai) {
      			...
      (b)			if (snd_soc_dai_active(dai) == 1)
      (a)				soc_pcm_set_dai_params(dai, NULL);
      			...
      		}
      		...
      	}
      
      At 2nd aplay, BE gets 48000 but dummy-DAI is keeping 44100,
      soc_pcm_params_symmetry() checks will fail.
      
      To solve this issue, this patch ignores dummy-DAI
      at soc_pcm_params_symmetry()
      
      Link: https://lore.kernel.org/r/87a6q0z4xt.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/87y2djxa2n.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      9c2ae363
    • Kuninori Morimoto's avatar
      ASoC: soc-utils: add snd_soc_component_is_dummy() · 8f1a1681
      Kuninori Morimoto authored
      There is snd_soc_dai_is_dummy(), but not for component.
      This patch adds it.
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/87zgxzxa2t.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      8f1a1681