[v2] ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T460s
diff mbox

Message ID 1460366498-14101-1-git-send-email-sven@narfation.org
State New
Headers show

Commit Message

Sven Eckelmann April 11, 2016, 9:21 a.m. UTC
The Lenovo Thinkpad T460s requires the alc_fixup_tpt440_dock as well in
order to get working sound output on the docking stations headphone jack.

Patch tested on a Thinkpad T460s (20F9CT01WW) using a ThinkPad Ultradock
on kernel 4.4.6.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Tested-by: Simon Wunderlich <sw@simonwunderlich.de>
---
v2:
 - rebased on current master

 sound/pci/hda/patch_realtek.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

Comments

Takashi Iwai April 11, 2016, 2:05 p.m. UTC | #1
On Mon, 11 Apr 2016 11:21:38 +0200,
Sven Eckelmann wrote:
> 
> The Lenovo Thinkpad T460s requires the alc_fixup_tpt440_dock as well in
> order to get working sound output on the docking stations headphone jack.
> 
> Patch tested on a Thinkpad T460s (20F9CT01WW) using a ThinkPad Ultradock
> on kernel 4.4.6.
> 
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> Tested-by: Simon Wunderlich <sw@simonwunderlich.de>
> ---
> v2:
>  - rebased on current master
> 
>  sound/pci/hda/patch_realtek.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index fefe83f..36d371c 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -4760,6 +4760,8 @@ enum {
>  	ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
>  	ALC280_FIXUP_HP_HEADSET_MIC,
>  	ALC221_FIXUP_HP_FRONT_MIC,
> +	ALC292_FIXUP_TPT460_DOCK,
> +	ALC292_FIXUP_TPT460,
>  };
>  
>  static const struct hda_fixup alc269_fixups[] = {
> @@ -5409,6 +5411,18 @@ static const struct hda_fixup alc269_fixups[] = {
>  			{ }
>  		},
>  	},
> +	[ALC292_FIXUP_TPT460_DOCK] = {
> +		.type = HDA_FIXUP_FUNC,
> +		.v.func = alc_fixup_tpt440_dock,
> +		.chained = true,
> +		.chain_id = ALC269_FIXUP_THINKPAD_ACPI
> +	},
> +	[ALC292_FIXUP_TPT460] = {
> +		.type = HDA_FIXUP_FUNC,
> +		.v.func = alc_fixup_disable_aamix,
> +		.chained = true,
> +		.chain_id = ALC292_FIXUP_TPT460_DOCK,
> +	},

We don't need to add two entries but just one, something like below.

	[ALC292_FIXUP_TPT460] = {
		.type = HDA_FIXUP_FUNC,
		.v.func = alc_fixup_tpt440_dock,
		.chained = true,
		.chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE,
	},

Does it work for you?


thanks,

Takashi
Sven Eckelmann April 11, 2016, 2:43 p.m. UTC | #2
On Monday 11 April 2016 16:05:49 Takashi Iwai wrote:
> On Mon, 11 Apr 2016 11:21:38 +0200,
> Sven Eckelmann wrote:
> > 
> > The Lenovo Thinkpad T460s requires the alc_fixup_tpt440_dock as well in
> > order to get working sound output on the docking stations headphone jack.
> > 
> > Patch tested on a Thinkpad T460s (20F9CT01WW) using a ThinkPad Ultradock
> > on kernel 4.4.6.
> > 
> > Signed-off-by: Sven Eckelmann <sven@narfation.org>
> > Tested-by: Simon Wunderlich <sw@simonwunderlich.de>
> > ---
> > v2:
> >  - rebased on current master
> > 
> >  sound/pci/hda/patch_realtek.c | 18 +++++++++++++++++-
> >  1 file changed, 17 insertions(+), 1 deletion(-)
> > 
> > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> > index fefe83f..36d371c 100644
> > --- a/sound/pci/hda/patch_realtek.c
> > +++ b/sound/pci/hda/patch_realtek.c
> > @@ -4760,6 +4760,8 @@ enum {
> >  	ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
> >  	ALC280_FIXUP_HP_HEADSET_MIC,
> >  	ALC221_FIXUP_HP_FRONT_MIC,
> > +	ALC292_FIXUP_TPT460_DOCK,
> > +	ALC292_FIXUP_TPT460,
> >  };
> >  
> >  static const struct hda_fixup alc269_fixups[] = {
> > @@ -5409,6 +5411,18 @@ static const struct hda_fixup alc269_fixups[] = {
> >  			{ }
> >  		},
> >  	},
> > +	[ALC292_FIXUP_TPT460_DOCK] = {
> > +		.type = HDA_FIXUP_FUNC,
> > +		.v.func = alc_fixup_tpt440_dock,
> > +		.chained = true,
> > +		.chain_id = ALC269_FIXUP_THINKPAD_ACPI
> > +	},
> > +	[ALC292_FIXUP_TPT460] = {
> > +		.type = HDA_FIXUP_FUNC,
> > +		.v.func = alc_fixup_disable_aamix,
> > +		.chained = true,
> > +		.chain_id = ALC292_FIXUP_TPT460_DOCK,
> > +	},
> 
> We don't need to add two entries but just one, something like below.
> 
> 	[ALC292_FIXUP_TPT460] = {
> 		.type = HDA_FIXUP_FUNC,
> 		.v.func = alc_fixup_tpt440_dock,
> 		.chained = true,
> 		.chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE,
> 	},

