No surround sound with ALC892 on B150M Pro4/D3 - fixed with hdajackretask
diff mbox

Message ID s5hpomv1fyv.wl-tiwai@suse.de
State New
Headers show

Commit Message

Takashi Iwai Oct. 20, 2016, 10:18 a.m. UTC
On Tue, 18 Oct 2016 00:50:49 +0200,
Benjamin Valentin wrote:
> 
> Hi,
> 
> I had a problem with mainboard insofar that it would let me select 5.1
> surround output in my sound settings, but sound would only play from
> the two front speakers, all other channels remained silent.
> 
> Some fiddeling with hdajackretask would generate a firmware where two
> pins that were previously used for rear and LFE are now disabled and
> two previously disabled pins are now configured as rear and LFE - I
> left the other pins to their default setting as much as I could.
> The generated firmware is attached below.
> 
> I'd like to help that this will work out of the box in the future, is
> there any further information I can provide you with?
> 
> The board is an Asrock B150M Pro4/D3 [1] with the ALC892 HDA Codec.
> alsa-info from before the procedure can be found at [2].
> 
> I'm running Linux 4.8/alsa 1.1.2 on Ubuntu 16.10
> 
> The generated /lib/firmware/hda-jack-retask.fw is
> 
> [codec]
> 0x10ec0892 0x18498892 0
> 
> [pincfg]
> 0x11 0x411111f0
> 0x12 0x411111f0
> 0x14 0x01014010
> 0x15 0x40f000f0
> 0x16 0x40f000f0
> 0x17 0x411111f0
> 0x18 0x01014011
> 0x19 0x02a19950
> 0x1a 0x01014012
> 0x1b 0x02214120
> 0x1c 0x411111f0
> 0x1d 0x4005e601
> 0x1e 0x01452130
> 0x1f 0x411111f0
> 
> [model]
> auto
> 
> regards,
> Benjamin 
> 
> [1] http://www.asrock.com/mb/Intel/B150M%20Pro4D3/?cat=Specifications
> [2] http://www.alsa-project.org/db/?f=8e7b0788cde8967048959d50a57b0bb214ddc7fb

Does the patch below work for you?


thanks,

Takashi

---
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: hda - Fix surround output pins for ASRock B150M mobo

ASRock B150M Pro4/D3 mobo with ALC892 codec doesn't seem to provide
proper pins for the surround outputs, hence we need to specify the
pincfgs manually with a couple of other corrections.

Reported-by: Benjamin Valentin <benpicco@googlemail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/hda/patch_realtek.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Benjamin Valentin Oct. 20, 2016, 9:47 p.m. UTC | #1
On Thu, 20 Oct 2016 12:18:16 +0200
Takashi Iwai <tiwai@suse.de> wrote:

> Does the patch below work for you?

Thank you, that works - there is only one typo ;)

