1. 11 Sep, 2020 1 commit
  2. 09 Sep, 2020 1 commit
  3. 08 Sep, 2020 1 commit
  4. 07 Sep, 2020 2 commits
  5. 03 Sep, 2020 1 commit
  6. 02 Sep, 2020 16 commits
  7. 01 Sep, 2020 5 commits
  8. 29 Aug, 2020 1 commit
  9. 28 Aug, 2020 2 commits
    • Jerome Brunet's avatar
      ASoC: meson: axg-toddr: fix channel order on g12 platforms · 9c4b205a
      Jerome Brunet authored
      On g12 and following platforms, The first channel of record with more than
      2 channels ends being placed randomly on an even channel of the output.
      
      On these SoCs, a bit was added to force the first channel to be placed at
      the beginning of the output. Apparently the behavior if the bit is not set
      is not easily predictable. According to the documentation, this bit is not
      present on the axg series.
      
      Set the bit on g12 and fix the problem.
      
      Fixes: a3c23a8a ("ASoC: meson: axg-toddr: add g12a support")
      Reported-by: default avatarNicolas Belin <nbelin@baylibre.com>
      Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
      Link: https://lore.kernel.org/r/20200828151438.350974-1-jbrunet@baylibre.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      9c4b205a
    • Kuninori Morimoto's avatar
      ASoC: soc-core: add snd_soc_find_dai_with_mutex() · 20d9fdee
      Kuninori Morimoto authored
      commit 25612477 ("ASoC: soc-dai: set dai_link dpcm_ flags with a helper")
      added snd_soc_dai_link_set_capabilities().
      But it is using snd_soc_find_dai() (A) which is required client_mutex (B).
      And client_mutex is soc-core.c local.
      
      	struct snd_soc_dai *snd_soc_find_dai(xxx)
      	{
      		...
      (B)		lockdep_assert_held(&client_mutex);
      		...
      	}
      
      	void snd_soc_dai_link_set_capabilities(xxx)
      	{
      		...
      		for_each_pcm_streams(direction) {
      			...
      			for_each_link_cpus(dai_link, i, cpu) {
      (A)				dai = snd_soc_find_dai(cpu);
      				...
      			}
      			...
      			for_each_link_codecs(dai_link, i, codec) {
      (A)				dai = snd_soc_find_dai(codec);
      				...
      			}
      		}
      		...
      	}
      
      Because of these background, we will get WARNING if .config has CONFIG_LOCKDEP.
      
      	WARNING: CPU: 2 PID: 53 at sound/soc/soc-core.c:814 snd_soc_find_dai+0xf8/0x100
      	CPU: 2 PID: 53 Comm: kworker/2:1 Not tainted 5.7.0-rc1+ #328
      	Hardware name: Renesas H3ULCB Kingfisher board based on r8a77951 (DT)
      	Workqueue: events deferred_probe_work_func
      	pstate: 60000005 (nZCv daif -PAN -UAO)
      	pc : snd_soc_find_dai+0xf8/0x100
      	lr : snd_soc_find_dai+0xf4/0x100
      	...
      	Call trace:
      	 snd_soc_find_dai+0xf8/0x100
      	 snd_soc_dai_link_set_capabilities+0xa0/0x16c
      	 graph_dai_link_of_dpcm+0x390/0x3c0
      	 graph_for_each_link+0x134/0x200
      	 graph_probe+0x144/0x230
      	 platform_drv_probe+0x5c/0xb0
      	 really_probe+0xe4/0x430
      	 driver_probe_device+0x60/0xf4
      
      snd_soc_find_dai() will be used from (X) CPU/Codec/Platform driver with
      mutex lock, and (Y) Card driver without mutex lock.
      This snd_soc_dai_link_set_capabilities() is for Card driver,
      this means called without mutex.
      This patch adds snd_soc_find_dai_with_mutex() to solve it.
      
      Fixes: 25612477 ("ASoC: soc-dai: set dai_link dpcm_ flags with a helper")
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/87blixvuab.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      20d9fdee
  10. 26 Aug, 2020 10 commits