diff options
author | Krzysztof Helt <krzysztof.h1@wp.pl> | 2008-08-24 12:08:03 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2008-08-25 03:57:50 -0400 |
commit | f83a59c3c15471e866b6af09f82a9ac1eb76fce7 (patch) | |
tree | 4f8c5740bd8e23daa1f7f4da88a85d695960734b | |
parent | 36463a9660a69018c98f6bde93183a523667e598 (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.c | 10 |
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; |
1223 | out_mode: | 1223 | out_mode: |
1224 | snd_wss_out(chip, CS4231_MISC_INFO, 0); | 1224 | snd_wss_dout(chip, CS4231_MISC_INFO, 0); |
1225 | out: | 1225 | out: |
1226 | spin_unlock_irqrestore(&chip->reg_lock, flags); | 1226 | spin_unlock_irqrestore(&chip->reg_lock, flags); |
1227 | return err; | 1227 | return err; |