[ALC668] : Asus N751JK - Incorrect default pin assignment for external base speaker and external microphone not working
diff mbox

Message ID CAN8cciZ6GAWoad8OMzJOFzUwAQkjJAUS86NV3EbJNpvC3WhPow@mail.gmail.com
State New
Headers show

Commit Message

Raymond Yau July 4, 2015, 5:56 a.m. UTC
2015-7-4 ??5:03? "Arthur Borsboom" <arthurborsboom@gmail.com>???
>
> The jack test gives
>
> Without external speaker plugged in:
>
> Pin 0x12 (Internal Mic): present = No
> Pin 0x14 (Internal Speaker): present = No
> Pin 0x15 (Black Headphone, Left side): present = No
> Pin 0x16 (Not connected): present = No
> Pin 0x18 (Not connected): present = No
> Pin 0x19 (Not connected): present = No
> Pin 0x1a (Not connected): present = No
> Pin 0x1b (Not connected): present = No
> Pin 0x1d (Not connected): present = No
> Pin 0x1e (Not connected): present = No
> Pin 0x1f (Not connected): present = No
>
> With external speaker plugged in:
>
> Pin 0x12 (Internal Mic): present = No
> Pin 0x14 (Internal Speaker): present = No
> Pin 0x15 (Black Headphone, Left side): present = No
> Pin 0x16 (Not connected): present = No
> Pin 0x18 (Not connected): present = No
> Pin 0x19 (Not connected): present = No
> Pin 0x1a (Not connected): present = Yes
> Pin 0x1b (Not connected): present = No
> Pin 0x1d (Not connected): present = No
> Pin 0x1e (Not connected): present = No
> Pin 0x1f (Not connected): present = No
 };

 static const struct snd_pci_quirk alc662_fixup_tbl[] = {
@@ -6441,6 +6460,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[]
= {
     SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800),
     SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_BASS_1A),
     SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ",
ALC662_FIXUP_BASS_MODE4_CHMAP),
+    SND_PCI_QUIRK(0x1043, 0x17bd, "Asus N751JK", ALC668_FIXUP_ASUS_N751JK),
     SND_PCI_QUIRK(0x1043, 0x15a7, "ASUS UX51VZH", ALC662_FIXUP_BASS_16),
     SND_PCI_QUIRK(0x1043, 0x1b73, "ASUS N55SF", ALC662_FIXUP_BASS_16),
     SND_PCI_QUIRK(0x1043, 0x1bf3, "ASUS N76VZ",
ALC662_FIXUP_BASS_MODE4_CHMAP),

Comments

Arthur Borsboom July 4, 2015, 7:31 a.m. UTC | #1
I have tested the patch by manually adding the lines of code into mainline
kernel 4.1.1.

The base speakers works.
The headset microphone works.
The headphone, headset microphone and microphone jack detection seems to
work in PulseAudio (showing by plugged or unplugged status).
However it does not automatically switch the (un)plugged microphone.
My guess is that it does not know if it should use the headset microphone
or the microphone (instead of the default internal microphone).

Do you think there is a way to automate the forward and backward switching
between the internal microphone and headset microphone?

On 4 July 2015 at 07:56, Raymond Yau <superquad.vortex2@gmail.com> wrote:

