OpenCloudOS-Kernel/sound/soc/meson
Jerome Brunet de911b4e68
ASoC: meson: gx-card: fix codec-to-codec link setup
Since the addition of commit 9b5db05936 ("ASoC: soc-pcm: dpcm: Only allow
playback/capture if supported"), meson-axg cards which have codec-to-codec
links fail to init and Oops.

  Unable to handle kernel NULL pointer dereference at virtual address 0000000000000128
  Internal error: Oops: 96000044 [#1] PREEMPT SMP
  CPU: 3 PID: 1582 Comm: arecord Not tainted 5.7.0-rc1
  pc : invalidate_paths_ep+0x30/0xe0
  lr : snd_soc_dapm_dai_get_connected_widgets+0x170/0x1a8
  Call trace:
   invalidate_paths_ep+0x30/0xe0
   snd_soc_dapm_dai_get_connected_widgets+0x170/0x1a8
   dpcm_path_get+0x38/0xd0
   dpcm_fe_dai_open+0x70/0x920
   snd_pcm_open_substream+0x564/0x840
   snd_pcm_open+0xfc/0x228
   snd_pcm_capture_open+0x4c/0x78
   snd_open+0xac/0x1a8
   ...

While this error was initially reported the axg-card type, it also applies
to the gx-card type.

While initiliazing the links, ASoC treats the codec-to-codec links of this
card type as a DPCM backend. This error eventually leads to the Oops.

Most of the card driver code is shared between DPCM backends and
codec-to-codec links. The property "no_pcm" marking DCPM BE was left set on
codec-to-codec links, leading to this problem. This commit fixes that.

Fixes: e37a0c313a ("ASoC: meson: gx: add sound card support")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20200420114511.450560-3-jbrunet@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-04-20 13:58:22 +01:00
..
Kconfig ASoC: meson: g12a: add internal DAC glue driver 2020-02-21 16:39:04 +00:00
Makefile ASoC: meson: g12a: add internal DAC glue driver 2020-02-21 16:39:04 +00:00
aiu-acodec-ctrl.c ASoC: meson: aiu: simplify component addition 2020-02-17 18:22:21 +00:00
aiu-codec-ctrl.c ASoC: meson: aiu: simplify component addition 2020-02-17 18:22:21 +00:00
aiu-encoder-i2s.c ASoC: meson: aiu: fix semicolon.cocci warnings 2020-02-24 13:12:10 +00:00
aiu-encoder-spdif.c ASoC: meson: aiu: add i2s and spdif support 2020-02-13 20:57:22 +00:00
aiu-fifo-i2s.c ASoC: meson: aiu: add i2s and spdif support 2020-02-13 20:57:22 +00:00
aiu-fifo-spdif.c ASoC: meson: aiu: add i2s and spdif support 2020-02-13 20:57:22 +00:00
aiu-fifo.c ASoC: meson: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:41 +00:00
aiu-fifo.h ASoC: meson: aiu: add i2s and spdif support 2020-02-13 20:57:22 +00:00
aiu.c ASoC: meson: aiu: add support for the Meson8 and Meson8b SoC families 2020-02-21 13:30:47 +00:00
aiu.h ASoC: meson: aiu: add support for the Meson8 and Meson8b SoC families 2020-02-21 13:30:47 +00:00
axg-card.c ASoC: meson: axg-card: fix codec-to-codec link setup 2020-04-20 13:58:21 +01:00
axg-fifo.c ASoC: meson: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:41 +00:00
axg-fifo.h ASoC: meson: axg-fifo: relax period size constraints 2019-12-18 20:01:34 +00:00
axg-frddr.c ASoC: meson: axg-fifo: improve depth handling 2019-12-18 20:01:15 +00:00
axg-pdm.c ASoC: meson: axg-pdm: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:07:29 +01:00
axg-spdifin.c ASoC: meson: axg-spdifin: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:07:48 +01:00
axg-spdifout.c ASoC: meson: axg-spdifout: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:08:07 +01:00
axg-tdm-formatter.c Merge branch 'asoc-5.3' into asoc-5.4 2019-08-20 18:28:43 +01:00
axg-tdm-formatter.h ASoC: meson: axg-tdm-formatter: rework quirks settings 2019-04-05 09:26:39 +07:00
axg-tdm-interface.c ASoC: meson: axg-tdm: consistently use SND_SOC_DAIFMT defines 2019-06-13 19:46:31 +01:00
axg-tdm.h ASoC: meson: axg-tdm: fix sample clock inversion 2019-06-13 19:44:02 +01:00
axg-tdmin.c ASoC: meson: tdmin: expose all 16 inputs 2019-09-05 18:17:13 +01:00
axg-tdmout.c ASoC: meson: tdmout: add sm1 support 2019-09-05 18:18:07 +01:00
axg-toddr.c ASoC: meson: axg-fifo: fix fifo threshold setup 2019-12-18 20:00:24 +00:00
g12a-toacodec.c ASoC: meson: g12a: add internal DAC glue driver 2020-02-21 16:39:04 +00:00
g12a-tohdmitx.c Merge branch 'for-5.6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.7 2020-02-24 22:26:06 +00:00
gx-card.c ASoC: meson: gx-card: fix codec-to-codec link setup 2020-04-20 13:58:22 +01:00
meson-card-utils.c ASoC: meson: use asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for DAI pointer 2020-03-27 14:44:41 +00:00
meson-card.h ASoC: meson: axg: extract sound card utils 2020-02-13 20:57:25 +00:00
meson-codec-glue.c ASoC: meson: codec-glue: fix pcm format cast warning 2020-02-14 20:51:17 +00:00
meson-codec-glue.h ASoC: meson: g12a: extract codec-to-codec utils 2020-02-13 20:57:20 +00:00
t9015.c ASoC: meson: add t9015 internal DAC driver 2020-02-19 20:20:07 +00:00