ASoC: meson: axg-tdm-interface: fix loopback
authorJerome Brunet <jbrunet@baylibre.com>
Thu, 17 Dec 2020 15:08:12 +0000 (16:08 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 17 Dec 2020 17:11:42 +0000 (17:11 +0000)
commit671ee4db952449acde126965bf76817a3159040d
tree59c2593f75afe479fc262dfc539158ab121265ad
parenta84dfb3d55934253de6aed38ad75990278a2d21e
ASoC: meson: axg-tdm-interface: fix loopback

When the axg-tdm-interface was introduced, the backend DAI was marked as an
endpoint when DPCM was walking the DAPM graph to find a its BE.

It is no longer the case since this
commit 8dd26dff00c0 ("ASoC: dapm: Fix handling of custom_stop_condition on DAPM graph walks")
Because of this, when DPCM finds a BE it does everything it needs on the
DAIs but it won't power up the widgets between the FE and the BE if there
is no actual endpoint after the BE.

On meson-axg HWs, the loopback is a special DAI of the tdm-interface BE.
It is only linked to the dummy codec since there no actual HW after it.
>From the DAPM perspective, the DAI has no endpoint. Because of this, the TDM
decoder, which is a widget between the FE and BE is not powered up.

>From the user perspective, everything seems fine but no data is produced.

Connecting the Loopback DAI to a dummy DAPM endpoint solves the problem.

Fixes: 8dd26dff00c0 ("ASoC: dapm: Fix handling of custom_stop_condition on DAPM graph walks")
Cc: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20201217150812.3247405-1-jbrunet@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/meson/axg-tdm-interface.c