All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation
@ 2011-06-22 20:31 David Henningsson
  2011-06-23  7:28 ` Takashi Iwai
  0 siblings, 1 reply; 5+ messages in thread
From: David Henningsson @ 2011-06-22 20:31 UTC (permalink / raw)
  To: Takashi Iwai, ALSA Development Mailing List

[-- Attachment #1: Type: text/plain, Size: 336 bytes --]

BIOS lists the internal speaker as an internal line-out. Change to
internal speaker + model=auto for better auto-mute capabilities.

Relevant alsa-info is here: 
https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/754964/+attachment/2002204/+files/alsa-info.txt

-- 
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic

[-- Attachment #2: 0001-ALSA-HDA-Pinfix-quirk-for-HP-Z200-Workstation.patch --]
[-- Type: text/x-patch, Size: 1885 bytes --]

>From 86033a5031f8dffdb72bbdfac2286063ad5cd72d Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson@canonical.com>
Date: Wed, 22 Jun 2011 09:58:37 +0200
Subject: [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation

BIOS lists the internal speaker as an internal line-out. Change to
internal speaker + model=auto for better auto-mute capabilities.

BugLink: http://bugs.launchpad.net/bugs/754964
Reported-by: Marc Legris <marc.legris@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 sound/pci/hda/patch_realtek.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 4adf9e2..fe56b2b 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -12600,6 +12600,7 @@ static const struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = {
  */
 enum {
 	PINFIX_FSC_H270,
+	PINFIX_HP_Z200,
 };
 
 static const struct alc_fixup alc262_fixups[] = {
@@ -12612,9 +12613,17 @@ static const struct alc_fixup alc262_fixups[] = {
 			{ }
 		}
 	},
+	[PINFIX_HP_Z200] = {
+		.type = ALC_FIXUP_PINS,
+		.v.pins = (const struct alc_pincfg[]) {
+			{ 0x16, 0x99130120 }, /* internal speaker */
+			{ }
+		}
+	},
 };
 
 static const struct snd_pci_quirk alc262_fixup_tbl[] = {
+	SND_PCI_QUIRK(0x103c, 0x170b, "HP Z200", PINFIX_HP_Z200),
 	SND_PCI_QUIRK(0x1734, 0x1147, "FSC Celsius H270", PINFIX_FSC_H270),
 	{}
 };
@@ -12731,6 +12740,8 @@ static const struct snd_pci_quirk alc262_cfg_tbl[] = {
 			   ALC262_HP_BPC),
 	SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1500, "HP z series",
 			   ALC262_HP_BPC),
+	SND_PCI_QUIRK(0x103c, 0x170b, "HP Z200",
+			   ALC262_AUTO),
 	SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1700, "HP xw series",
 			   ALC262_HP_BPC),
 	SND_PCI_QUIRK(0x103c, 0x2800, "HP D7000", ALC262_HP_BPC_D7000_WL),
-- 
1.7.4.1


[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation
  2011-06-22 20:31 [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation David Henningsson
@ 2011-06-23  7:28 ` Takashi Iwai
  2011-06-23  8:28   ` David Henningsson
  0 siblings, 1 reply; 5+ messages in thread
From: Takashi Iwai @ 2011-06-23  7:28 UTC (permalink / raw)
  To: David Henningsson; +Cc: ALSA Development Mailing List

At Wed, 22 Jun 2011 22:31:07 +0200,
David Henningsson wrote:
> 
> BIOS lists the internal speaker as an internal line-out. Change to
> internal speaker + model=auto for better auto-mute capabilities.
> 
> Relevant alsa-info is here: 
> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/754964/+attachment/2002204/+files/alsa-info.txt

Thanks, applied now.

3.0 should work even without this patch since line-out can be
auto-muted now, but it's still more correct to show the speaker as
speaker (e.g. the right mixer name).  So, it's still good to have
this kind of fix.


Takashi

> 
> -- 
> David Henningsson, Canonical Ltd.
> http://launchpad.net/~diwic
> [2 0001-ALSA-HDA-Pinfix-quirk-for-HP-Z200-Workstation.patch <text/x-patch (7bit)>]
> >From 86033a5031f8dffdb72bbdfac2286063ad5cd72d Mon Sep 17 00:00:00 2001
> From: David Henningsson <david.henningsson@canonical.com>
> Date: Wed, 22 Jun 2011 09:58:37 +0200
> Subject: [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation
> 
> BIOS lists the internal speaker as an internal line-out. Change to
> internal speaker + model=auto for better auto-mute capabilities.
> 
> BugLink: http://bugs.launchpad.net/bugs/754964
> Reported-by: Marc Legris <marc.legris@canonical.com>
> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
> ---
>  sound/pci/hda/patch_realtek.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 4adf9e2..fe56b2b 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -12600,6 +12600,7 @@ static const struct hda_verb alc262_toshiba_rx1_unsol_verbs[] = {
>   */
>  enum {
>  	PINFIX_FSC_H270,
> +	PINFIX_HP_Z200,
>  };
>  
>  static const struct alc_fixup alc262_fixups[] = {
> @@ -12612,9 +12613,17 @@ static const struct alc_fixup alc262_fixups[] = {
>  			{ }
>  		}
>  	},
> +	[PINFIX_HP_Z200] = {
> +		.type = ALC_FIXUP_PINS,
> +		.v.pins = (const struct alc_pincfg[]) {
> +			{ 0x16, 0x99130120 }, /* internal speaker */
> +			{ }
> +		}
> +	},
>  };
>  
>  static const struct snd_pci_quirk alc262_fixup_tbl[] = {
> +	SND_PCI_QUIRK(0x103c, 0x170b, "HP Z200", PINFIX_HP_Z200),
>  	SND_PCI_QUIRK(0x1734, 0x1147, "FSC Celsius H270", PINFIX_FSC_H270),
>  	{}
>  };
> @@ -12731,6 +12740,8 @@ static const struct snd_pci_quirk alc262_cfg_tbl[] = {
>  			   ALC262_HP_BPC),
>  	SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1500, "HP z series",
>  			   ALC262_HP_BPC),
> +	SND_PCI_QUIRK(0x103c, 0x170b, "HP Z200",
> +			   ALC262_AUTO),
>  	SND_PCI_QUIRK_MASK(0x103c, 0xff00, 0x1700, "HP xw series",
>  			   ALC262_HP_BPC),
>  	SND_PCI_QUIRK(0x103c, 0x2800, "HP D7000", ALC262_HP_BPC_D7000_WL),
> -- 
> 1.7.4.1
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation
  2011-06-23  7:28 ` Takashi Iwai
