Commit 1d05ad79e1ddbe1f8fbe23f09d14c35b1ac19bce

Authored by Huacai Chen
Committed by Greg Kroah-Hartman
1 parent 864468a7a6

ALSA: hda/realtek: Add alc269/alc662 pin-tables for Loongson-3 laptops

commit f1ec5be17b9aafbc5f573da023850566b43d8e5e upstream.

There are several Loongson-3 based laptops produced by CZC or Lemote,
they use alc269/alc662 codecs and need specific pin-tables, this patch
add their pin-tables.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/1596360400-32425-1-git-send-email-chenhc@lemote.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Showing 1 changed file with 114 additions and 0 deletions Side-by-side Diff

sound/pci/hda/patch_realtek.c
... ... @@ -6131,6 +6131,11 @@
6131 6131 ALC289_FIXUP_ASUS_GA502,
6132 6132 ALC256_FIXUP_ACER_MIC_NO_PRESENCE,
6133 6133 ALC285_FIXUP_HP_GPIO_AMP_INIT,
  6134 + ALC269_FIXUP_CZC_B20,
  6135 + ALC269_FIXUP_CZC_TMI,
  6136 + ALC269_FIXUP_CZC_L101,
  6137 + ALC269_FIXUP_LEMOTE_A1802,
  6138 + ALC269_FIXUP_LEMOTE_A190X,
6134 6139 };
6135 6140  
6136 6141 static const struct hda_fixup alc269_fixups[] = {
... ... @@ -7369,6 +7374,89 @@
7369 7374 .chained = true,
7370 7375 .chain_id = ALC285_FIXUP_HP_GPIO_LED
7371 7376 },
  7377 + [ALC269_FIXUP_CZC_B20] = {
  7378 + .type = HDA_FIXUP_PINS,
  7379 + .v.pins = (const struct hda_pintbl[]) {
  7380 + { 0x12, 0x411111f0 },
  7381 + { 0x14, 0x90170110 }, /* speaker */
  7382 + { 0x15, 0x032f1020 }, /* HP out */
  7383 + { 0x17, 0x411111f0 },
  7384 + { 0x18, 0x03ab1040 }, /* mic */
  7385 + { 0x19, 0xb7a7013f },
  7386 + { 0x1a, 0x0181305f },
  7387 + { 0x1b, 0x411111f0 },
  7388 + { 0x1d, 0x411111f0 },
  7389 + { 0x1e, 0x411111f0 },
  7390 + { }
  7391 + },
  7392 + .chain_id = ALC269_FIXUP_DMIC,
  7393 + },
  7394 + [ALC269_FIXUP_CZC_TMI] = {
  7395 + .type = HDA_FIXUP_PINS,
  7396 + .v.pins = (const struct hda_pintbl[]) {
  7397 + { 0x12, 0x4000c000 },
  7398 + { 0x14, 0x90170110 }, /* speaker */
  7399 + { 0x15, 0x0421401f }, /* HP out */
  7400 + { 0x17, 0x411111f0 },
  7401 + { 0x18, 0x04a19020 }, /* mic */
  7402 + { 0x19, 0x411111f0 },
  7403 + { 0x1a, 0x411111f0 },
  7404 + { 0x1b, 0x411111f0 },
  7405 + { 0x1d, 0x40448505 },
  7406 + { 0x1e, 0x411111f0 },
  7407 + { 0x20, 0x8000ffff },
  7408 + { }
  7409 + },
  7410 + .chain_id = ALC269_FIXUP_DMIC,
  7411 + },
  7412 + [ALC269_FIXUP_CZC_L101] = {
  7413 + .type = HDA_FIXUP_PINS,
  7414 + .v.pins = (const struct hda_pintbl[]) {
  7415 + { 0x12, 0x40000000 },
  7416 + { 0x14, 0x01014010 }, /* speaker */
  7417 + { 0x15, 0x411111f0 }, /* HP out */
  7418 + { 0x16, 0x411111f0 },
  7419 + { 0x18, 0x01a19020 }, /* mic */
  7420 + { 0x19, 0x02a19021 },
  7421 + { 0x1a, 0x0181302f },
  7422 + { 0x1b, 0x0221401f },
  7423 + { 0x1c, 0x411111f0 },
  7424 + { 0x1d, 0x4044c601 },
  7425 + { 0x1e, 0x411111f0 },
  7426 + { }
  7427 + },
  7428 + .chain_id = ALC269_FIXUP_DMIC,
  7429 + },
  7430 + [ALC269_FIXUP_LEMOTE_A1802] = {
  7431 + .type = HDA_FIXUP_PINS,
  7432 + .v.pins = (const struct hda_pintbl[]) {
  7433 + { 0x12, 0x40000000 },
  7434 + { 0x14, 0x90170110 }, /* speaker */
  7435 + { 0x17, 0x411111f0 },
  7436 + { 0x18, 0x03a19040 }, /* mic1 */
  7437 + { 0x19, 0x90a70130 }, /* mic2 */
  7438 + { 0x1a, 0x411111f0 },
  7439 + { 0x1b, 0x411111f0 },
  7440 + { 0x1d, 0x40489d2d },
  7441 + { 0x1e, 0x411111f0 },
  7442 + { 0x20, 0x0003ffff },
  7443 + { 0x21, 0x03214020 },
  7444 + { }
  7445 + },
  7446 + .chain_id = ALC269_FIXUP_DMIC,
  7447 + },
  7448 + [ALC269_FIXUP_LEMOTE_A190X] = {
  7449 + .type = HDA_FIXUP_PINS,
  7450 + .v.pins = (const struct hda_pintbl[]) {
  7451 + { 0x14, 0x99130110 }, /* speaker */
  7452 + { 0x15, 0x0121401f }, /* HP out */
  7453 + { 0x18, 0x01a19c20 }, /* rear mic */
  7454 + { 0x19, 0x99a3092f }, /* front mic */
  7455 + { 0x1b, 0x0201401f }, /* front lineout */
  7456 + { }
  7457 + },
  7458 + .chain_id = ALC269_FIXUP_DMIC,
  7459 + },
