ASoC: Factor out generic widget power checks
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 20 Apr 2009 15:56:59 +0000 (16:56 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 20 Apr 2009 17:09:33 +0000 (18:09 +0100)
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: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/soc-dapm.c

index a6d73379ab32fc78da80bf20f99a227f74388056..28e6e324ccfbb5815ec0cb5f3a710f716b92b5e4 100644 (file)
@@ -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;