ASoC: Manage WM8731 ACTIVE bit as a supply widget
Now we have supply widgets there's no need to open code the handling of the ACTIVE bit. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Tested-by: Nicolas Ferre <nicolas.ferre@atmel.com> Acked-by: Liam Girdwood <lrg@ti.com>
This commit is contained in:
parent
f1442bc1e9
commit
8a27bd9a33
@ -175,6 +175,7 @@ static const struct snd_kcontrol_new wm8731_input_mux_controls =
|
|||||||
SOC_DAPM_ENUM("Input Select", wm8731_insel_enum);
|
SOC_DAPM_ENUM("Input Select", wm8731_insel_enum);
|
||||||
|
|
||||||
static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
|
static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
|
||||||
|
SND_SOC_DAPM_SUPPLY("ACTIVE",WM8731_ACTIVE, 0, 0, NULL, 0),
|
||||||
SND_SOC_DAPM_SUPPLY("OSC", WM8731_PWR, 5, 1, NULL, 0),
|
SND_SOC_DAPM_SUPPLY("OSC", WM8731_PWR, 5, 1, NULL, 0),
|
||||||
SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1,
|
SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1,
|
||||||
&wm8731_output_mixer_controls[0],
|
&wm8731_output_mixer_controls[0],
|
||||||
@ -204,6 +205,8 @@ static int wm8731_check_osc(struct snd_soc_dapm_widget *source,
|
|||||||
static const struct snd_soc_dapm_route wm8731_intercon[] = {
|
static const struct snd_soc_dapm_route wm8731_intercon[] = {
|
||||||
{"DAC", NULL, "OSC", wm8731_check_osc},
|
{"DAC", NULL, "OSC", wm8731_check_osc},
|
||||||
{"ADC", NULL, "OSC", wm8731_check_osc},
|
{"ADC", NULL, "OSC", wm8731_check_osc},
|
||||||
|
{"DAC", NULL, "ACTIVE"},
|
||||||
|
{"ADC", NULL, "ACTIVE"},
|
||||||
|
|
||||||
/* output mixer */
|
/* output mixer */
|
||||||
{"Output Mixer", "Line Bypass Switch", "Line Input"},
|
{"Output Mixer", "Line Bypass Switch", "Line Input"},
|
||||||
@ -315,29 +318,6 @@ static int wm8731_hw_params(struct snd_pcm_substream *substream,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wm8731_pcm_prepare(struct snd_pcm_substream *substream,
|
|
||||||
struct snd_soc_dai *dai)
|
|
||||||
{
|
|
||||||
struct snd_soc_codec *codec = dai->codec;
|
|
||||||
|
|
||||||
/* set active */
|
|
||||||
snd_soc_write(codec, WM8731_ACTIVE, 0x0001);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wm8731_shutdown(struct snd_pcm_substream *substream,
|
|
||||||
struct snd_soc_dai *dai)
|
|
||||||
{
|
|
||||||
struct snd_soc_codec *codec = dai->codec;
|
|
||||||
|
|
||||||
/* deactivate */
|
|
||||||
if (!codec->active) {
|
|
||||||
udelay(50);
|
|
||||||
snd_soc_write(codec, WM8731_ACTIVE, 0x0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int wm8731_mute(struct snd_soc_dai *dai, int mute)
|
static int wm8731_mute(struct snd_soc_dai *dai, int mute)
|
||||||
{
|
{
|
||||||
struct snd_soc_codec *codec = dai->codec;
|
struct snd_soc_codec *codec = dai->codec;
|
||||||
@ -480,7 +460,6 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
|
|||||||
snd_soc_write(codec, WM8731_PWR, reg | 0x0040);
|
snd_soc_write(codec, WM8731_PWR, reg | 0x0040);
|
||||||
break;
|
break;
|
||||||
case SND_SOC_BIAS_OFF:
|
case SND_SOC_BIAS_OFF:
|
||||||
snd_soc_write(codec, WM8731_ACTIVE, 0x0);
|
|
||||||
snd_soc_write(codec, WM8731_PWR, 0xffff);
|
snd_soc_write(codec, WM8731_PWR, 0xffff);
|
||||||
regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies),
|
regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies),
|
||||||
wm8731->supplies);
|
wm8731->supplies);
|
||||||
@ -496,9 +475,7 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
|
|||||||
SNDRV_PCM_FMTBIT_S24_LE)
|
SNDRV_PCM_FMTBIT_S24_LE)
|
||||||
|
|
||||||
static struct snd_soc_dai_ops wm8731_dai_ops = {
|
static struct snd_soc_dai_ops wm8731_dai_ops = {
|
||||||
.prepare = wm8731_pcm_prepare,
|
|
||||||
.hw_params = wm8731_hw_params,
|
.hw_params = wm8731_hw_params,
|
||||||
.shutdown = wm8731_shutdown,
|
|
||||||
.digital_mute = wm8731_mute,
|
.digital_mute = wm8731_mute,
|
||||||
.set_sysclk = wm8731_set_dai_sysclk,
|
.set_sysclk = wm8731_set_dai_sysclk,
|
||||||
.set_fmt = wm8731_set_dai_fmt,
|
.set_fmt = wm8731_set_dai_fmt,
|
||||||
|
Loading…
Reference in New Issue
Block a user