7372 7460 };
7373 7461  
7374 7462 static const struct snd_pci_quirk alc269_fixup_tbl[] = {
7375 7463  
... ... @@ -7658,9 +7746,14 @@
7658 7746 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
7659 7747 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
7660 7748 SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),
  7749 + SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20),
  7750 + SND_PCI_QUIRK(0x1b35, 0x1236, "CZC TMI", ALC269_FIXUP_CZC_TMI),
  7751 + SND_PCI_QUIRK(0x1b35, 0x1237, "CZC L101", ALC269_FIXUP_CZC_L101),
7661 7752 SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */
7662 7753 SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC),
7663 7754 SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE),
  7755 + SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802),
  7756 + SND_PCI_QUIRK(0x1c06, 0x2015, "Lemote A190X", ALC269_FIXUP_LEMOTE_A190X),
7664 7757  
7665 7758 #if 0
7666 7759 /* Below is a quirk table taken from the old code.
... ... @@ -8945,6 +9038,7 @@
8945 9038 ALC662_FIXUP_LED_GPIO1,
8946 9039 ALC662_FIXUP_IDEAPAD,
8947 9040 ALC272_FIXUP_MARIO,
  9041 + ALC662_FIXUP_CZC_ET26,
8948 9042 ALC662_FIXUP_CZC_P10T,
8949 9043 ALC662_FIXUP_SKU_IGNORE,
8950 9044 ALC662_FIXUP_HP_RP5800,
... ... @@ -9014,6 +9108,25 @@
9014 9108 .type = HDA_FIXUP_FUNC,
9015 9109 .v.func = alc272_fixup_mario,
9016 9110 },
  9111 + [ALC662_FIXUP_CZC_ET26] = {
  9112 + .type = HDA_FIXUP_PINS,
  9113 + .v.pins = (const struct hda_pintbl[]) {
  9114 + {0x12, 0x403cc000},
  9115 + {0x14, 0x90170110}, /* speaker */
  9116 + {0x15, 0x411111f0},
  9117 + {0x16, 0x411111f0},
  9118 + {0x18, 0x01a19030}, /* mic */
  9119 + {0x19, 0x90a7013f}, /* int-mic */
  9120 + {0x1a, 0x01014020},
  9121 + {0x1b, 0x0121401f},
  9122 + {0x1c, 0x411111f0},
  9123 + {0x1d, 0x411111f0},
  9124 + {0x1e, 0x40478e35},
  9125 + {}
  9126 + },
  9127 + .chained = true,
  9128 + .chain_id = ALC662_FIXUP_SKU_IGNORE
  9129 + },
9017 9130 [ALC662_FIXUP_CZC_P10T] = {
9018 9131 .type = HDA_FIXUP_VERBS,
9019 9132 .v.verbs = (const struct hda_verb[]) {
... ... @@ -9397,6 +9510,7 @@
9397 9510 SND_PCI_QUIRK(0x1849, 0x5892, "ASRock B150M", ALC892_FIXUP_ASROCK_MOBO),
9398 9511 SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
9399 9512 SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON),
  9513 + SND_PCI_QUIRK(0x1b35, 0x1234, "CZC ET26", ALC662_FIXUP_CZC_ET26),
9400 9514 SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
9401 9515 SND_PCI_QUIRK(0x1025, 0x0566, "Acer Aspire Ethos 8951G", ALC669_FIXUP_ACER_ASPIRE_ETHOS),
9402 9516