Just wanted to keep it consistent with the TPT440 entries.

Kind regards,
	Sven
Takashi Iwai April 11, 2016, 2:48 p.m. UTC | #3
On Mon, 11 Apr 2016 16:43:38 +0200,
Sven Eckelmann wrote:
> 
> On Monday 11 April 2016 16:05:49 Takashi Iwai wrote:
> > On Mon, 11 Apr 2016 11:21:38 +0200,
> > Sven Eckelmann wrote:
> > > 
> > > The Lenovo Thinkpad T460s requires the alc_fixup_tpt440_dock as well in
> > > order to get working sound output on the docking stations headphone jack.
> > > 
> > > Patch tested on a Thinkpad T460s (20F9CT01WW) using a ThinkPad Ultradock
> > > on kernel 4.4.6.
> > > 
> > > Signed-off-by: Sven Eckelmann <sven@narfation.org>
> > > Tested-by: Simon Wunderlich <sw@simonwunderlich.de>
> > > ---
> > > v2:
> > >  - rebased on current master
> > > 
> > >  sound/pci/hda/patch_realtek.c | 18 +++++++++++++++++-
> > >  1 file changed, 17 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> > > index fefe83f..36d371c 100644
> > > --- a/sound/pci/hda/patch_realtek.c
> > > +++ b/sound/pci/hda/patch_realtek.c
> > > @@ -4760,6 +4760,8 @@ enum {
> > >  	ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
> > >  	ALC280_FIXUP_HP_HEADSET_MIC,
> > >  	ALC221_FIXUP_HP_FRONT_MIC,
> > > +	ALC292_FIXUP_TPT460_DOCK,
> > > +	ALC292_FIXUP_TPT460,
> > >  };
> > >  
> > >  static const struct hda_fixup alc269_fixups[] = {
> > > @@ -5409,6 +5411,18 @@ static const struct hda_fixup alc269_fixups[] = {
> > >  			{ }
> > >  		},
> > >  	},
> > > +	[ALC292_FIXUP_TPT460_DOCK] = {
> > > +		.type = HDA_FIXUP_FUNC,
> > > +		.v.func = alc_fixup_tpt440_dock,
> > > +		.chained = true,
> > > +		.chain_id = ALC269_FIXUP_THINKPAD_ACPI
> > > +	},
> > > +	[ALC292_FIXUP_TPT460] = {
> > > +		.type = HDA_FIXUP_FUNC,
> > > +		.v.func = alc_fixup_disable_aamix,
> > > +		.chained = true,
> > > +		.chain_id = ALC292_FIXUP_TPT460_DOCK,
> > > +	},
> > 
> > We don't need to add two entries but just one, something like below.
> > 
> > 	[ALC292_FIXUP_TPT460] = {
> > 		.type = HDA_FIXUP_FUNC,
> > 		.v.func = alc_fixup_tpt440_dock,
> > 		.chained = true,
> > 		.chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE,
> > 	},
> 
> Just wanted to keep it consistent with the TPT440 entries.

Oh, you don't have to inherit the messes from there :)
I'd rather like to keep the list shorter.


Takashi

Patch
diff mbox

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index fefe83f..36d371c 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4760,6 +4760,8 @@  enum {
 	ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
 	ALC280_FIXUP_HP_HEADSET_MIC,
 	ALC221_FIXUP_HP_FRONT_MIC,
+	ALC292_FIXUP_TPT460_DOCK,
+	ALC292_FIXUP_TPT460,
 };
 
 static const struct hda_fixup alc269_fixups[] = {
@@ -5409,6 +5411,18 @@  static const struct hda_fixup alc269_fixups[] = {
 			{ }
 		},
 	},
+	[ALC292_FIXUP_TPT460_DOCK] = {
+		.type = HDA_FIXUP_FUNC,
+		.v.func = alc_fixup_tpt440_dock,
+		.chained = true,
+		.chain_id = ALC269_FIXUP_THINKPAD_ACPI
+	},
+	[ALC292_FIXUP_TPT460] = {
+		.type = HDA_FIXUP_FUNC,
+		.v.func = alc_fixup_disable_aamix,
+		.chained = true,
+		.chain_id = ALC292_FIXUP_TPT460_DOCK,
+	},
 };
 
 static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -5563,7 +5577,7 @@  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x17aa, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
-	SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE),
+	SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460),
 	SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
 	SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
 	SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
@@ -5658,6 +5672,8 @@  static const struct hda_model_fixup alc269_fixup_models[] = {
 	{.id = ALC283_FIXUP_SENSE_COMBO_JACK, .name = "alc283-sense-combo"},
 	{.id = ALC292_FIXUP_TPT440_DOCK, .name = "tpt440-dock"},
 	{.id = ALC292_FIXUP_TPT440, .name = "tpt440"},
+	{.id = ALC292_FIXUP_TPT460_DOCK, .name = "tpt460-dock"},
+	{.id = ALC292_FIXUP_TPT460, .name = "tpt460"},
 	{}
 };
 #define ALC225_STANDARD_PINS \