aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Helt <krzysztof.h1@wp.pl>2008-08-24 12:08:03 -0400
committerJaroslav Kysela <perex@perex.cz>2008-08-25 03:57:50 -0400
commitf83a59c3c15471e866b6af09f82a9ac1eb76fce7 (patch)
tree4f8c5740bd8e23daa1f7f4da88a85d695960734b
parent36463a9660a69018c98f6bde93183a523667e598 (diff)
ALSA: wss_lib: do not mess mixer settings during probe
Use the wss_dout function which does not mess shadowed register values during chip probing. Otherwise, user ends up with stupid mixer settings after driver loading. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Acked-by: Rene Herman <rene.herman@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--sound/isa/wss/wss_lib.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sound/isa/wss/wss_lib.c b/sound/isa/wss/wss_lib.c
index 2a5defa5e636..3d6c5f2838af 100644
--- a/sound/isa/wss/wss_lib.c
+++ b/sound/isa/wss/wss_lib.c
@@ -1162,9 +1162,9 @@ static int snd_ad1848_probe(struct snd_wss *chip)
1162 spin_lock_irqsave(&chip->reg_lock, flags); 1162 spin_lock_irqsave(&chip->reg_lock, flags);
1163 1163
1164 /* set CS423x MODE 1 */ 1164 /* set CS423x MODE 1 */
1165 snd_wss_out(chip, CS4231_MISC_INFO, 0); 1165 snd_wss_dout(chip, CS4231_MISC_INFO, 0);
1166 1166
1167 snd_wss_out(chip, CS4231_RIGHT_INPUT, 0x45); /* 0x55 & ~0x10 */ 1167 snd_wss_dout(chip, CS4231_RIGHT_INPUT, 0x45); /* 0x55 & ~0x10 */
1168 r = snd_wss_in(chip, CS4231_RIGHT_INPUT); 1168 r = snd_wss_in(chip, CS4231_RIGHT_INPUT);
1169 if (r != 0x45) { 1169 if (r != 0x45) {
1170 /* RMGE always high on AD1847 */ 1170 /* RMGE always high on AD1847 */
@@ -1174,7 +1174,7 @@ static int snd_ad1848_probe(struct snd_wss *chip)
1174 } 1174 }
1175 hardware = WSS_HW_AD1847; 1175 hardware = WSS_HW_AD1847;
1176 } else { 1176 } else {
1177 snd_wss_out(chip, CS4231_LEFT_INPUT, 0xaa); 1177 snd_wss_dout(chip, CS4231_LEFT_INPUT, 0xaa);
1178 r = snd_wss_in(chip, CS4231_LEFT_INPUT); 1178 r = snd_wss_in(chip, CS4231_LEFT_INPUT);
1179 /* L/RMGE always low on AT2320 */ 1179 /* L/RMGE always low on AT2320 */
1180 if ((r | CS4231_ENABLE_MIC_GAIN) != 0xaa) { 1180 if ((r | CS4231_ENABLE_MIC_GAIN) != 0xaa) {
@@ -1199,7 +1199,7 @@ static int snd_ad1848_probe(struct snd_wss *chip)
1199 r = snd_wss_in(chip, CS4231_MISC_INFO); 1199 r = snd_wss_in(chip, CS4231_MISC_INFO);
1200 1200
1201 /* set CS423x MODE 2 */ 1201 /* set CS423x MODE 2 */
1202 snd_wss_out(chip, CS4231_MISC_INFO, CS4231_MODE2); 1202 snd_wss_dout(chip, CS4231_MISC_INFO, CS4231_MODE2);
1203 for (i = 0; i < 16; i++) { 1203 for (i = 0; i < 16; i++) {
1204 if (snd_wss_in(chip, i) != snd_wss_in(chip, 16 + i)) { 1204 if (snd_wss_in(chip, i) != snd_wss_in(chip, 16 + i)) {
1205 /* we have more than 16 registers: check ID */ 1205 /* we have more than 16 registers: check ID */
@@ -1221,7 +1221,7 @@ static int snd_ad1848_probe(struct snd_wss *chip)
1221 else 1221 else
1222 chip->hardware = WSS_HW_AD1848; 1222 chip->hardware = WSS_HW_AD1848;
1223out_mode: 1223out_mode:
1224 snd_wss_out(chip, CS4231_MISC_INFO, 0); 1224 snd_wss_dout(chip, CS4231_MISC_INFO, 0);
1225out: 1225out:
1226 spin_unlock_irqrestore(&chip->reg_lock, flags); 1226 spin_unlock_irqrestore(&chip->reg_lock, flags);
1227 return err; 1227 return err;