From: Stephen Warren Date: Tue, 19 Apr 2011 21:25:11 +0000 (-0600) Subject: ASoC: snd_soc_dapm_get_pin_status: Match other contexts too X-Git-Tag: v3.12-rc1~3017^2~1175 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a68b38ada57bc9aeeec574d3e76e67ad89fea303;p=kernel%2Fkernel-generic.git 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: Stephen Warren Acked-by: Liam Girdwood Signed-off-by: Mark Brown --- diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 2ee738c..4c868f9 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -2403,6 +2403,12 @@ int snd_soc_dapm_get_pin_status(struct snd_soc_dapm_context *dapm, 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; } EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status);