>
> 2015-7-4 ??5:03? "Arthur Borsboom" <arthurborsboom@gmail.com>???
> >
> > The jack test gives
> >
> > Without external speaker plugged in:
> >
> > Pin 0x12 (Internal Mic): present = No
> > Pin 0x14 (Internal Speaker): present = No
> > Pin 0x15 (Black Headphone, Left side): present = No
> > Pin 0x16 (Not connected): present = No
> > Pin 0x18 (Not connected): present = No
> > Pin 0x19 (Not connected): present = No
> > Pin 0x1a (Not connected): present = No
> > Pin 0x1b (Not connected): present = No
> > Pin 0x1d (Not connected): present = No
> > Pin 0x1e (Not connected): present = No
> > Pin 0x1f (Not connected): present = No
> >
> > With external speaker plugged in:
> >
> > Pin 0x12 (Internal Mic): present = No
> > Pin 0x14 (Internal Speaker): present = No
> > Pin 0x15 (Black Headphone, Left side): present = No
> > Pin 0x16 (Not connected): present = No
> > Pin 0x18 (Not connected): present = No
> > Pin 0x19 (Not connected): present = No
> > Pin 0x1a (Not connected): present = Yes
> > Pin 0x1b (Not connected): present = No
> > Pin 0x1d (Not connected): present = No
> > Pin 0x1e (Not connected): present = No
> > Pin 0x1f (Not connected): present = No
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 8e02cdf..174c5e5 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -6179,6 +6179,8 @@ enum {
>      ALC668_FIXUP_AUTO_MUTE,
>      ALC668_FIXUP_DELL_DISABLE_AAMIX,
>      ALC668_FIXUP_DELL_XPS13,
> +    ALC668_FIXUP_BASS_CHMAP,
> +    ALC668_FIXUP_ASUS_N751JK,
>  };
>
>  static const struct hda_fixup alc662_fixups[] = {
> @@ -6419,6 +6421,23 @@ static const struct hda_fixup alc662_fixups[] = {
>          .type = HDA_FIXUP_FUNC,
>          .v.func = alc_fixup_bass_chmap,
>      },
> +    [ALC668_FIXUP_BASS_CHMAP] = {
> +        .type = HDA_FIXUP_FUNC,
> +        .v.func = alc_fixup_bass_chmap,
> +        .chained = true,
> +        .chain_id = ALC668_FIXUP_HEADSET_MODE
> +    },
> +    [ALC668_FIXUP_ASUS_N751JK] = {
> +        .type = HDA_FIXUP_PINS,
> +        .v.pins = (const struct hda_pintbl[]) {
> +            { 0x19, 0x03a1913d }, /* use as headphone mic, without its
> own jack detect */
> +            { 0x1a, 0x04110011 }, /* bass speaker at Ext Right with jack
> detect */
> +            { 0x1b, 0x03a1113c }, /* use as headset mic, without its own
> jack detect */
> +            {}
> +        },
> +        .chained = true,
> +        .chain_id = ALC668_FIXUP_BASS_CHMAP,
> +    },
>  };
>
>  static const struct snd_pci_quirk alc662_fixup_tbl[] = {
> @@ -6441,6 +6460,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[]
> = {
>      SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800),
>      SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_BASS_1A),
>      SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ",
> ALC662_FIXUP_BASS_MODE4_CHMAP),
> +    SND_PCI_QUIRK(0x1043, 0x17bd, "Asus N751JK",
> ALC668_FIXUP_ASUS_N751JK),
>      SND_PCI_QUIRK(0x1043, 0x15a7, "ASUS UX51VZH", ALC662_FIXUP_BASS_16),
>      SND_PCI_QUIRK(0x1043, 0x1b73, "ASUS N55SF", ALC662_FIXUP_BASS_16),
>      SND_PCI_QUIRK(0x1043, 0x1bf3, "ASUS N76VZ",
> ALC662_FIXUP_BASS_MODE4_CHMAP),
>
>

Patch
diff mbox

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 8e02cdf..174c5e5 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6179,6 +6179,8 @@  enum {
     ALC668_FIXUP_AUTO_MUTE,
     ALC668_FIXUP_DELL_DISABLE_AAMIX,
     ALC668_FIXUP_DELL_XPS13,
+    ALC668_FIXUP_BASS_CHMAP,
+    ALC668_FIXUP_ASUS_N751JK,
 };

 static const struct hda_fixup alc662_fixups[] = {
@@ -6419,6 +6421,23 @@  static const struct hda_fixup alc662_fixups[] = {
         .type = HDA_FIXUP_FUNC,
         .v.func = alc_fixup_bass_chmap,
     },
+    [ALC668_FIXUP_BASS_CHMAP] = {
+        .type = HDA_FIXUP_FUNC,
+        .v.func = alc_fixup_bass_chmap,
+        .chained = true,
+        .chain_id = ALC668_FIXUP_HEADSET_MODE
+    },
+    [ALC668_FIXUP_ASUS_N751JK] = {
+        .type = HDA_FIXUP_PINS,
+        .v.pins = (const struct hda_pintbl[]) {
+            { 0x19, 0x03a1913d }, /* use as headphone mic, without its own
jack detect */
+            { 0x1a, 0x04110011 }, /* bass speaker at Ext Right with jack
detect */
+            { 0x1b, 0x03a1113c }, /* use as headset mic, without its own
jack detect */
+            {}
+        },
+        .chained = true,
+        .chain_id = ALC668_FIXUP_BASS_CHMAP,
+    },