Skip to content

Commit 6581a04

Browse files
Stefan Bindingtiwai
authored andcommitted
ALSA: hda/cs8409: Support new Warlock MLK Variants
Added 15 new laptops, with 2 variants: Warlock MLK and Warlock MLK with Dual Mic The only difference between the variants, is the the dual Mic variants use a stereo DMIC. These variants do no use reduce volume (Full Scale Volume) Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220328115614.15761-5-vitalyr@opensource.cirrus.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent 342b6b6 commit 6581a04

3 files changed

Lines changed: 44 additions & 2 deletions

File tree

sound/pci/hda/patch_cs8409-tables.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,15 +515,32 @@ const struct snd_pci_quirk cs8409_fixup_tbl[] = {
515515
SND_PCI_QUIRK(0x1028, 0x0AF0, "Cyborg", CS8409_CYBORG),
516516
SND_PCI_QUIRK(0x1028, 0x0AF4, "Warlock", CS8409_WARLOCK),
517517
SND_PCI_QUIRK(0x1028, 0x0AF5, "Warlock", CS8409_WARLOCK),
518+
SND_PCI_QUIRK(0x1028, 0x0B92, "Warlock MLK", CS8409_WARLOCK_MLK),
519+
SND_PCI_QUIRK(0x1028, 0x0B93, "Warlock MLK Dual Mic", CS8409_WARLOCK_MLK_DUAL_MIC),
520+
SND_PCI_QUIRK(0x1028, 0x0B94, "Warlock MLK", CS8409_WARLOCK_MLK),
521+
SND_PCI_QUIRK(0x1028, 0x0B95, "Warlock MLK Dual Mic", CS8409_WARLOCK_MLK_DUAL_MIC),
522+
SND_PCI_QUIRK(0x1028, 0x0B96, "Warlock MLK", CS8409_WARLOCK_MLK),
523+
SND_PCI_QUIRK(0x1028, 0x0B97, "Warlock MLK Dual Mic", CS8409_WARLOCK_MLK_DUAL_MIC),
524+
SND_PCI_QUIRK(0x1028, 0x0BB2, "Warlock MLK", CS8409_WARLOCK_MLK),
525+
SND_PCI_QUIRK(0x1028, 0x0BB3, "Warlock MLK", CS8409_WARLOCK_MLK),
526+
SND_PCI_QUIRK(0x1028, 0x0BB4, "Warlock MLK", CS8409_WARLOCK_MLK),
518527
SND_PCI_QUIRK(0x1028, 0x0BB5, "Warlock N3 15 TGL-U Nuvoton EC", CS8409_WARLOCK),
519528
SND_PCI_QUIRK(0x1028, 0x0BB6, "Warlock V3 15 TGL-U Nuvoton EC", CS8409_WARLOCK),
529+
SND_PCI_QUIRK(0x1028, 0x0BB8, "Warlock MLK", CS8409_WARLOCK_MLK),
530+
SND_PCI_QUIRK(0x1028, 0x0BB9, "Warlock MLK Dual Mic", CS8409_WARLOCK_MLK_DUAL_MIC),
531+
SND_PCI_QUIRK(0x1028, 0x0BBA, "Warlock MLK", CS8409_WARLOCK_MLK),
532+
SND_PCI_QUIRK(0x1028, 0x0BBB, "Warlock MLK Dual Mic", CS8409_WARLOCK_MLK_DUAL_MIC),
533+
SND_PCI_QUIRK(0x1028, 0x0BBC, "Warlock MLK", CS8409_WARLOCK_MLK),
534+
SND_PCI_QUIRK(0x1028, 0x0BBD, "Warlock MLK Dual Mic", CS8409_WARLOCK_MLK_DUAL_MIC),
520535
{} /* terminator */
521536
};
522537

523538
/* Dell Inspiron models with cs8409/cs42l42 */
524539
const struct hda_model_fixup cs8409_models[] = {
525540
{ .id = CS8409_BULLSEYE, .name = "bullseye" },
526541
{ .id = CS8409_WARLOCK, .name = "warlock" },
542+
{ .id = CS8409_WARLOCK_MLK, .name = "warlock mlk" },
543+
{ .id = CS8409_WARLOCK_MLK_DUAL_MIC, .name = "warlock mlk dual mic" },
527544
{ .id = CS8409_CYBORG, .name = "cyborg" },
528545
{ .id = CS8409_DOLPHIN, .name = "dolphin" },
529546
{}
@@ -542,6 +559,18 @@ const struct hda_fixup cs8409_fixups[] = {
542559
.chained = true,
543560
.chain_id = CS8409_FIXUPS,
544561
},
562+
[CS8409_WARLOCK_MLK] = {
563+
.type = HDA_FIXUP_PINS,
564+
.v.pins = cs8409_cs42l42_pincfgs,
565+
.chained = true,
566+
.chain_id = CS8409_FIXUPS,
567+
},
568+
[CS8409_WARLOCK_MLK_DUAL_MIC] = {
569+
.type = HDA_FIXUP_PINS,
570+
.v.pins = cs8409_cs42l42_pincfgs,
571+
.chained = true,
572+
.chain_id = CS8409_FIXUPS,
573+
},
545574
[CS8409_CYBORG] = {
546575
.type = HDA_FIXUP_PINS,
547576
.v.pins = cs8409_cs42l42_pincfgs,

sound/pci/hda/patch_cs8409.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -912,9 +912,15 @@ static void cs8409_cs42l42_hw_init(struct hda_codec *codec)
912912
cs8409_vendor_coef_set(codec, seq_bullseye->cir, seq_bullseye->coeff);
913913
}
914914

915-
/* DMIC1_MO=00b, DMIC1/2_SR=1 */
916-
if (codec->fixup_id == CS8409_CYBORG)
915+
switch (codec->fixup_id) {
916+
case CS8409_CYBORG:
917+
case CS8409_WARLOCK_MLK_DUAL_MIC:
918+
/* DMIC1_MO=00b, DMIC1/2_SR=1 */
917919
cs8409_vendor_coef_set(codec, CS8409_DMIC_CFG, 0x0003);
920+
break;
921+
default:
922+
break;
923+
}
918924

919925
cs42l42_resume(cs42l42);
920926

@@ -1008,6 +1014,11 @@ void cs8409_cs42l42_fixups(struct hda_codec *codec, const struct hda_fixup *fix,
10081014
spec->scodecs[CS8409_CODEC0]->full_scale_vol =
10091015
CS42L42_FULL_SCALE_VOL_MINUS6DB;
10101016
break;
1017+
case CS8409_WARLOCK_MLK:
1018+
case CS8409_WARLOCK_MLK_DUAL_MIC:
1019+
spec->scodecs[CS8409_CODEC0]->hsbias_hiz = 0x0020;
1020+
spec->scodecs[CS8409_CODEC0]->full_scale_vol = CS42L42_FULL_SCALE_VOL_0DB;
1021+
break;
10111022
default:
10121023
spec->scodecs[CS8409_CODEC0]->hsbias_hiz = 0x0020;
10131024
spec->scodecs[CS8409_CODEC0]->full_scale_vol =

sound/pci/hda/patch_cs8409.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ enum cs8409_coefficient_index_registers {
267267
enum {
268268
CS8409_BULLSEYE,
269269
CS8409_WARLOCK,
270+
CS8409_WARLOCK_MLK,
271+
CS8409_WARLOCK_MLK_DUAL_MIC,
270272
CS8409_CYBORG,
271273
CS8409_FIXUPS,
272274
CS8409_DOLPHIN,

0 commit comments

Comments
 (0)