Commit f3bf3e45 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: Don't mark the outputs of supplies as dirty on state changes



The whole point of supply widgets is that they aren't inputs to their
sinks so a state change in a supply should never affect the state of the
widget being supplied and we don't need to mark them as dirty.

           Power    Path   Neighbour
Before:    69       727    905
After:     63       607    731

This is particularly useful where supplies affect large portions of the
chip (eg, a bandgap supplying the analogue sections).

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 9b8a83b2
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -1260,12 +1260,19 @@ static void dapm_widget_set_power(struct snd_soc_dapm_widget *w, bool power,
						   path->connect);
		}
	}
	switch (w->id) {
	case snd_soc_dapm_supply:
		/* Supplies can't affect their outputs, only their inputs */
		break;
	default:
		list_for_each_entry(path, &w->sinks, list_source) {
			if (path->sink) {
				dapm_widget_set_peer_power(path->sink, power,
							   path->connect);
			}
		}
		break;
	}

	if (power)
		dapm_seq_insert(w, up_list, true);