Loading include/sound/soc.h +1 −0 Original line number Diff line number Diff line Loading @@ -1122,6 +1122,7 @@ struct snd_soc_card { struct mutex mutex; struct mutex dapm_mutex; struct mutex dapm_power_mutex; bool instantiated; Loading sound/soc/soc-core.c +1 −0 Original line number Diff line number Diff line Loading @@ -2642,6 +2642,7 @@ int snd_soc_register_card(struct snd_soc_card *card) card->instantiated = 0; mutex_init(&card->mutex); mutex_init(&card->dapm_mutex); mutex_init(&card->dapm_power_mutex); ret = snd_soc_instantiate_card(card); if (ret != 0) Loading sound/soc/soc-dapm.c +4 −2 Original line number Diff line number Diff line Loading @@ -1515,7 +1515,7 @@ static void dapm_seq_run(struct snd_soc_card *card, /* Do we need to apply any queued changes? */ if (sort[w->id] != cur_sort || w->reg != cur_reg || w->dapm != cur_dapm || w->subseq != cur_subseq) { if (!list_empty(&pending)) if (cur_dapm && !list_empty(&pending)) dapm_seq_run_coalesced(card, &pending); if (cur_dapm && cur_dapm->seq_notifier) { Loading Loading @@ -1578,7 +1578,7 @@ static void dapm_seq_run(struct snd_soc_card *card, "ASoC: Failed to apply widget power: %d\n", ret); } if (!list_empty(&pending)) if (cur_dapm && !list_empty(&pending)) dapm_seq_run_coalesced(card, &pending); if (cur_dapm && cur_dapm->seq_notifier) { Loading Loading @@ -1814,6 +1814,7 @@ static int dapm_power_widgets(struct snd_soc_card *card, int event) lockdep_assert_held(&card->dapm_mutex); trace_snd_soc_dapm_start(card); mutex_lock(&card->dapm_power_mutex); list_for_each_entry(d, &card->dapm_list, list) { if (dapm_idle_bias_off(d)) Loading Loading @@ -1932,6 +1933,7 @@ static int dapm_power_widgets(struct snd_soc_card *card, int event) pop_dbg(card->dev, card->pop_time, "DAPM sequencing finished, waiting %dms\n", card->pop_time); pop_wait(card->pop_time); mutex_unlock(&card->dapm_power_mutex); trace_snd_soc_dapm_done(card); Loading Loading
include/sound/soc.h +1 −0 Original line number Diff line number Diff line Loading @@ -1122,6 +1122,7 @@ struct snd_soc_card { struct mutex mutex; struct mutex dapm_mutex; struct mutex dapm_power_mutex; bool instantiated; Loading
sound/soc/soc-core.c +1 −0 Original line number Diff line number Diff line Loading @@ -2642,6 +2642,7 @@ int snd_soc_register_card(struct snd_soc_card *card) card->instantiated = 0; mutex_init(&card->mutex); mutex_init(&card->dapm_mutex); mutex_init(&card->dapm_power_mutex); ret = snd_soc_instantiate_card(card); if (ret != 0) Loading
sound/soc/soc-dapm.c +4 −2 Original line number Diff line number Diff line Loading @@ -1515,7 +1515,7 @@ static void dapm_seq_run(struct snd_soc_card *card, /* Do we need to apply any queued changes? */ if (sort[w->id] != cur_sort || w->reg != cur_reg || w->dapm != cur_dapm || w->subseq != cur_subseq) { if (!list_empty(&pending)) if (cur_dapm && !list_empty(&pending)) dapm_seq_run_coalesced(card, &pending); if (cur_dapm && cur_dapm->seq_notifier) { Loading Loading @@ -1578,7 +1578,7 @@ static void dapm_seq_run(struct snd_soc_card *card, "ASoC: Failed to apply widget power: %d\n", ret); } if (!list_empty(&pending)) if (cur_dapm && !list_empty(&pending)) dapm_seq_run_coalesced(card, &pending); if (cur_dapm && cur_dapm->seq_notifier) { Loading Loading @@ -1814,6 +1814,7 @@ static int dapm_power_widgets(struct snd_soc_card *card, int event) lockdep_assert_held(&card->dapm_mutex); trace_snd_soc_dapm_start(card); mutex_lock(&card->dapm_power_mutex); list_for_each_entry(d, &card->dapm_list, list) { if (dapm_idle_bias_off(d)) Loading Loading @@ -1932,6 +1933,7 @@ static int dapm_power_widgets(struct snd_soc_card *card, int event) pop_dbg(card->dev, card->pop_time, "DAPM sequencing finished, waiting %dms\n", card->pop_time); pop_wait(card->pop_time); mutex_unlock(&card->dapm_power_mutex); trace_snd_soc_dapm_done(card); Loading