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

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

ASoC: Factor out generic widget power checks



This will form a basis for further power check refactoring: the overall
goal of these changes is to allow us to check power separately to
applying it, allowing improvements in the power sequencing algorithms.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 9b5b0c01
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -581,6 +581,19 @@ static int dapm_generic_apply_power(struct snd_soc_dapm_widget *w)
	return 0;
}

/* Generic check to see if a widget should be powered.
 */
static int dapm_generic_check_power(struct snd_soc_dapm_widget *w)
{
	int in, out;

	in = is_connected_input_ep(w);
	dapm_clear_walk(w->codec);
	out = is_connected_output_ep(w);
	dapm_clear_walk(w->codec);
	return out != 0 && in != 0;
}

/*
 * Scan a single DAPM widget for a complete audio path and update the
 * power status appropriately.
@@ -653,11 +666,7 @@ static int dapm_power_widget(struct snd_soc_codec *codec, int event,
	}

	/* all other widgets */
	in = is_connected_input_ep(w);
	dapm_clear_walk(w->codec);
	out = is_connected_output_ep(w);
	dapm_clear_walk(w->codec);
	power = (out != 0 && in != 0) ? 1 : 0;
	power = dapm_generic_check_power(w);
	power_change = (w->power == power) ? 0 : 1;
	w->power = power;