Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbce5c6d authored by Kyle Yan's avatar Kyle Yan Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoC: Add locking in DAPM widget power update" into msm-4.8

parents a894e1f9 853ed7c5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1122,6 +1122,7 @@ struct snd_soc_card {

	struct mutex mutex;
	struct mutex dapm_mutex;
	struct mutex dapm_power_mutex;

	bool instantiated;

+1 −0
Original line number Diff line number Diff line
@@ -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)
+4 −2
Original line number Diff line number Diff line
@@ -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) {
@@ -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) {
@@ -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))
@@ -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);