• Jerome Brunet's avatar
    ASoC: meson: gx-card: fix codec-to-codec link setup · de911b4e
    Jerome Brunet authored
    Since the addition of commit 9b5db059 ("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: e37a0c31 ("ASoC: meson: gx: add sound card support")
    Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
    Link: https://lore.kernel.org/r/20200420114511.450560-3-jbrunet@baylibre.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    de911b4e
gx-card.c 3.58 KB