1. 04 Feb, 2021 1 commit
  2. 03 Feb, 2021 7 commits
  3. 02 Feb, 2021 3 commits
  4. 01 Feb, 2021 6 commits
  5. 29 Jan, 2021 1 commit
  6. 28 Jan, 2021 7 commits
  7. 27 Jan, 2021 7 commits
  8. 25 Jan, 2021 3 commits
  9. 21 Jan, 2021 5 commits
    • Mark Brown's avatar
      Merge series "Add sanity checks for topology API calls" from Amadeusz... · c7a83edf
      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
      c7a83edf
    • Mark Brown's avatar
      Merge series "ASoC: sync parameter naming : rate / sample_bits" from Kuninori... · ff385c1f
      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
      ff385c1f
    • Mark Brown's avatar
      Merge series "Add KUNIT tests for ASoC topology" from Amadeusz... · 1e924131
      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
      1e924131
    • Shuming Fan's avatar
      ASoC: rt5682: remove connection with LDO2 in DAPM graph · 06c84567
      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: default avatarShuming Fan <shumingf@realtek.com>
      Link: https://lore.kernel.org/r/20210121100353.6402-1-shumingf@realtek.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      06c84567
    • Kuninori Morimoto's avatar
      ASoC: soc-pcm: cleanup soc_pcm_params_symmetry() · 3a906721
      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: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/878s8un6si.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      3a906721