At Fri, 20 Dec 2013 16:08:13 +0100,
David Henningsson wrote:
>
> In this case, there are two DACs, and DAC 0x03 is mono. In order
> to make headphones and front speaker use DAC 0x02, and subwoofer use
> DAC 0x03, we artificially cut the connection from nodes 0x14 and 0x15
> to node 0x03, so they can only use DAC 0x02.
>
> In addition, the 5460 and 5470 differs in the sense that 5470 also
> needs a headset mic patch, whereas 5460 has individual detection for
> headphone and headset mic.
>
> BugLink: https://bugs.launchpad.net/bugs/1211920
> Signed-off-by: David Henningsson <email address hidden>
> ---
>
> I'm adding Kailang to cc on this one; hopefully he'll scream if this patch
> is doing anything dangerous, such as if there's a risk to blow up the subwoofer.
OK, I applied it now to for-next branch. Let me know if this is to be
removed.
At Fri, 20 Dec 2013 16:08:13 +0100, /bugs.launchpad .net/bugs/ 1211920
David Henningsson wrote:
>
> In this case, there are two DACs, and DAC 0x03 is mono. In order
> to make headphones and front speaker use DAC 0x02, and subwoofer use
> DAC 0x03, we artificially cut the connection from nodes 0x14 and 0x15
> to node 0x03, so they can only use DAC 0x02.
>
> In addition, the 5460 and 5470 differs in the sense that 5470 also
> needs a headset mic patch, whereas 5460 has individual detection for
> headphone and headset mic.
>
> BugLink: https:/
> Signed-off-by: David Henningsson <email address hidden>
> ---
>
> I'm adding Kailang to cc on this one; hopefully he'll scream if this patch
> is doing anything dangerous, such as if there's a risk to blow up the subwoofer.
OK, I applied it now to for-next branch. Let me know if this is to be
removed.
thanks,
Takashi
> hda/patch_ realtek. c | 43 +++++++ +++++++ +++++++ +++++++ +++++++ ------ pci/hda/ patch_realtek. c b/sound/ pci/hda/ patch_realtek. c pci/hda/ patch_realtek. c pci/hda/ patch_realtek. c fixup_asus_ tx300(struct hda_codec *codec, fixup_mono_ speakers( struct hda_codec *codec, ACT_PRE_ PROBE) override_ wcaps(codec, 0x03, 0); ACT_PRE_ PROBE) { override_ conn_list( codec, 0x14, 1, conn1); override_ conn_list( codec, 0x15, 1, conn1); CONFIG_ THINKPAD_ ACPI) FIXUP_ASUS_ TX300, FIXUP_INT_ MIC, FIXUP_MONO_ SPEAKERS, FIXUP_MONO_ SPEAKERS_ HSJACK, FIXUP_SUBWOOFER , FIXUP_SUBWOOFER _HSJACK, FIXUP_THINKPAD_ ACPI, FIXUP_DELL1_ MIC_NO_ PRESENCE, FIXUP_HEADSET_ MODE, FIXUP_LIMIT_ INT_MIC_ BOOST FIXUP_SUBWOOFER _HSJACK] = { FIXUP_MONO_ SPEAKERS_ HSJACK, FIXUP_SUBWOOFER ] = { FIXUP_MONO_ SPEAKERS, FIXUP_MONO_ SPEAKERS] = { fixup_mono_ speakers, FIXUP_MONO_ SPEAKERS_ HSJACK] = { fixup_mono_ speakers, FIXUP_DELL3_ MIC_NO_ PRESENCE, QUIRK(0x1028, 0x05cb, "Dell", ALC269_ FIXUP_DELL2_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x05cc, "Dell X5 Precision", ALC269_ FIXUP_DELL2_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x05cd, "Dell X5 Precision", ALC269_ FIXUP_DELL2_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x05da, "Dell Vostro 5460", ALC290_ FIXUP_SUBWOOFER ), QUIRK(0x1028, 0x05de, "Dell", ALC269_ FIXUP_DELL2_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x05e0, "Dell", ALC269_ FIXUP_DELL2_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x05e9, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0610, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0613, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_ FIXUP_MONO_ SPEAKERS) , QUIRK(0x1028, 0x0615, "Dell Vostro 5470", ALC290_ FIXUP_SUBWOOFER _HSJACK) , QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_ FIXUP_SUBWOOFER _HSJACK) , QUIRK(0x1028, 0x061f, "Dell", ALC255_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0629, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_ FIXUP_MONO_ SPEAKERS) , QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_ FIXUP_MONO_ SPEAKERS_ HSJACK) , QUIRK(0x1028, 0x063e, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x063f, "Dell", ALC255_ FIXUP_DELL1_ MIC_NO_ PRESENCE) , QUIRK(0x1028, 0x0640, "Dell", ALC255_ FIXUP_DELL1_ MIC_NO_ PRESENCE) ,
> sound/pci/
> 1 file changed, 37 insertions(+), 6 deletions(-)
>
> diff --git a/sound/
> index dfe4080..16c0caa 100644
> --- a/sound/
> +++ b/sound/
> @@ -3770,10 +3770,14 @@ static void alc282_
> static void alc290_
> const struct hda_fixup *fix, int action)
> {
> - if (action == HDA_FIXUP_
> - /* Remove DAC node 0x03, as it seems to be
> - giving mono output */
> - snd_hda_
> + if (action == HDA_FIXUP_
> + /* DAC node 0x03 is giving mono output. We therefore want to
> + make sure 0x14 (front speaker) and 0x15 (headphones) use the
> + stereo DAC, while leaving 0x17 (bass speaker) for node 0x03. */
> + hda_nid_t conn1[2] = { 0x0c };
> + snd_hda_
> + snd_hda_
> + }
> }
>
> #if IS_ENABLED(
> @@ -3913,6 +3917,9 @@ enum {
> ALC282_
> ALC283_
> ALC290_
> + ALC290_
> + ALC290_
> + ALC290_
> ALC269_
> ALC255_
> ALC255_
> @@ -4235,9 +4242,31 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_
> },
> + [ALC290_
> + .type = HDA_FIXUP_PINS,
> + .v.pins = (const struct hda_pintbl[]) {
> + { 0x17, 0x90170112 }, /* subwoofer */
> + { }
> + },
> + .chained = true,
> + .chain_id = ALC290_
> + },
> + [ALC290_
> + .type = HDA_FIXUP_PINS,
> + .v.pins = (const struct hda_pintbl[]) {
> + { 0x17, 0x90170112 }, /* subwoofer */
> + { }
> + },
> + .chained = true,
> + .chain_id = ALC290_
> + },
> [ALC290_
> .type = HDA_FIXUP_FUNC,
> .v.func = alc290_
> + },
> + [ALC290_
> + .type = HDA_FIXUP_FUNC,
> + .v.func = alc290_
> .chained = true,
> .chain_id = ALC269_
> },
> @@ -4282,6 +4311,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_
> SND_PCI_
> SND_PCI_
> + SND_PCI_
> SND_PCI_
> SND_PCI_
> SND_PCI_
> @@ -4303,10 +4333,11 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_
> SND_PCI_
> SND_PCI_
> - SND_PCI_
> + SND_PCI_
> + SND_PCI_
> SND_PCI_
> SND_PCI_
> - SND_PCI_
> + SND_PCI_
> SND_PCI_
> SND_PCI_
> SND_PCI_
> --
> 1.7.9.5
>