diff options
author | Paul Vojta <vojta@math.berkeley.edu> | 2007-07-27 06:20:38 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2007-10-16 09:58:08 -0400 |
commit | e2340465ec9587362a057524d3e2163377366771 (patch) | |
tree | 7ee0a06078c7966365b07202cbbd6607cedb61d6 | |
parent | 01ade528d424420093973ede20d7394d2cd81190 (diff) |
[ALSA] Fix bugs in mode change/recalibration for opl3sa2 driver
The mode change / recalibration doesn't work always with opl3sa2 devices,
e.g. the first time it's played back. The patch fixes the problem.
Signed-off-by: Paul Vojta <vojta@math.berkeley.edu>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r-- | include/sound/cs4231.h | 2 | ||||
-rw-r--r-- | sound/isa/cs423x/cs4231_lib.c | 2 | ||||
-rw-r--r-- | sound/isa/opl3sa2.c | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/include/sound/cs4231.h b/include/sound/cs4231.h index ab51ce1ba9a5..b195a73c5685 100644 --- a/include/sound/cs4231.h +++ b/include/sound/cs4231.h | |||
@@ -210,7 +210,7 @@ | |||
210 | #define CS4231_HW_CS4239 0x0404 /* CS4239 - Crystal Clear (tm) stereo enhancement */ | 210 | #define CS4231_HW_CS4239 0x0404 /* CS4239 - Crystal Clear (tm) stereo enhancement */ |
211 | /* compatible, but clones */ | 211 | /* compatible, but clones */ |
212 | #define CS4231_HW_INTERWAVE 0x1000 /* InterWave chip */ | 212 | #define CS4231_HW_INTERWAVE 0x1000 /* InterWave chip */ |
213 | #define CS4231_HW_OPL3SA2 0x1001 /* OPL3-SA2 chip */ | 213 | #define CS4231_HW_OPL3SA2 0x1101 /* OPL3-SA2 chip, similar to cs4231 */ |
214 | 214 | ||
215 | /* defines for codec.hwshare */ | 215 | /* defines for codec.hwshare */ |
216 | #define CS4231_HWSHARE_IRQ (1<<0) | 216 | #define CS4231_HWSHARE_IRQ (1<<0) |
diff --git a/sound/isa/cs423x/cs4231_lib.c b/sound/isa/cs423x/cs4231_lib.c index 914d77b61b0c..642bdaa703be 100644 --- a/sound/isa/cs423x/cs4231_lib.c +++ b/sound/isa/cs423x/cs4231_lib.c | |||
@@ -555,6 +555,8 @@ static void snd_cs4231_playback_format(struct snd_cs4231 *chip, | |||
555 | snd_cs4231_out(chip, CS4231_PLAYBK_FORMAT, chip->image[CS4231_PLAYBK_FORMAT] = pdfr); | 555 | snd_cs4231_out(chip, CS4231_PLAYBK_FORMAT, chip->image[CS4231_PLAYBK_FORMAT] = pdfr); |
556 | } | 556 | } |
557 | spin_unlock_irqrestore(&chip->reg_lock, flags); | 557 | spin_unlock_irqrestore(&chip->reg_lock, flags); |
558 | if (chip->hardware == CS4231_HW_OPL3SA2) | ||
559 | udelay(100); /* this seems to help */ | ||
558 | snd_cs4231_mce_down(chip); | 560 | snd_cs4231_mce_down(chip); |
559 | } | 561 | } |
560 | snd_cs4231_calibrate_mute(chip, 0); | 562 | snd_cs4231_calibrate_mute(chip, 0); |
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c index e70db32991d9..244a00296750 100644 --- a/sound/isa/opl3sa2.c +++ b/sound/isa/opl3sa2.c | |||
@@ -253,6 +253,7 @@ static int __devinit snd_opl3sa2_detect(struct snd_opl3sa2 *chip) | |||
253 | /* 0x03 - YM715B */ | 253 | /* 0x03 - YM715B */ |
254 | /* 0x04 - YM719 - OPL-SA4? */ | 254 | /* 0x04 - YM719 - OPL-SA4? */ |
255 | /* 0x05 - OPL3-SA3 - Libretto 100 */ | 255 | /* 0x05 - OPL3-SA3 - Libretto 100 */ |
256 | /* 0x07 - unknown - Neomagic MagicWave 3D */ | ||
256 | break; | 257 | break; |
257 | } | 258 | } |
258 | str[0] = chip->version + '0'; | 259 | str[0] = chip->version + '0'; |