]> nv-tegra.nvidia Code Review - linux-3.10.git/commitdiff
[ALSA] When the alsamixer says 'SPDIF Out [Off]', SPDIF output should be off and...
authorJames Courtier-Dutton <James@superbug.co.uk>
Sat, 21 May 2005 14:45:58 +0000 (16:45 +0200)
committerJaroslav Kysela <perex@suse.cz>
Sun, 29 May 2005 08:11:32 +0000 (10:11 +0200)
CA0106 driver
         This fixes a bug whereby when the snd-ca0106 module first loads,
         alsamixer says 'SPDIF Out [Off]' but no analog sound comes from the speakers.

         This covers any bug reports that said things like
         'mixer fails to remember analog output on, when the system is rebooted.'

Signed-off-by: James Courtier-Dutton <James@superbug.co.uk>
sound/pci/ca0106/ca0106_main.c

index d4cb8edf70804ba554ef76e27ada620d7dfeaef3..90d493ca7c999ffd2b8f584943108f77062f1b91 100644 (file)
@@ -1114,7 +1114,7 @@ static int __devinit snd_ca0106_create(snd_card_t *card,
        //snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0xf0f003f); /* OSS drivers set this. */
        /* Analog or Digital output */
        snd_ca0106_ptr_write(chip, SPDIF_SELECT1, 0, 0xf);
-       snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0x000b0000); /* 0x0b000000 for digital, 0x000b0000 for analog, from win2000 drivers */
+       snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0x000f0000); /* 0x0b000000 for digital, 0x000b0000 for analog, from win2000 drivers. Use 0x000f0000 for surround71 */
        chip->spdif_enable = 0; /* Set digital SPDIF output off */
        chip->capture_source = 3; /* Set CAPTURE_SOURCE */
        //snd_ca0106_ptr_write(chip, 0x45, 0, 0); /* Analogue out */
@@ -1145,7 +1145,7 @@ static int __devinit snd_ca0106_create(snd_card_t *card,
                /* FIXME: Still need to find out what the other GPIO bits do. E.g. For digital spdif out. */
                outl(0x0, chip->port+GPIO);
                //outl(0x00f0e000, chip->port+GPIO); /* Analog */
-               outl(0x005f4300, chip->port+GPIO); /* Analog */
+               outl(0x005f4301, chip->port+GPIO); /* Analog */
        } else {
                outl(0x0, chip->port+GPIO);
                outl(0x005f03a3, chip->port+GPIO); /* Analog */