ASoC: Support DAPM events for DACs and ADCs
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
025756eca4
commit
f6d655a6e6
|
@ -140,9 +140,19 @@
|
||||||
#define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \
|
#define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \
|
||||||
{ .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
|
{ .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
|
||||||
.shift = wshift, .invert = winvert}
|
.shift = wshift, .invert = winvert}
|
||||||
|
#define SND_SOC_DAPM_DAC_E(wname, stname, wreg, wshift, winvert, \
|
||||||
|
wevent, wflags) \
|
||||||
|
{ .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
|
||||||
|
.shift = wshift, .invert = winvert, \
|
||||||
|
.event = wevent, .event_flags = wflags}
|
||||||
#define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \
|
#define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \
|
||||||
{ .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
|
{ .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
|
||||||
.shift = wshift, .invert = winvert}
|
.shift = wshift, .invert = winvert}
|
||||||
|
#define SND_SOC_DAPM_ADC_E(wname, stname, wreg, wshift, winvert, \
|
||||||
|
wevent, wflags) \
|
||||||
|
{ .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
|
||||||
|
.shift = wshift, .invert = winvert, \
|
||||||
|
.event = wevent, .event_flags = wflags}
|
||||||
|
|
||||||
/* generic register modifier widget */
|
/* generic register modifier widget */
|
||||||
#define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \
|
#define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \
|
||||||
|
|
|
@ -598,18 +598,22 @@ static int dapm_power_widget(struct snd_soc_codec *codec, int event,
|
||||||
if (w->id == snd_soc_dapm_adc && w->active) {
|
if (w->id == snd_soc_dapm_adc && w->active) {
|
||||||
in = is_connected_input_ep(w);
|
in = is_connected_input_ep(w);
|
||||||
dapm_clear_walk(w->codec);
|
dapm_clear_walk(w->codec);
|
||||||
w->power = (in != 0) ? 1 : 0;
|
power = (in != 0) ? 1 : 0;
|
||||||
dapm_update_bits(w);
|
if (power == w->power)
|
||||||
return 0;
|
return 0;
|
||||||
|
w->power = power;
|
||||||
|
return dapm_generic_apply_power(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* active DAC */
|
/* active DAC */
|
||||||
if (w->id == snd_soc_dapm_dac && w->active) {
|
if (w->id == snd_soc_dapm_dac && w->active) {
|
||||||
out = is_connected_output_ep(w);
|
out = is_connected_output_ep(w);
|
||||||
dapm_clear_walk(w->codec);
|
dapm_clear_walk(w->codec);
|
||||||
w->power = (out != 0) ? 1 : 0;
|
power = (out != 0) ? 1 : 0;
|
||||||
dapm_update_bits(w);
|
if (power == w->power)
|
||||||
return 0;
|
return 0;
|
||||||
|
w->power = power;
|
||||||
|
return dapm_generic_apply_power(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pre and post event widgets */
|
/* pre and post event widgets */
|
||||||
|
|
Loading…
Reference in New Issue