[alsa-devel] [PATCH] ALSA: hda: Add speaker pin to automute Acer Aspire 8943G
BugLink: https://bugs.launchpad.net/bugs/656625
Add clause for handling Acer Aspire 8943G's subwoofer as additional speaker pin for automuting.
Reported-by: RussianNeuroMancer Cc: stable@kernel.org Signed-off-by: Daniel T Chen crimsun@ubuntu.com Signed-off-by: David Henningsson david.henningsson@canonical.com
Hi David,
First of all, thank you for your work on subwoofer issues. I've had a chance to test them on my system lately, and they do really fix the bug reported, but another one (more serious, in my opinion) remains: subwoofer is not muted via normal mute button (more precisely, by muting Master ALSA mixer). The problem is that during autoconfiguration procedure, subwoofer is mapped on PCM channel, and there seems (at least to me) to be no reliable way to distinguish subwoofer from other possibly existing outputs on a general system and change this behavior. Creating dedicated presets for the machines with a subwoofer seems to be right way to workaround this, but then _quirks you've implemented should be merged with this preset.
Does this sound reasonable to you or I am missing anything?
Thanks.
Regards, Valentine Sinitsyn
2010/10/14 Valentine Sinitsyn valentine.sinitsyn@gmail.com
Hi David,
First of all, thank you for your work on subwoofer issues. I've had a chance to test them on my system lately, and they do really fix the bug reported, but another one (more serious, in my opinion) remains: subwoofer is not muted via normal mute button (more precisely, by muting Master ALSA mixer). The problem is that during autoconfiguration procedure, subwoofer is mapped on PCM channel, and there seems (at least to me) to be no reliable way to distinguish subwoofer from other possibly existing outputs on a general system and change this behavior. Creating dedicated presets for the machines with a subwoofer seems to be right way to workaround this, but then _quirks you've implemented should be merged with this preset.
Does this sound reasonable to you or I am missing anything?
Thanks.
Do you mean that you want to add that "subwoofer" control which is connected the the master mono pin of the codec to the slave controls of the virtual master volume control ?
Do you mean that you want to add that "subwoofer" control which is connected the the master mono pin of the codec to the slave controls of the virtual master volume control ?
Yes, except "subwoofer" control is to be connected to subwoofer's own pin (for instance, 0x17 on Lenovo machines). Subwoofer pins I've seen so far have their own output amplifier with mute.
Apart of this, adding presets has usual benefits like giving other controls descriptive names (say, "Int. Mic" instead of just "Mic"), but obviously it has nothing to do with a subwoofer.
Valentine
2010/10/14 Valentine Sinitsyn valentine.sinitsyn@gmail.com
Do you mean that you want to add that "subwoofer" control which is
connected the the master mono pin of the codec to the slave controls of the virtual master volume control ?
Yes, except "subwoofer" control is to be connected to subwoofer's own pin (for instance, 0x17 on Lenovo machines). Subwoofer pins I've seen so far have their own output amplifier with mute.
There are laptop which has 2.1 speakers which subwoofer is connected to master mono pin of the STAC codec , The ".1" subwoofer is most likely the result of a Low pass filter attached to the mono pin
Seem that your Lenovo are not using ALC670, it is hard to make any comment without knowing the output of alsa-info.sh
There are laptop which has 2.1 speakers which subwoofer is connected to master mono pin of the STAC codec , The ".1" subwoofer is most likely the result of a Low pass filter attached to the mono pin
Maybe - I'm not pretending I've seen all possible configurations. Since the idea I'm discussing is to just add some new models for several laptops with subwoffers, ultimately it doesn't matter which pin has the subwoofer connected, it just have to be correct pin for a given laptop family (0x17 for mine, whatever corresponds to Master Mono for someone else's etc).
Seem that your Lenovo are not using ALC670,
Nope it doesn't. It is Lenovo Y550P with ALC272, and in my system, the subwoofer is connected at pin 0x17. I'm not at it at the moment, but I can send alsa-info.sh later if it is of any interest.
Valentine.
2010/10/14 Valentine Sinitsyn valentine.sinitsyn@gmail.com
There are laptop which has 2.1 speakers which subwoofer is connected to
master mono pin of the STAC codec , The ".1" subwoofer is most likely the result of a Low pass filter attached to the mono pin
Maybe - I'm not pretending I've seen all possible configurations. Since the idea I'm discussing is to just add some new models for several laptops with subwoffers, ultimately it doesn't matter which pin has the subwoofer connected, it just have to be correct pin for a given laptop family (0x17 for mine, whatever corresponds to Master Mono for someone else's etc).
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5031
The Dell XPS M1710 has 2.1 speakers with volume controls on both stereo speakers and Subwoofer,
Node 0x11 [Pin Complex] wcaps 0x400104: Mono Amp-Out Amp-Out caps: N/A Amp-Out vals: [0x00] Pincap 0x00000010: OUT Pin Default 0x90170311: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x1 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Connection: 1 0x13
On 2010-10-14 08:13, Valentine Sinitsyn wrote:
Hi David,
First of all, thank you for your work on subwoofer issues. I've had a chance to test them on my system lately, and they do really fix the bug reported, but another one (more serious, in my opinion) remains: subwoofer is not muted via normal mute button (more precisely, by muting Master ALSA mixer). The problem is that during autoconfiguration procedure, subwoofer is mapped on PCM channel, and there seems (at least to me) to be no reliable way to distinguish subwoofer from other possibly existing outputs on a general system and change this behavior. Creating dedicated presets for the machines with a subwoofer seems to be right way to workaround this, but then _quirks you've implemented should be merged with this preset.
Does this sound reasonable to you or I am missing anything?
I would say that advertising this pin correctly to the driver is the first step. Trying to make the auto-parser treat this pin better would be a second step, separate from this patch. Making a new model (if that is what you call a "preset") would work as well, and might be easier for this particular case, while improving the auto-parser would be better in the long run.
Do you agree?
I would say that advertising this pin correctly to the driver is the first step.
That's true.
Trying to make the auto-parser treat this pin better would be a second step, separate from this patch.
Definitely. But changing autoconfiguration behavior for this particular case requires extensive testing to prove that changes made for subwoofer code haven't affected any other systems with no subwoofer at all (and I don't have enough hardware to do it myself). As I've said, I know no reliable way to determine that particular pin is connected to a subwoofer - it appears like just another speaker pin.
Making a new model (if that is what you call a "preset") would work as well, and might be easier for
It's not mine :-) The struct to store all model parameters is called alc_config_preset. Anyway, I meant this very thing.
this particular case, while improving the auto-parser would be better in the long run.
That's true. In fact, they are not mutually exclusive: adding new models will have the benefits I've outlined in the last message, while having auto-parser treat subwoofer correctly means broader support for new machines.
Valentine
2010/10/14 Valentine Sinitsyn valentine.sinitsyn@gmail.com
Hi David,
First of all, thank you for your work on subwoofer issues.
it seem that acer aspire 8943g has 5.1 speakers according to acer web site
with five built-in speakers and one subwoofer supporting low-frequency effects
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5083
alc670 is a 6 channels codec with [Audio Output] at nodes 0x02, 0x03 and 0x04
http://www.alsa-project.org/db/?f=d1c9aaa11903b6b1e2fd87b6d0466157ffdcb6ad
Seem that your Lenovo are not using ALC670,
Nope it doesn't. It is Lenovo Y550P with ALC272, and in my system, the subwoofer is connected at pin 0x17. I'm not at it at the moment, but I can send alsa-info.sh later if it is of any interest.
ALC272 is just a four channels codec ,
If you look at the block diagram (page 5) of alc272 datasheet , the mono-out (Port H) pin 0x17 has no volume control , and it is connected through 0x0f to [Audio Output] node 0x02.
This is quite different from STAC9200 which has a volume control for the mono-out widget
The beep-in and the beep generator can connected to 0x0f through [Audio Mixer] 0x0b this mean that the driver cannot assume that master-mono must be connected to a subwoofer.
At Thu, 14 Oct 2010 07:06:15 +0200, David Henningsson wrote:
BugLink: https://bugs.launchpad.net/bugs/656625
Add clause for handling Acer Aspire 8943G's subwoofer as additional speaker pin for automuting.
Reported-by: RussianNeuroMancer Cc: stable@kernel.org Signed-off-by: Daniel T Chen crimsun@ubuntu.com Signed-off-by: David Henningsson david.henningsson@canonical.com
Applied now. Thanks.
Takashi
-- David Henningsson, Canonical Ltd. http://launchpad.net/~diwic [2 0001-ALSA-hda-Add-speaker-pin-to-automute-Acer-Aspire-894.patch <text/x-patch (7bit)>]
From 6491325b75dcfbd1c9db212fd6d653783b626e4d Mon Sep 17 00:00:00 2001
From: Daniel T Chen crimsun@ubuntu.com Date: Sun, 10 Oct 2010 22:39:28 -0400 Subject: [PATCH] ALSA: hda: Add speaker pin to automute Acer Aspire 8943G
BugLink: https://bugs.launchpad.net/bugs/656625
Add clause for handling Acer Aspire 8943G's subwoofer as additional speaker pin for automuting.
Reported-by: RussianNeuroMancer Cc: stable@kernel.org Signed-off-by: Daniel T Chen crimsun@ubuntu.com Signed-off-by: David Henningsson david.henningsson@canonical.com
sound/pci/hda/patch_realtek.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index b4e0959..c41ac30 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -19233,10 +19233,17 @@ static void alc662_auto_init(struct hda_codec *codec) }
enum {
- ALC662_FIXUP_ASPIRE, ALC662_FIXUP_IDEAPAD,
};
static const struct alc_fixup alc662_fixups[] = {
- [ALC662_FIXUP_ASPIRE] = {
.pins = (const struct alc_pincfg[]) {
{ 0x15, 0x99130112 }, /* subwoofer */
{ }
}
- }, [ALC662_FIXUP_IDEAPAD] = { .pins = (const struct alc_pincfg[]) { { 0x17, 0x99130112 }, /* subwoofer */
@@ -19246,6 +19253,7 @@ static const struct alc_fixup alc662_fixups[] = { };
static struct snd_pci_quirk alc662_fixup_tbl[] = {
- SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), {}
-- 1.7.0.4
participants (4)
-
David Henningsson
-
Raymond Yau
-
Takashi Iwai
-
Valentine Sinitsyn