[ALSA] caiaq - fix section mismatch warning
[sfrench/cifs-2.6.git] / sound / soc / soc-dapm.c
index d033e73103a8308107fc0fab893ec1c687829820..620d7ea3c15ff56a10aba1e9402c98aa2c6940c8 100644 (file)
@@ -523,11 +523,13 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
                                        continue;
 
                                if (event == SND_SOC_DAPM_STREAM_START) {
-                                       ret = w->event(w, SND_SOC_DAPM_PRE_PMU);
+                                       ret = w->event(w,
+                                               NULL, SND_SOC_DAPM_PRE_PMU);
                                        if (ret < 0)
                                                return ret;
                                } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-                                       ret = w->event(w, SND_SOC_DAPM_PRE_PMD);
+                                       ret = w->event(w,
+                                               NULL, SND_SOC_DAPM_PRE_PMD);
                                        if (ret < 0)
                                                return ret;
                                }
@@ -538,11 +540,13 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
                                        continue;
 
                                if (event == SND_SOC_DAPM_STREAM_START) {
-                                       ret = w->event(w, SND_SOC_DAPM_POST_PMU);
+                                       ret = w->event(w,
+                                               NULL, SND_SOC_DAPM_POST_PMU);
                                        if (ret < 0)
                                                return ret;
                                } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-                                       ret = w->event(w, SND_SOC_DAPM_POST_PMD);
+                                       ret = w->event(w,
+                                               NULL, SND_SOC_DAPM_POST_PMD);
                                        if (ret < 0)
                                                return ret;
                                }
@@ -566,26 +570,30 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
                                        if (power) {
                                                /* power up event */
                                                if (w->event_flags & SND_SOC_DAPM_PRE_PMU) {
-                                                       ret = w->event(w, SND_SOC_DAPM_PRE_PMU);
+                                                       ret = w->event(w,
+                                                               NULL, SND_SOC_DAPM_PRE_PMU);
                                                        if (ret < 0)
                                                                return ret;
                                                }
                                                dapm_update_bits(w);
                                                if (w->event_flags & SND_SOC_DAPM_POST_PMU){
-                                                       ret = w->event(w, SND_SOC_DAPM_POST_PMU);
+                                                       ret = w->event(w,
+                                                               NULL, SND_SOC_DAPM_POST_PMU);
                                                        if (ret < 0)
                                                                return ret;
                                                }
                                        } else {
                                                /* power down event */
                                                if (w->event_flags & SND_SOC_DAPM_PRE_PMD) {
-                                                       ret = w->event(w, SND_SOC_DAPM_PRE_PMD);
+                                                       ret = w->event(w,
+                                                               NULL, SND_SOC_DAPM_PRE_PMD);
                                                        if (ret < 0)
                                                                return ret;
                                                }
                                                dapm_update_bits(w);
                                                if (w->event_flags & SND_SOC_DAPM_POST_PMD) {
-                                                       ret = w->event(w, SND_SOC_DAPM_POST_PMD);
+                                                       ret = w->event(w,
+                                                               NULL, SND_SOC_DAPM_POST_PMD);
                                                        if (ret < 0)
                                                                return ret;
                                                }
@@ -963,7 +971,6 @@ int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec)
 {
        struct snd_soc_dapm_widget *w;
 
-       mutex_lock(&codec->mutex);
        list_for_each_entry(w, &codec->dapm_widgets, list)
        {
                if (w->new)
@@ -998,7 +1005,6 @@ int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec)
        }
 
        dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
-       mutex_unlock(&codec->mutex);
        return 0;
 }
 EXPORT_SYMBOL_GPL(snd_soc_dapm_new_widgets);
@@ -1095,13 +1101,17 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
        dapm_mixer_update_power(widget, kcontrol, reg, val_mask, val, invert);
        if (widget->event) {
                if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-                       ret = widget->event(widget, SND_SOC_DAPM_PRE_REG);
-                       if (ret < 0)
+                       ret = widget->event(widget, kcontrol,
+                                               SND_SOC_DAPM_PRE_REG);
+                       if (ret < 0) {
+                               ret = 1;
                                goto out;
+                       }
                }
                ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
                if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-                       ret = widget->event(widget, SND_SOC_DAPM_POST_REG);
+                       ret = widget->event(widget, kcontrol,
+                                               SND_SOC_DAPM_POST_REG);
        } else
                ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
 
@@ -1176,13 +1186,15 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
        dapm_mux_update_power(widget, kcontrol, mask, mux, e);
        if (widget->event) {
                if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-                       ret = widget->event(widget, SND_SOC_DAPM_PRE_REG);
+                       ret = widget->event(widget,
+                               kcontrol, SND_SOC_DAPM_PRE_REG);
                        if (ret < 0)
                                goto out;
                }
                ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
                if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-                       ret = widget->event(widget, SND_SOC_DAPM_POST_REG);
+                       ret = widget->event(widget,
+                               kcontrol, SND_SOC_DAPM_POST_REG);
        } else
                ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);