]> git.hungrycats.org Git - linux/commitdiff
ALSA CVS update
authorJaroslav Kysela <perex@suse.cz>
Wed, 20 Aug 2003 23:30:45 +0000 (01:30 +0200)
committerJaroslav Kysela <perex@suse.cz>
Wed, 20 Aug 2003 23:30:45 +0000 (01:30 +0200)
D:2003/08/14 17:05:13
A:Takashi Iwai <tiwai@suse.de>
F:pci/ac97/ac97_codec.c:1.100->1.101
L:fix by James Courtier-Dutton <James@superbug.demon.co.uk>:
L:
L:Fixes ac3 passthru non-audio bit setting for AC97 codecs.
L:
L:I have :-
L:Card: Intel ICH5
L:Chip: Avance Logic ALC650 rev 0
L:
L:The problem I was having was that the spdif non-audio bit was not
L:being set.
L:This patch fixes that problem.

sound/pci/ac97/ac97_codec.c

index 883b97224f8c445a4ab9c7493cf0ba4e754817c4..c857cca5d22f542c5d09035105ecac71b1aa1865 100644 (file)
@@ -823,7 +823,13 @@ static int snd_ac97_spdif_default_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_val
                                               AC97_CXR_SPDIF_MASK | AC97_CXR_COPYRGT,
                                               v);
        } else {
+               unsigned short extst = ac97->regs[AC97_EXTENDED_STATUS];
+               snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0); /* turn off */
+
                change |= snd_ac97_update_bits(ac97, AC97_SPDIF, 0x3fff, val);
+               if (extst & AC97_EA_SPDIF) {
+                       snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); /* turn on again */
+                }
        }
 
        return change;