mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chris Wright <chrisw@osdl.org>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: dsd@gentoo.org, tiwai@suse.de, torvalds@osdl.org, akpm@osdl.org,
	alan@lxorguk.ukuu.org.uk, jmforbes@linuxtx.org,
	zwane@arm.linux.org.uk, cliffw@osdl.org, tytso@mit.edu,
	rddunlap@osdl.org
Subject: [1/9] [ALSA] Fix stereo mutes on Surround volume control
Date: Wed, 16 Mar 2005 15:54:15 -0800	[thread overview]
Message-ID: <20050316235415.GZ5389@shell0.pdx.osdl.net> (raw)
In-Reply-To: <20050316235336.GY5389@shell0.pdx.osdl.net>

-stable review patch.  If anyone has any objections, please let us know.

----

From: Daniel Drake <dsd@gentoo.org>

As of 2.6.11, I have no output out of the rear right speaker of my 4.1 
surround sound setup. I am using snd-intel8x0 based on a Realtek ALC650F chip 
on an nvidia motherboard.

A gentoo user with completely different hardware also ran into this:
http://bugs.gentoo.org/84276

2.6.11-mm3 fixes this problem and I've identified the specific fix, which is 
already in the ALSA development tree. An ALSA developer asked me to submit the 
fix for 2.6.11.x when I'd found it, so here it is :)

--
AC97 Codec
Fix stereo mutes on Surround volume control.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

diff -Naru a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
--- a/sound/pci/ac97/ac97_codec.c	2005-03-14 08:24:04 -08:00
+++ b/sound/pci/ac97/ac97_codec.c	2005-03-14 08:24:04 -08:00
@@ -1184,7 +1184,7 @@
 /*
  * create mute switch(es) for normal stereo controls
  */
-static int snd_ac97_cmute_new(snd_card_t *card, char *name, int reg, ac97_t *ac97)
+static int snd_ac97_cmute_new_stereo(snd_card_t *card, char *name, int reg, int check_stereo, ac97_t *ac97)
 {
 	snd_kcontrol_t *kctl;
 	int err;
@@ -1195,7 +1195,7 @@
 
 	mute_mask = 0x8000;
 	val = snd_ac97_read(ac97, reg);
-	if (ac97->flags & AC97_STEREO_MUTES) {
+	if (check_stereo || (ac97->flags & AC97_STEREO_MUTES)) {
 		/* check whether both mute bits work */
 		val1 = val | 0x8080;
 		snd_ac97_write(ac97, reg, val1);
@@ -1253,7 +1253,7 @@
 /*
  * create a mute-switch and a volume for normal stereo/mono controls
  */
-static int snd_ac97_cmix_new(snd_card_t *card, const char *pfx, int reg, ac97_t *ac97)
+static int snd_ac97_cmix_new_stereo(snd_card_t *card, const char *pfx, int reg, int check_stereo, ac97_t *ac97)
 {
 	int err;
 	char name[44];
@@ -1264,7 +1264,7 @@
 
 	if (snd_ac97_try_bit(ac97, reg, 15)) {
 		sprintf(name, "%s Switch", pfx);
-		if ((err = snd_ac97_cmute_new(card, name, reg, ac97)) < 0)
+		if ((err = snd_ac97_cmute_new_stereo(card, name, reg, check_stereo, ac97)) < 0)
 			return err;
 	}
 	check_volume_resolution(ac97, reg, &lo_max, &hi_max);
@@ -1276,6 +1276,8 @@
 	return 0;
 }
 
+#define snd_ac97_cmix_new(card, pfx, reg, ac97)	snd_ac97_cmix_new_stereo(card, pfx, reg, 0, ac97)
+#define snd_ac97_cmute_new(card, name, reg, ac97)	snd_ac97_cmute_new_stereo(card, name, reg, 0, ac97)
 
 static unsigned int snd_ac97_determine_spdif_rates(ac97_t *ac97);
 
@@ -1326,7 +1328,8 @@
 
 	/* build surround controls */
 	if (snd_ac97_try_volume_mix(ac97, AC97_SURROUND_MASTER)) {
-		if ((err = snd_ac97_cmix_new(card, "Surround Playback", AC97_SURROUND_MASTER, ac97)) < 0)
+		/* Surround Master (0x38) is with stereo mutes */
+		if ((err = snd_ac97_cmix_new_stereo(card, "Surround Playback", AC97_SURROUND_MASTER, 1, ac97)) < 0)
 			return err;
 	}
 


  reply	other threads:[~2005-03-16 23:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-16 23:53 [0/9] -stable review Chris Wright
2005-03-16 23:54 ` Chris Wright [this message]
2005-03-16 23:54 ` [2/9] Possible AMD8111e free irq issue Chris Wright
2005-03-17  0:19   ` Ian Pilcher
2005-03-17  1:03     ` Chris Wright
2005-03-17  1:13       ` Ian Pilcher
2005-03-17  2:00     ` Jeff Garzik
2005-03-16 23:54 ` [3/9] [IPSEC]: Fix __xfrm_find_acq_byseq() Chris Wright
2005-03-16 23:54 ` [4/9] NetROM locking Chris Wright
2005-03-16 23:55 ` [5/9] [TUN] Fix check for underflow Chris Wright
2005-03-17  0:13   ` Patrick McHardy
2005-03-17  0:23     ` Chris Wright
2005-03-16 23:55 ` [6/9] tasklist left locked Chris Wright
2005-03-16 23:55 ` [7/9] Timercode race in AX.25 Chris Wright
2005-03-16 23:55 ` [8/9] Possible VIA-Rhine free irq issue Chris Wright
2005-03-16 23:55 ` [9/9] Fix kernel panic on receive with WAN Hitachi SCA HD6457x Chris Wright

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050316235415.GZ5389@shell0.pdx.osdl.net \
    --to=chrisw@osdl.org \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=cliffw@osdl.org \
    --cc=dsd@gentoo.org \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rddunlap@osdl.org \
    --cc=stable@kernel.org \
    --cc=tiwai@suse.de \
    --cc=torvalds@osdl.org \
    --cc=tytso@mit.edu \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome