Commit a68b38ad authored by Stephen Warren's avatar Stephen Warren Committed by Mark Brown

ASoC: snd_soc_dapm_get_pin_status: Match other contexts too

Not all widgets on a card are within the codec's DAPM context. Fix
snd_soc_dapm_get_pin_status to search all contexts when looking for a
widget.

This change is required when modifying tegra_wm8903 to use
snd_soc_card.widgets rather than calling snd_soc_dapm_new_controls; the
former adds the widgets to the card's DAPM context, whereas tegra_wm8903
uses the codec's DAPM context when calling snd_soc_dapm_new_controls.

By code inspection, I suspect this also applies to Samsung Speyside.
Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
Acked-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent a32955db
...@@ -2403,6 +2403,12 @@ int snd_soc_dapm_get_pin_status(struct snd_soc_dapm_context *dapm, ...@@ -2403,6 +2403,12 @@ int snd_soc_dapm_get_pin_status(struct snd_soc_dapm_context *dapm,
return w->connected; return w->connected;
} }
/* Try again in other contexts */
list_for_each_entry(w, &dapm->card->widgets, list) {
if (!strcmp(w->name, pin))
return w->connected;
}
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status); EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment