1. 21 Sep, 2020 2 commits
    • Hui Wang's avatar
      ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged · 3f742490
      Hui Wang authored
      We found a Mic detection issue on many Lenovo laptops, those laptops
      belong to differnt models and they have different audio design like
      internal mic connects to the codec or PCH, they all have this problem,
      the problem is if plugging a headset before powerup/reboot the
      machine, after booting up, the headphone could be detected but Mic
      couldn't. If we plug out and plug in the headset, both headphone and
      Mic could be detected then.
      
      Through debugging we found the codec on those laptops are same, it is
      alc257, and if we don't disable the 3k pulldown in alc256_shutup(),
      the issue will be fixed. So far there is no pop noise or power
      consumption regression on those laptops after this change.
      
      Cc: Kailang Yang <kailang@realtek.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarHui Wang <hui.wang@canonical.com>
      Link: https://lore.kernel.org/r/20200914065118.19238-1-hui.wang@canonical.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      3f742490
    • Tom Rix's avatar
      ALSA: asihpi: fix iounmap in error handler · 472eb391
      Tom Rix authored
      clang static analysis flags this problem
      hpioctl.c:513:7: warning: Branch condition evaluates to
        a garbage value
                      if (pci.ap_mem_base[idx]) {
                          ^~~~~~~~~~~~~~~~~~~~
      
      If there is a failure in the middle of the memory space loop,
      only some of the memory spaces need to be cleaned up.
      
      At the error handler, idx holds the number of successful
      memory spaces mapped.  So rework the handler loop to use the
      old idx.
      
      There is a second problem, the memory space loop conditionally
      iomaps()/sets the mem_base so it is necessay to initize pci.
      
      Fixes: 719f82d3 ("ALSA: Add support of AudioScience ASI boards")
      Signed-off-by: default avatarTom Rix <trix@redhat.com>
      Link: https://lore.kernel.org/r/20200913165230.17166-1-trix@redhat.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      472eb391
  2. 11 Sep, 2020 1 commit
  3. 09 Sep, 2020 1 commit
  4. 08 Sep, 2020 1 commit
  5. 07 Sep, 2020 2 commits
  6. 03 Sep, 2020 1 commit
  7. 02 Sep, 2020 16 commits
  8. 01 Sep, 2020 5 commits
  9. 29 Aug, 2020 1 commit
  10. 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
  11. 26 Aug, 2020 8 commits