[alsa-devel] Regression 2.6.35-rc6: ALSA Intel HDA/Realtek: missing Beep

Takashi Iwai tiwai at suse.de
Thu Jul 29 07:44:38 CEST 2010


At Wed, 28 Jul 2010 23:27:46 +0200,
Mario 'BitKoenig' Holbe wrote:
> 
> [1  <text/plain; us-ascii (quoted-printable)>]
> On Wed, Jul 28, 2010 at 06:03:29PM +0200, Takashi Iwai wrote:
> > I wrote:
> > > Mario 'BitKoenig' Holbe wrote:
> > > > My PC-Speaker Beep control worked in 2.6.34, but is gone in 2.6.35-rc6.
> > > It's because now the driver checks the SSID your board sets up.
> > > So, it's actually BIOS that clears it.
> 
> But the BIOS itself beeps through the sound-card at boot :/

But BIOS tells that the HD-audio codec shouldn't use, so the driver
follows it.

> > Or, does the following patch fix?  It's already in sound git tree,
> 
> Nope, unfortunately it doesn't. Still no Beep controls, no beep through
> sound-card.
> 
> May I somehow provide any further data?

Please give alsa-info.sh output instead of codec proc file.  It's more
comprehensive.

> Or am I somehow able to tweak it? Is there a module parameter to set
> this SSID bit? I mean, it did work before... :)

With the patch below, you'll likely have back the system beep sound.
But it doesn't go through codec, thus no volume control.


thanks,

Takashi

---
From 8af2591d6342a9e4bb79b4f1236246a79d20ebee Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai at suse.de>
Date: Wed, 28 Jul 2010 17:37:16 +0200
Subject: [PATCH] ALSA: hda - Don't register beep input device when no beep is available

We check now the availability of PC beep and skip the build of beep
mixers, but the driver still registers the input device.  This should
be checked as well.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/pci/hda/patch_realtek.c |   32 +++++++++++++++++++-------------
 1 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index ff614dd..d7fd846 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -10566,10 +10566,12 @@ static int patch_alc882(struct hda_codec *codec)
 		}
 	}
 
-	err = snd_hda_attach_beep_device(codec, 0x1);
-	if (err < 0) {
-		alc_free(codec);
-		return err;
+	if (spec->cdefine.enable_pcbeep) {
+		err = snd_hda_attach_beep_device(codec, 0x1);
+		if (err < 0) {
+			alc_free(codec);
+			return err;
+		}
 	}
 
 	if (board_config != ALC882_AUTO)
@@ -12435,7 +12437,7 @@ static int patch_alc262(struct hda_codec *codec)
 		}
 	}
 
-	if (!spec->no_analog) {
+	if (!spec->no_analog && spec->cdefine.enable_pcbeep) {
 		err = snd_hda_attach_beep_device(codec, 0x1);
 		if (err < 0) {
 			alc_free(codec);
@@ -14458,10 +14460,12 @@ static int patch_alc269(struct hda_codec *codec)
 		}
 	}
 
-	err = snd_hda_attach_beep_device(codec, 0x1);
-	if (err < 0) {
-		alc_free(codec);
-		return err;
+	if (spec->cdefine.enable_pcbeep) {
+		err = snd_hda_attach_beep_device(codec, 0x1);
+		if (err < 0) {
+			alc_free(codec);
+			return err;
+		}
 	}
 
 	if (board_config != ALC269_AUTO)
@@ -18691,10 +18695,12 @@ static int patch_alc662(struct hda_codec *codec)
 		}
 	}
 
-	err = snd_hda_attach_beep_device(codec, 0x1);
-	if (err < 0) {
-		alc_free(codec);
-		return err;
+	if (spec->cdefine.enable_pcbeep) {
+		err = snd_hda_attach_beep_device(codec, 0x1);
+		if (err < 0) {
+			alc_free(codec);
+			return err;
+		}
 	}
 
 	if (board_config != ALC662_AUTO)
-- 
1.7.2



More information about the Alsa-devel mailing list