@ 2011-06-23  8:28   ` David Henningsson
  2011-06-23 12:15     ` Takashi Iwai
  0 siblings, 1 reply; 5+ messages in thread
From: David Henningsson @ 2011-06-23  8:28 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: ALSA Development Mailing List

On 2011-06-23 09:28, Takashi Iwai wrote:
> At Wed, 22 Jun 2011 22:31:07 +0200,
> David Henningsson wrote:
>>
>> BIOS lists the internal speaker as an internal line-out. Change to
>> internal speaker + model=auto for better auto-mute capabilities.
>>
>> Relevant alsa-info is here:
>> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/754964/+attachment/2002204/+files/alsa-info.txt
>
> Thanks, applied now.
>
> 3.0 should work even without this patch since line-out can be
> auto-muted now, but it's still more correct to show the speaker as
> speaker (e.g. the right mixer name).  So, it's still good to have
> this kind of fix.

I think it was not muted at all, because it is a mono pin, so it does 
not show up in the autocfg->line_out_pins array. (Perhaps this should 
change in the auto-mute behaviour?)

Also, the user wanted the real line out to mute the speaker.

-- 
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation
  2011-06-23  8:28   ` David Henningsson
@ 2011-06-23 12:15     ` Takashi Iwai
  2011-06-24  9:10       ` Takashi Iwai
  0 siblings, 1 reply; 5+ messages in thread
From: Takashi Iwai @ 2011-06-23 12:15 UTC (permalink / raw)
  To: David Henningsson; +Cc: ALSA Development Mailing List

At Thu, 23 Jun 2011 10:28:25 +0200,
David Henningsson wrote:
> 
> On 2011-06-23 09:28, Takashi Iwai wrote:
> > At Wed, 22 Jun 2011 22:31:07 +0200,
> > David Henningsson wrote:
> >>
> >> BIOS lists the internal speaker as an internal line-out. Change to
> >> internal speaker + model=auto for better auto-mute capabilities.
> >>
> >> Relevant alsa-info is here:
> >> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/754964/+attachment/2002204/+files/alsa-info.txt
> >
> > Thanks, applied now.
> >
> > 3.0 should work even without this patch since line-out can be
> > auto-muted now, but it's still more correct to show the speaker as
> > speaker (e.g. the right mixer name).  So, it's still good to have
> > this kind of fix.
> 
> I think it was not muted at all, because it is a mono pin, so it does 
> not show up in the autocfg->line_out_pins array. (Perhaps this should 
> change in the auto-mute behaviour?)

Ah, right, these have the real line-out, too.
(The auto-mute can handle mono as well, but before that, the mono pin
 has to be parsed properly :)

> Also, the user wanted the real line out to mute the speaker.

Yes, so the patch does the right thing.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation
  2011-06-23 12:15     ` Takashi Iwai
