diff options
| -rw-r--r-- | sound/soc/soc-dapm.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 999bb08cdfb1..776e6f418306 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c | |||
| @@ -325,6 +325,7 @@ static int dapm_connect_mixer(struct snd_soc_dapm_context *dapm, | |||
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | static int dapm_is_shared_kcontrol(struct snd_soc_dapm_context *dapm, | 327 | static int dapm_is_shared_kcontrol(struct snd_soc_dapm_context *dapm, |
| 328 | struct snd_soc_dapm_widget *kcontrolw, | ||
| 328 | const struct snd_kcontrol_new *kcontrol_new, | 329 | const struct snd_kcontrol_new *kcontrol_new, |
| 329 | struct snd_kcontrol **kcontrol) | 330 | struct snd_kcontrol **kcontrol) |
| 330 | { | 331 | { |
| @@ -334,6 +335,8 @@ static int dapm_is_shared_kcontrol(struct snd_soc_dapm_context *dapm, | |||
| 334 | *kcontrol = NULL; | 335 | *kcontrol = NULL; |
| 335 | 336 | ||
| 336 | list_for_each_entry(w, &dapm->card->widgets, list) { | 337 | list_for_each_entry(w, &dapm->card->widgets, list) { |
| 338 | if (w == kcontrolw || w->dapm != kcontrolw->dapm) | ||
| 339 | continue; | ||
| 337 | for (i = 0; i < w->num_kcontrols; i++) { | 340 | for (i = 0; i < w->num_kcontrols; i++) { |
| 338 | if (&w->kcontrol_news[i] == kcontrol_new) { | 341 | if (&w->kcontrol_news[i] == kcontrol_new) { |
| 339 | if (w->kcontrols) | 342 | if (w->kcontrols) |
| @@ -468,7 +471,7 @@ static int dapm_new_mux(struct snd_soc_dapm_context *dapm, | |||
| 468 | return -EINVAL; | 471 | return -EINVAL; |
| 469 | } | 472 | } |
| 470 | 473 | ||
| 471 | shared = dapm_is_shared_kcontrol(dapm, &w->kcontrol_news[0], | 474 | shared = dapm_is_shared_kcontrol(dapm, w, &w->kcontrol_news[0], |
| 472 | &kcontrol); | 475 | &kcontrol); |
| 473 | if (kcontrol) { | 476 | if (kcontrol) { |
| 474 | wlist = kcontrol->private_data; | 477 | wlist = kcontrol->private_data; |
