[alsa-devel] Regression 2.6.35-rc6: ALSA Intel HDA/Realtek: missing Beep
Hello,
My PC-Speaker Beep control worked in 2.6.34, but is gone in 2.6.35-rc6. The sound device is an Asus P5E-V HDMI (Intel G35) onboard Intel HDA w/ Realtek ALC883 codec.
The driver does still register a PCBeep input, but the Controls as well as the sound (:)) are gone.
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X HDA Intel 0000:00:1b.0: setting latency timer to 64 input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input5
$ diff card0-codec#0-2.6.34 card0-codec#0-2.6.35-rc6 111,114d110 < Control: name="Beep Playback Volume", index=0, device=0 < ControlAmp: chs=3, dir=In, idx=5, ofs=0 < Control: name="Beep Playback Switch", index=0, device=0 < ControlAmp: chs=3, dir=In, idx=5, ofs=0
Attached /proc/asound/card0/codec#0 from 2.6.35-rc6.
Thanks for your work & regards Mario
At Wed, 28 Jul 2010 16:49:03 +0200, Mario 'BitKoenig' Holbe wrote:
Hello,
My PC-Speaker Beep control worked in 2.6.34, but is gone in 2.6.35-rc6. The sound device is an Asus P5E-V HDMI (Intel G35) onboard Intel HDA w/ Realtek ALC883 codec.
The driver does still register a PCBeep input, but the Controls as well as the sound (:)) are gone.
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X HDA Intel 0000:00:1b.0: setting latency timer to 64 input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input5
$ diff card0-codec#0-2.6.34 card0-codec#0-2.6.35-rc6 111,114d110 < Control: name="Beep Playback Volume", index=0, device=0 < ControlAmp: chs=3, dir=In, idx=5, ofs=0 < Control: name="Beep Playback Switch", index=0, device=0 < ControlAmp: chs=3, dir=In, idx=5, ofs=0
Attached /proc/asound/card0/codec#0 from 2.6.35-rc6.
It's because now the driver checks the SSID your board sets up. Realtek codecs suppose SSID containing some useful bits to inform the h/w setups. The presence of PC beep is one of it. So, it's actually BIOS that clears it.
In the earlier version, the driver didn't check this.
Actually, the real bug is that it still creates a beep device without mixers. This should be avoided...
thanks,
Takashi
At Wed, 28 Jul 2010 17:35:10 +0200, I wrote:
At Wed, 28 Jul 2010 16:49:03 +0200, Mario 'BitKoenig' Holbe wrote:
Hello,
My PC-Speaker Beep control worked in 2.6.34, but is gone in 2.6.35-rc6. The sound device is an Asus P5E-V HDMI (Intel G35) onboard Intel HDA w/ Realtek ALC883 codec.
The driver does still register a PCBeep input, but the Controls as well as the sound (:)) are gone.
HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X HDA Intel 0000:00:1b.0: setting latency timer to 64 input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input5
$ diff card0-codec#0-2.6.34 card0-codec#0-2.6.35-rc6 111,114d110 < Control: name="Beep Playback Volume", index=0, device=0 < ControlAmp: chs=3, dir=In, idx=5, ofs=0 < Control: name="Beep Playback Switch", index=0, device=0 < ControlAmp: chs=3, dir=In, idx=5, ofs=0
Attached /proc/asound/card0/codec#0 from 2.6.35-rc6.
It's because now the driver checks the SSID your board sets up. Realtek codecs suppose SSID containing some useful bits to inform the h/w setups. The presence of PC beep is one of it. So, it's actually BIOS that clears it.
In the earlier version, the driver didn't check this.
Actually, the real bug is that it still creates a beep device without mixers. This should be avoided...
Or, does the following patch fix? It's already in sound git tree,
Takashi
--- diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d7fd846..9295527 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -1267,11 +1267,11 @@ static int alc_auto_parse_customize_define(struct hda_codec *codec) unsigned nid = 0; struct alc_spec *spec = codec->spec;
+ spec->cdefine.enable_pcbeep = 1; /* assume always enabled */ + ass = codec->subsystem_id & 0xffff; - if (ass != codec->bus->pci->subsystem_device && (ass & 1)) { - spec->cdefine.enable_pcbeep = 1; /* assume always enabled */ + if (ass != codec->bus->pci->subsystem_device && (ass & 1)) goto do_sku; - }
nid = 0x1d; if (codec->vendor_id == 0x10ec0260)
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 :/
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? Or am I somehow able to tweak it? Is there a module parameter to set this SSID bit? I mean, it did work before... :)
Thanks for you help & regards Mario
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@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@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)
participants (2)
-
Mario 'BitKoenig' Holbe
-
Takashi Iwai