diff options
| author | Jon Smirl <jonsmirl@gmail.com> | 2009-12-15 20:53:44 -0500 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-12-16 10:56:57 -0500 |
| commit | 75b46c1321785c29cfbc4f839b6dc031428734ad (patch) | |
| tree | 0d912966838c1a24abc407be0e1a9979444ec7d8 | |
| parent | 1cf86f6f9b000e98c1b7f866f99633ae67464e2f (diff) | |
ASoC: Fix disable of SPDIF on STAC9766 codec
Change code so that switching to playing music through the analog output
disables SPDIF out instead of disabling it when stream ends.
Signed-off-by: Jon Smirl <jonsmirl@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| -rw-r--r-- | sound/soc/codecs/stac9766.c | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/sound/soc/codecs/stac9766.c b/sound/soc/codecs/stac9766.c index bbc72c2ddfca..81b8c9dfe7fc 100644 --- a/sound/soc/codecs/stac9766.c +++ b/sound/soc/codecs/stac9766.c | |||
| @@ -191,6 +191,7 @@ static int ac97_analog_prepare(struct snd_pcm_substream *substream, | |||
| 191 | vra = stac9766_ac97_read(codec, AC97_EXTENDED_STATUS); | 191 | vra = stac9766_ac97_read(codec, AC97_EXTENDED_STATUS); |
| 192 | 192 | ||
| 193 | vra |= 0x1; /* enable variable rate audio */ | 193 | vra |= 0x1; /* enable variable rate audio */ |
| 194 | vra &= ~0x4; /* disable SPDIF output */ | ||
| 194 | 195 | ||
| 195 | stac9766_ac97_write(codec, AC97_EXTENDED_STATUS, vra); | 196 | stac9766_ac97_write(codec, AC97_EXTENDED_STATUS, vra); |
| 196 | 197 | ||
| @@ -221,22 +222,6 @@ static int ac97_digital_prepare(struct snd_pcm_substream *substream, | |||
| 221 | return stac9766_ac97_write(codec, reg, runtime->rate); | 222 | return stac9766_ac97_write(codec, reg, runtime->rate); |
| 222 | } | 223 | } |
| 223 | 224 | ||
| 224 | static int ac97_digital_trigger(struct snd_pcm_substream *substream, | ||
| 225 | int cmd, struct snd_soc_dai *dai) | ||
| 226 | { | ||
| 227 | struct snd_soc_codec *codec = dai->codec; | ||
| 228 | unsigned short vra; | ||
| 229 | |||
| 230 | switch (cmd) { | ||
| 231 | case SNDRV_PCM_TRIGGER_STOP: | ||
| 232 | vra = stac9766_ac97_read(codec, AC97_EXTENDED_STATUS); | ||
| 233 | vra &= !0x04; | ||
| 234 | stac9766_ac97_write(codec, AC97_EXTENDED_STATUS, vra); | ||
| 235 | break; | ||
| 236 | } | ||
| 237 | return 0; | ||
| 238 | } | ||
| 239 | |||
| 240 | static int stac9766_set_bias_level(struct snd_soc_codec *codec, | 225 | static int stac9766_set_bias_level(struct snd_soc_codec *codec, |
| 241 | enum snd_soc_bias_level level) | 226 | enum snd_soc_bias_level level) |
| 242 | { | 227 | { |
| @@ -315,7 +300,6 @@ static struct snd_soc_dai_ops stac9766_dai_ops_analog = { | |||
| 315 | 300 | ||
| 316 | static struct snd_soc_dai_ops stac9766_dai_ops_digital = { | 301 | static struct snd_soc_dai_ops stac9766_dai_ops_digital = { |
| 317 | .prepare = ac97_digital_prepare, | 302 | .prepare = ac97_digital_prepare, |
| 318 | .trigger = ac97_digital_trigger, | ||
| 319 | }; | 303 | }; |
| 320 | 304 | ||
| 321 | struct snd_soc_dai stac9766_dai[] = { | 305 | struct snd_soc_dai stac9766_dai[] = { |