@ 2011-06-24  9:10       ` Takashi Iwai
  0 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2011-06-24  9:10 UTC (permalink / raw)
  To: David Henningsson; +Cc: ALSA Development Mailing List

At Thu, 23 Jun 2011 14:15:11 +0200,
Takashi Iwai wrote:
> 
> At Thu, 23 Jun 2011 10:28:25 +0200,
> David Henningsson wrote:
> > 
> > On 2011-06-23 09:28, Takashi Iwai wrote:
> > > At Wed, 22 Jun 2011 22:31:07 +0200,
> > > David Henningsson wrote:
> > >>
> > >> BIOS lists the internal speaker as an internal line-out. Change to
> > >> internal speaker + model=auto for better auto-mute capabilities.
> > >>
> > >> Relevant alsa-info is here:
> > >> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/754964/+attachment/2002204/+files/alsa-info.txt
> > >
> > > Thanks, applied now.
> > >
> > > 3.0 should work even without this patch since line-out can be
> > > auto-muted now, but it's still more correct to show the speaker as
> > > speaker (e.g. the right mixer name).  So, it's still good to have
> > > this kind of fix.
> > 
> > I think it was not muted at all, because it is a mono pin, so it does 
> > not show up in the autocfg->line_out_pins array. (Perhaps this should 
> > change in the auto-mute behaviour?)
> 
> Ah, right, these have the real line-out, too.
> (The auto-mute can handle mono as well, but before that, the mono pin
>  has to be parsed properly :)

Looking further, another fix is to change the core-parser code like
below.  Since this doesn't conflict with the pinfix you made, I'll
keep your fix for 3.0 but queue up for 3.1 kernel (in topic/hda
branch).


Takashi

---
Subject: [PATCH] ALSA: hda - Add a workaround for invalid line-out setups

Some BIOS set up the pin config wrongly as line-out although it's
supposed to be a speaker out.  In most cases, though, we can judge
the validity by checking the connection type -- when it's FIXED,
mostly it's an invalid line-out but a speaker.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/hda_codec.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index a2388fc..654dc89 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -4590,7 +4590,7 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
 		unsigned int wid_caps = get_wcaps(codec, nid);
 		unsigned int wid_type = get_wcaps_type(wid_caps);
 		unsigned int def_conf;
-		short assoc, loc;
+		short assoc, loc, conn, dev;
 
 		/* read all default configuration for pin complex */
 		if (wid_type != AC_WID_PIN)
@@ -4600,10 +4600,19 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
 			continue;
 
 		def_conf = snd_hda_codec_get_pincfg(codec, nid);
-		if (get_defcfg_connect(def_conf) == AC_JACK_PORT_NONE)
+		conn = get_defcfg_connect(def_conf);
+		if (conn == AC_JACK_PORT_NONE)
 			continue;
 		loc = get_defcfg_location(def_conf);
-		switch (get_defcfg_device(def_conf)) {
+		dev = get_defcfg_device(def_conf);
+
+		/* workaround for buggy BIOS setups */
+		if (dev == AC_JACK_LINE_OUT) {
+			if (conn == AC_JACK_PORT_FIXED)
+				dev = AC_JACK_SPEAKER;
+		}
+
+		switch (dev) {
 		case AC_JACK_LINE_OUT:
 			seq = get_defcfg_sequence(def_conf);
 			assoc = get_defcfg_association(def_conf);
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-06-24  9:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-22 20:31 [PATCH] ALSA: HDA: Pinfix quirk for HP Z200 Workstation David Henningsson
2011-06-23  7:28 ` Takashi Iwai
2011-06-23  8:28   ` David Henningsson
2011-06-23 12:15     ` Takashi Iwai
2011-06-24  9:10       ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.