diff mbox series

[RFC] ASoC: soc-dapm: Invalidate DAPM path during dapm addition of routes

Message ID 20191009102127.7860-1-srinivas.kandagatla@linaro.org
State New
Headers show
Series [RFC] ASoC: soc-dapm: Invalidate DAPM path during dapm addition of routes | expand

Commit Message

Srinivas Kandagatla Oct. 9, 2019, 10:21 a.m. UTC
From: Sudheer Papothi <spapothi@codeaurora.org>


During sound card registration, dapm adds routes of
codec and other component paths, but the invalidation of
the widgets in these paths will happen only when the
sound card is instantiated. As these routes are added
before sound card instantiation, these widgets are
not invalidated until a playback or recording usecase
is started.

Audio playback or recording usecase is not started in
the case of codec loopback. So, if codec loopback is
performed just after soundcard registration, then the
widgets are not powered up as those widgets are not
invalidated, results into codec loopback failure.

Change is to remove the sound card instantiation check
condition in dapm add paths, so widgets get invalidated
whenever they are added.

Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

---
 sound/soc/soc-dapm.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

-- 
2.21.0

Comments

Mark Brown Oct. 9, 2019, 4:59 p.m. UTC | #1
On Wed, Oct 09, 2019 at 11:21:27AM +0100, Srinivas Kandagatla wrote:
> From: Sudheer Papothi <spapothi@codeaurora.org>

> 

> During sound card registration, dapm adds routes of

> codec and other component paths, but the invalidation of

> the widgets in these paths will happen only when the

> sound card is instantiated. As these routes are added


The whole point with this check is that as you say we're
validating everything as we instantiate the card, not piecemeal
while the map is partially constructed.  Doing that is wasteful
and noisy.

> before sound card instantiation, these widgets are

> not invalidated until a playback or recording usecase

> is started.


You said yourself that we sync everything when the card is
instantiated.  Not on first capture or record, when the card is
instantiated.  If for some reason there is some problem with that
on your system please fix that, don't add a bodge somewhere else
to mask the problem.
diff mbox series

Patch

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index b6378f025836..13544f7c850b 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -2862,8 +2862,7 @@  static int snd_soc_dapm_add_path(struct snd_soc_dapm_context *dapm,
 		dapm_mark_dirty(widgets[dir], "Route added");
 	}
 
-	if (dapm->card->instantiated && path->connect)
-		dapm_path_invalidate(path);
+	dapm_path_invalidate(path);
 
 	return 0;
 err: