Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2340465 authored by Paul Vojta's avatar Paul Vojta Committed by Jaroslav Kysela
Browse files

[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: default avatarPaul Vojta <vojta@math.berkeley.edu>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 01ade528
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -210,7 +210,7 @@
#define CS4231_HW_CS4239	0x0404	/* CS4239 - Crystal Clear (tm) stereo enhancement */
/* compatible, but clones */
#define CS4231_HW_INTERWAVE     0x1000	/* InterWave chip */
#define CS4231_HW_OPL3SA2       0x1001	/* OPL3-SA2 chip */
#define CS4231_HW_OPL3SA2       0x1101	/* OPL3-SA2 chip, similar to cs4231 */

/* defines for codec.hwshare */
#define CS4231_HWSHARE_IRQ	(1<<0)
+2 −0
Original line number Diff line number Diff line
@@ -555,6 +555,8 @@ static void snd_cs4231_playback_format(struct snd_cs4231 *chip,
			snd_cs4231_out(chip, CS4231_PLAYBK_FORMAT, chip->image[CS4231_PLAYBK_FORMAT] = pdfr);
		}
		spin_unlock_irqrestore(&chip->reg_lock, flags);
		if (chip->hardware == CS4231_HW_OPL3SA2)
			udelay(100);	/* this seems to help */
		snd_cs4231_mce_down(chip);
	}
	snd_cs4231_calibrate_mute(chip, 0);
+1 −0
Original line number Diff line number Diff line
@@ -253,6 +253,7 @@ static int __devinit snd_opl3sa2_detect(struct snd_opl3sa2 *chip)
		/* 0x03 - YM715B */
		/* 0x04 - YM719 - OPL-SA4? */
		/* 0x05 - OPL3-SA3 - Libretto 100 */
		/* 0x07 - unknown - Neomagic MagicWave 3D */
		break;
	}
	str[0] = chip->version + '0';