Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81611
b: refs/heads/master
c: 9af6d95
h: refs/heads/master
i:
  81609: 19232f8
  81607: 69acc66
v: v3
  • Loading branch information
Laim Girdwood authored and Jaroslav Kysela committed Jan 31, 2008
1 parent 6e61ac2 commit f75f45a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6c59e6c4129cd80834837b58a42216f0432a4f58
refs/heads/master: 9af6d9562414568ecadf96aaef5b88e7e8b19821
2 changes: 1 addition & 1 deletion trunk/include/sound/soc-dapm.h
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ struct snd_soc_dapm_widget {

/* external events */
unsigned short event_flags; /* flags to specify event types */
int (*event)(struct snd_soc_dapm_widget*, int);
int (*event)(struct snd_soc_dapm_widget*, struct snd_kcontrol *, int);

/* kcontrols that relate to this widget */
int num_kcontrols;
Expand Down
40 changes: 27 additions & 13 deletions trunk/sound/soc/soc-dapm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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;
}
Expand All @@ -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;
}
Expand Down Expand Up @@ -1095,13 +1103,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);

Expand Down Expand Up @@ -1176,13 +1188,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);

Expand Down

0 comments on commit f75f45a

Please sign in to comment.