diff options
author | James Courtier-Dutton <James@superbug.co.uk> | 2005-05-21 10:45:58 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-05-29 04:11:32 -0400 |
commit | 8f55fbb0fdb821023ff0a816ebf5056188891ff0 (patch) | |
tree | c637b02590d3a3129014be4326dc742ecd1afb10 /sound/pci/ca0106 | |
parent | 1f82941e82422fcb15d63431e163bf4f0b9389d9 (diff) |
[ALSA] When the alsamixer says 'SPDIF Out [Off]', SPDIF output should be off and Analog output should be on.
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>
Diffstat (limited to 'sound/pci/ca0106')
-rw-r--r-- | sound/pci/ca0106/ca0106_main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c index d4cb8edf7080..90d493ca7c99 100644 --- a/sound/pci/ca0106/ca0106_main.c +++ b/sound/pci/ca0106/ca0106_main.c | |||
@@ -1114,7 +1114,7 @@ static int __devinit snd_ca0106_create(snd_card_t *card, | |||
1114 | //snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0xf0f003f); /* OSS drivers set this. */ | 1114 | //snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0xf0f003f); /* OSS drivers set this. */ |
1115 | /* Analog or Digital output */ | 1115 | /* Analog or Digital output */ |
1116 | snd_ca0106_ptr_write(chip, SPDIF_SELECT1, 0, 0xf); | 1116 | snd_ca0106_ptr_write(chip, SPDIF_SELECT1, 0, 0xf); |
1117 | snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0x000b0000); /* 0x0b000000 for digital, 0x000b0000 for analog, from win2000 drivers */ | 1117 | snd_ca0106_ptr_write(chip, SPDIF_SELECT2, 0, 0x000f0000); /* 0x0b000000 for digital, 0x000b0000 for analog, from win2000 drivers. Use 0x000f0000 for surround71 */ |
1118 | chip->spdif_enable = 0; /* Set digital SPDIF output off */ | 1118 | chip->spdif_enable = 0; /* Set digital SPDIF output off */ |
1119 | chip->capture_source = 3; /* Set CAPTURE_SOURCE */ | 1119 | chip->capture_source = 3; /* Set CAPTURE_SOURCE */ |
1120 | //snd_ca0106_ptr_write(chip, 0x45, 0, 0); /* Analogue out */ | 1120 | //snd_ca0106_ptr_write(chip, 0x45, 0, 0); /* Analogue out */ |
@@ -1145,7 +1145,7 @@ static int __devinit snd_ca0106_create(snd_card_t *card, | |||
1145 | /* FIXME: Still need to find out what the other GPIO bits do. E.g. For digital spdif out. */ | 1145 | /* FIXME: Still need to find out what the other GPIO bits do. E.g. For digital spdif out. */ |
1146 | outl(0x0, chip->port+GPIO); | 1146 | outl(0x0, chip->port+GPIO); |
1147 | //outl(0x00f0e000, chip->port+GPIO); /* Analog */ | 1147 | //outl(0x00f0e000, chip->port+GPIO); /* Analog */ |
1148 | outl(0x005f4300, chip->port+GPIO); /* Analog */ | 1148 | outl(0x005f4301, chip->port+GPIO); /* Analog */ |
1149 | } else { | 1149 | } else { |
1150 | outl(0x0, chip->port+GPIO); | 1150 | outl(0x0, chip->port+GPIO); |
1151 | outl(0x005f03a3, chip->port+GPIO); /* Analog */ | 1151 | outl(0x005f03a3, chip->port+GPIO); /* Analog */ |