> ---
>  sound/pci/hda/patch_realtek.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/sound/pci/hda/patch_realtek.c
> b/sound/pci/hda/patch_realtek.c index b582d57fe184..284315555229
> 100644 --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
>  static const struct hda_fixup alc662_fixups[] = {
> @@ -6901,6 +6902,16 @@ static const struct hda_fixup alc662_fixups[]
> = { { }
>  		}
>  	},
> +	[ALC892_FIXUP_ASROCK_MOBO] = {
> +		.type = HDA_FIXUP_PINS,
> +		.v.pins = (const struct hda_pintbl[]) {
> +			{ 0x15, 0x40f000f0 }, /* disabled */
> +			{ 0x16, 0x40f000f0 }, /* disabled */
> +			{ 0x18, 0x01014011 }, /* LO */
> +			{ 0x18, 0x01014012 }, /* LO */
			^^^^^^
should be
  +			{ 0x15, 0x40f000f0 }, /* disabled */
  +			{ 0x16, 0x40f000f0 }, /* disabled */
  +			{ 0x18, 0x01014011 }, /* LO */
  +			{ 0x1a, 0x01014012 }, /* LO */

otherwise there will be no center/lfe channel.

Thanks!
Benjamin
Takashi Iwai Oct. 21, 2016, 7:20 a.m. UTC | #2
On Thu, 20 Oct 2016 23:47:47 +0200,
Benjamin Valentin wrote:
> 
> On Thu, 20 Oct 2016 12:18:16 +0200
> Takashi Iwai <tiwai@suse.de> wrote:
> 
> > Does the patch below work for you?
> 
> Thank you, that works - there is only one typo ;)
> 
> > ---
> >  sound/pci/hda/patch_realtek.c | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> > 
> > diff --git a/sound/pci/hda/patch_realtek.c
> > b/sound/pci/hda/patch_realtek.c index b582d57fe184..284315555229
> > 100644 --- a/sound/pci/hda/patch_realtek.c
> > +++ b/sound/pci/hda/patch_realtek.c
> >  static const struct hda_fixup alc662_fixups[] = {
> > @@ -6901,6 +6902,16 @@ static const struct hda_fixup alc662_fixups[]
> > = { { }
> >  		}
> >  	},
> > +	[ALC892_FIXUP_ASROCK_MOBO] = {
> > +		.type = HDA_FIXUP_PINS,
> > +		.v.pins = (const struct hda_pintbl[]) {
> > +			{ 0x15, 0x40f000f0 }, /* disabled */
> > +			{ 0x16, 0x40f000f0 }, /* disabled */
> > +			{ 0x18, 0x01014011 }, /* LO */
> > +			{ 0x18, 0x01014012 }, /* LO */
> 			^^^^^^
> should be
>   +			{ 0x15, 0x40f000f0 }, /* disabled */
>   +			{ 0x16, 0x40f000f0 }, /* disabled */
>   +			{ 0x18, 0x01014011 }, /* LO */
>   +			{ 0x1a, 0x01014012 }, /* LO */
> 
> otherwise there will be no center/lfe channel.

Doh, yes, it should be 0x1a.
And did the patch work for you?


thanks,

Takashi
Benjamin Valentin Oct. 21, 2016, 8:02 a.m. UTC | #3
Am 21.10.2016 9:20 vorm. schrieb "Takashi Iwai" <tiwai@suse.de>:

> Doh, yes, it should be 0x1a.
> And did the patch work for you?

Yes it did.
Takashi Iwai Oct. 25, 2016, 8:15 a.m. UTC | #4
On Fri, 21 Oct 2016 10:02:47 +0200,
Benjamin Valentin wrote:
> 
> Am 21.10.2016 9:20 vorm. schrieb "Takashi Iwai" <tiwai@suse.de>:
> 
> > Doh, yes, it should be 0x1a.
> > And did the patch work for you?
> 
> Yes it did.

OK, I merged the patch now.


thanks,

Takashi

Patch
diff mbox

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index b582d57fe184..284315555229 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6625,6 +6625,7 @@  enum {
 	ALC891_FIXUP_HEADSET_MODE,
 	ALC891_FIXUP_DELL_MIC_NO_PRESENCE,
 	ALC662_FIXUP_ACER_VERITON,
+	ALC892_FIXUP_ASROCK_MOBO,
 };
 
 static const struct hda_fixup alc662_fixups[] = {
@@ -6901,6 +6902,16 @@  static const struct hda_fixup alc662_fixups[] = {
 			{ }
 		}
 	},
+	[ALC892_FIXUP_ASROCK_MOBO] = {
+		.type = HDA_FIXUP_PINS,
+		.v.pins = (const struct hda_pintbl[]) {
+			{ 0x15, 0x40f000f0 }, /* disabled */
+			{ 0x16, 0x40f000f0 }, /* disabled */
+			{ 0x18, 0x01014011 }, /* LO */
+			{ 0x18, 0x01014012 }, /* LO */
+			{ }
+		}
+	},
 };
 
 static const struct snd_pci_quirk alc662_fixup_tbl[] = {
@@ -6938,6 +6949,7 @@  static const struct snd_pci_quirk alc662_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
 	SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
 	SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
+	SND_PCI_QUIRK(0x1849, 0x5892, "ASRock B150M", ALC892_FIXUP_ASROCK_MOBO),
 	SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
 	SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON),
 	SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),