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>
This commit is contained in:
parent
36463a9660
commit
f83a59c3c1
|
@ -1162,9 +1162,9 @@ static int snd_ad1848_probe(struct snd_wss *chip)
|
|||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
|
||||
/* set CS423x MODE 1 */
|
||||
snd_wss_out(chip, CS4231_MISC_INFO, 0);
|
||||
snd_wss_dout(chip, CS4231_MISC_INFO, 0);
|
||||
|
||||
snd_wss_out(chip, CS4231_RIGHT_INPUT, 0x45); /* 0x55 & ~0x10 */
|
||||
snd_wss_dout(chip, CS4231_RIGHT_INPUT, 0x45); /* 0x55 & ~0x10 */
|
||||
r = snd_wss_in(chip, CS4231_RIGHT_INPUT);
|
||||
if (r != 0x45) {
|
||||
/* RMGE always high on AD1847 */
|
||||
|
@ -1174,7 +1174,7 @@ static int snd_ad1848_probe(struct snd_wss *chip)
|
|||
}
|
||||
hardware = WSS_HW_AD1847;
|
||||
} else {
|
||||
snd_wss_out(chip, CS4231_LEFT_INPUT, 0xaa);
|
||||
snd_wss_dout(chip, CS4231_LEFT_INPUT, 0xaa);
|
||||
r = snd_wss_in(chip, CS4231_LEFT_INPUT);
|
||||
/* L/RMGE always low on AT2320 */
|
||||
if ((r | CS4231_ENABLE_MIC_GAIN) != 0xaa) {
|
||||
|
@ -1199,7 +1199,7 @@ static int snd_ad1848_probe(struct snd_wss *chip)
|
|||
r = snd_wss_in(chip, CS4231_MISC_INFO);
|
||||
|
||||
/* set CS423x MODE 2 */
|
||||
snd_wss_out(chip, CS4231_MISC_INFO, CS4231_MODE2);
|
||||
snd_wss_dout(chip, CS4231_MISC_INFO, CS4231_MODE2);
|
||||
for (i = 0; i < 16; i++) {
|
||||
if (snd_wss_in(chip, i) != snd_wss_in(chip, 16 + i)) {
|
||||
/* we have more than 16 registers: check ID */
|
||||
|
@ -1221,7 +1221,7 @@ static int snd_ad1848_probe(struct snd_wss *chip)
|
|||
else
|
||||
chip->hardware = WSS_HW_AD1848;
|
||||
out_mode:
|
||||
snd_wss_out(chip, CS4231_MISC_INFO, 0);
|
||||
snd_wss_dout(chip, CS4231_MISC_INFO, 0);
|
||||
out:
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue