Skip to content

Commit

Permalink
ASoC: Fix disable of SPDIF on STAC9766 codec
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jon Smirl authored and Mark Brown committed Dec 16, 2009
1 parent 1cf86f6 commit 75b46c1
Showing 1 changed file with 1 addition and 17 deletions.
18 changes: 1 addition & 17 deletions sound/soc/codecs/stac9766.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ static int ac97_analog_prepare(struct snd_pcm_substream *substream,
vra = stac9766_ac97_read(codec, AC97_EXTENDED_STATUS);

vra |= 0x1; /* enable variable rate audio */
vra &= ~0x4; /* disable SPDIF output */

stac9766_ac97_write(codec, AC97_EXTENDED_STATUS, vra);

Expand Down Expand Up @@ -221,22 +222,6 @@ static int ac97_digital_prepare(struct snd_pcm_substream *substream,
return stac9766_ac97_write(codec, reg, runtime->rate);
}

static int ac97_digital_trigger(struct snd_pcm_substream *substream,
int cmd, struct snd_soc_dai *dai)
{
struct snd_soc_codec *codec = dai->codec;
unsigned short vra;

switch (cmd) {
case SNDRV_PCM_TRIGGER_STOP:
vra = stac9766_ac97_read(codec, AC97_EXTENDED_STATUS);
vra &= !0x04;
stac9766_ac97_write(codec, AC97_EXTENDED_STATUS, vra);
break;
}
return 0;
}

static int stac9766_set_bias_level(struct snd_soc_codec *codec,
enum snd_soc_bias_level level)
{
Expand Down Expand Up @@ -315,7 +300,6 @@ static struct snd_soc_dai_ops stac9766_dai_ops_analog = {

static struct snd_soc_dai_ops stac9766_dai_ops_digital = {
.prepare = ac97_digital_prepare,
.trigger = ac97_digital_trigger,
};

struct snd_soc_dai stac9766_dai[] = {
Expand Down

0 comments on commit 75b46c1

Please sign in to comment.