@@ -7403,6 +7403,49 @@ static void alc245_fixup_hp_spectre_x360_eu0xxx(struct hda_codec *codec,
74037403 alc245_fixup_hp_gpio_led (codec , fix , action );
74047404}
74057405
7406+ /* some changes for Spectre x360 16, 2024 model */
7407+ static void alc245_fixup_hp_spectre_x360_16_aa0xxx (struct hda_codec * codec ,
7408+ const struct hda_fixup * fix , int action )
7409+ {
7410+ /*
7411+ * The Pin Complex 0x14 for the treble speakers is wrongly reported as
7412+ * unconnected.
7413+ * The Pin Complex 0x17 for the bass speakers has the lowest association
7414+ * and sequence values so shift it up a bit to squeeze 0x14 in.
7415+ */
7416+ struct alc_spec * spec = codec -> spec ;
7417+ static const struct hda_pintbl pincfgs [] = {
7418+ { 0x14 , 0x90170110 }, // top/treble
7419+ { 0x17 , 0x90170111 }, // bottom/bass
7420+ { }
7421+ };
7422+
7423+ /*
7424+ * Force DAC 0x02 for the bass speakers 0x17.
7425+ */
7426+ static const hda_nid_t conn [] = { 0x02 };
7427+
7428+ switch (action ) {
7429+ case HDA_FIXUP_ACT_PRE_PROBE :
7430+ /* needed for amp of back speakers */
7431+ spec -> gpio_mask |= 0x01 ;
7432+ spec -> gpio_dir |= 0x01 ;
7433+ snd_hda_apply_pincfgs (codec , pincfgs );
7434+ snd_hda_override_conn_list (codec , 0x17 , ARRAY_SIZE (conn ), conn );
7435+ break ;
7436+ case HDA_FIXUP_ACT_INIT :
7437+ /* need to toggle GPIO to enable the amp of back speakers */
7438+ alc_update_gpio_data (codec , 0x01 , true);
7439+ msleep (100 );
7440+ alc_update_gpio_data (codec , 0x01 , false);
7441+ break ;
7442+ }
7443+
7444+ cs35l41_fixup_i2c_two (codec , fix , action );
7445+ alc245_fixup_hp_mute_led_coefbit (codec , fix , action );
7446+ alc245_fixup_hp_gpio_led (codec , fix , action );
7447+ }
7448+
74067449/*
74077450 * ALC287 PCM hooks
74087451 */
@@ -7725,6 +7768,7 @@ enum {
77257768 ALC256_FIXUP_ACER_SFG16_MICMUTE_LED ,
77267769 ALC256_FIXUP_HEADPHONE_AMP_VOL ,
77277770 ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ,
7771+ ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ,
77287772 ALC285_FIXUP_ASUS_GA403U ,
77297773 ALC285_FIXUP_ASUS_GA403U_HEADSET_MIC ,
77307774 ALC285_FIXUP_ASUS_GA403U_I2C_SPEAKER2_TO_DAC1 ,
@@ -10011,6 +10055,10 @@ static const struct hda_fixup alc269_fixups[] = {
1001110055 .type = HDA_FIXUP_FUNC ,
1001210056 .v .func = alc245_fixup_hp_spectre_x360_eu0xxx ,
1001310057 },
10058+ [ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ] = {
10059+ .type = HDA_FIXUP_FUNC ,
10060+ .v .func = alc245_fixup_hp_spectre_x360_16_aa0xxx ,
10061+ },
1001410062 [ALC285_FIXUP_ASUS_GA403U ] = {
1001510063 .type = HDA_FIXUP_FUNC ,
1001610064 .v .func = alc285_fixup_asus_ga403u ,
@@ -10198,6 +10246,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1019810246 SND_PCI_QUIRK (0x1028 , 0x0c1e , "Dell Precision 3540" , ALC236_FIXUP_DELL_DUAL_CODECS ),
1019910247 SND_PCI_QUIRK (0x1028 , 0x0c28 , "Dell Inspiron 16 Plus 7630" , ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS ),
1020010248 SND_PCI_QUIRK (0x1028 , 0x0c4d , "Dell" , ALC287_FIXUP_CS35L41_I2C_4 ),
10249+ SND_PCI_QUIRK (0x1028 , 0x0c94 , "Dell Polaris 3 metal" , ALC287_FIXUP_TAS2781_I2C ),
10250+ SND_PCI_QUIRK (0x1028 , 0x0c96 , "Dell Polaris 2in1" , ALC287_FIXUP_TAS2781_I2C ),
1020110251 SND_PCI_QUIRK (0x1028 , 0x0cbd , "Dell Oasis 13 CS MTL-U" , ALC289_FIXUP_DELL_CS35L41_SPI_2 ),
1020210252 SND_PCI_QUIRK (0x1028 , 0x0cbe , "Dell Oasis 13 2-IN-1 MTL-U" , ALC289_FIXUP_DELL_CS35L41_SPI_2 ),
1020310253 SND_PCI_QUIRK (0x1028 , 0x0cbf , "Dell Oasis 13 Low Weight MTU-L" , ALC289_FIXUP_DELL_CS35L41_SPI_2 ),
@@ -10448,7 +10498,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1044810498 SND_PCI_QUIRK (0x103c , 0x8be9 , "HP Envy 15" , ALC287_FIXUP_CS35L41_I2C_2 ),
1044910499 SND_PCI_QUIRK (0x103c , 0x8bf0 , "HP" , ALC236_FIXUP_HP_GPIO_LED ),
1045010500 SND_PCI_QUIRK (0x103c , 0x8c15 , "HP Spectre x360 2-in-1 Laptop 14-eu0xxx" , ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX ),
10451- SND_PCI_QUIRK (0x103c , 0x8c16 , "HP Spectre 16 " , ALC287_FIXUP_CS35L41_I2C_2 ),
10501+ SND_PCI_QUIRK (0x103c , 0x8c16 , "HP Spectre x360 2-in-1 Laptop 16-aa0xxx " , ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX ),
1045210502 SND_PCI_QUIRK (0x103c , 0x8c17 , "HP Spectre 16" , ALC287_FIXUP_CS35L41_I2C_2 ),
1045310503 SND_PCI_QUIRK (0x103c , 0x8c21 , "HP Pavilion Plus Laptop 14-ey0XXX" , ALC245_FIXUP_HP_X360_MUTE_LEDS ),
1045410504 SND_PCI_QUIRK (0x103c , 0x8c30 , "HP Victus 15-fb1xxx" , ALC245_FIXUP_HP_MUTE_LED_COEFBIT ),
@@ -10501,11 +10551,15 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1050110551 SND_PCI_QUIRK (0x1043 , 0x103f , "ASUS TX300" , ALC282_FIXUP_ASUS_TX300 ),
1050210552 SND_PCI_QUIRK (0x1043 , 0x106d , "Asus K53BE" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
1050310553 SND_PCI_QUIRK (0x1043 , 0x10a1 , "ASUS UX391UA" , ALC294_FIXUP_ASUS_SPK ),
10554+ SND_PCI_QUIRK (0x1043 , 0x10a4 , "ASUS TP3407SA" , ALC287_FIXUP_TAS2781_I2C ),
1050410555 SND_PCI_QUIRK (0x1043 , 0x10c0 , "ASUS X540SA" , ALC256_FIXUP_ASUS_MIC ),
1050510556 SND_PCI_QUIRK (0x1043 , 0x10d0 , "ASUS X540LA/X540LJ" , ALC255_FIXUP_ASUS_MIC_NO_PRESENCE ),
1050610557 SND_PCI_QUIRK (0x1043 , 0x10d3 , "ASUS K6500ZC" , ALC294_FIXUP_ASUS_SPK ),
10558+ SND_PCI_QUIRK (0x1043 , 0x1154 , "ASUS TP3607SH" , ALC287_FIXUP_TAS2781_I2C ),
1050710559 SND_PCI_QUIRK (0x1043 , 0x115d , "Asus 1015E" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
1050810560 SND_PCI_QUIRK (0x1043 , 0x11c0 , "ASUS X556UR" , ALC255_FIXUP_ASUS_MIC_NO_PRESENCE ),
10561+ SND_PCI_QUIRK (0x1043 , 0x1204 , "ASUS Strix G615JHR_JMR_JPR" , ALC287_FIXUP_TAS2781_I2C ),
10562+ SND_PCI_QUIRK (0x1043 , 0x1214 , "ASUS Strix G615LH_LM_LP" , ALC287_FIXUP_TAS2781_I2C ),
1050910563 SND_PCI_QUIRK (0x1043 , 0x125e , "ASUS Q524UQK" , ALC255_FIXUP_ASUS_MIC_NO_PRESENCE ),
1051010564 SND_PCI_QUIRK (0x1043 , 0x1271 , "ASUS X430UN" , ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ),
1051110565 SND_PCI_QUIRK (0x1043 , 0x1290 , "ASUS X441SA" , ALC233_FIXUP_EAPD_COEF_AND_MIC_NO_PRESENCE ),
@@ -10583,6 +10637,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1058310637 SND_PCI_QUIRK (0x1043 , 0x1e51 , "ASUS Zephyrus M15" , ALC294_FIXUP_ASUS_GU502_PINS ),
1058410638 SND_PCI_QUIRK (0x1043 , 0x1e5e , "ASUS ROG Strix G513" , ALC294_FIXUP_ASUS_G513_PINS ),
1058510639 SND_PCI_QUIRK (0x1043 , 0x1e8e , "ASUS Zephyrus G15" , ALC289_FIXUP_ASUS_GA401 ),
10640+ SND_PCI_QUIRK (0x1043 , 0x1eb3 , "ASUS Ally RCLA72" , ALC287_FIXUP_TAS2781_I2C ),
1058610641 SND_PCI_QUIRK (0x1043 , 0x1ed3 , "ASUS HN7306W" , ALC287_FIXUP_CS35L41_I2C_2 ),
1058710642 SND_PCI_QUIRK (0x1043 , 0x1ee2 , "ASUS UM6702RA/RC" , ALC287_FIXUP_CS35L41_I2C_2 ),
1058810643 SND_PCI_QUIRK (0x1043 , 0x1c52 , "ASUS Zephyrus G15 2022" , ALC289_FIXUP_ASUS_GA401 ),
@@ -10597,6 +10652,13 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1059710652 SND_PCI_QUIRK (0x1043 , 0x3a40 , "ASUS G814JZR" , ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS ),
1059810653 SND_PCI_QUIRK (0x1043 , 0x3a50 , "ASUS G834JYR/JZR" , ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS ),
1059910654 SND_PCI_QUIRK (0x1043 , 0x3a60 , "ASUS G634JYR/JZR" , ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS ),
10655+ SND_PCI_QUIRK (0x1043 , 0x3e30 , "ASUS TP3607SA" , ALC287_FIXUP_TAS2781_I2C ),
10656+ SND_PCI_QUIRK (0x1043 , 0x3ee0 , "ASUS Strix G815_JHR_JMR_JPR" , ALC287_FIXUP_TAS2781_I2C ),
10657+ SND_PCI_QUIRK (0x1043 , 0x3ef0 , "ASUS Strix G635LR_LW_LX" , ALC287_FIXUP_TAS2781_I2C ),
10658+ SND_PCI_QUIRK (0x1043 , 0x3f00 , "ASUS Strix G815LH_LM_LP" , ALC287_FIXUP_TAS2781_I2C ),
10659+ SND_PCI_QUIRK (0x1043 , 0x3f10 , "ASUS Strix G835LR_LW_LX" , ALC287_FIXUP_TAS2781_I2C ),
10660+ SND_PCI_QUIRK (0x1043 , 0x3f20 , "ASUS Strix G615LR_LW" , ALC287_FIXUP_TAS2781_I2C ),
10661+ SND_PCI_QUIRK (0x1043 , 0x3f30 , "ASUS Strix G815LR_LW" , ALC287_FIXUP_TAS2781_I2C ),
1060010662 SND_PCI_QUIRK (0x1043 , 0x831a , "ASUS P901" , ALC269_FIXUP_STEREO_DMIC ),
1060110663 SND_PCI_QUIRK (0x1043 , 0x834a , "ASUS S101" , ALC269_FIXUP_STEREO_DMIC ),
1060210664 SND_PCI_QUIRK (0x1043 , 0x8398 , "ASUS P1005" , ALC269_FIXUP_STEREO_DMIC ),
@@ -10819,11 +10881,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1081910881 SND_PCI_QUIRK (0x17aa , 0x3878 , "Lenovo Legion 7 Slim 16ARHA7" , ALC287_FIXUP_CS35L41_I2C_2 ),
1082010882 SND_PCI_QUIRK (0x17aa , 0x387d , "Yoga S780-16 pro Quad AAC" , ALC287_FIXUP_TAS2781_I2C ),
1082110883 SND_PCI_QUIRK (0x17aa , 0x387e , "Yoga S780-16 pro Quad YC" , ALC287_FIXUP_TAS2781_I2C ),
10884+ SND_PCI_QUIRK (0x17aa , 0x387f , "Yoga S780-16 pro dual LX" , ALC287_FIXUP_TAS2781_I2C ),
10885+ SND_PCI_QUIRK (0x17aa , 0x3880 , "Yoga S780-16 pro dual YC" , ALC287_FIXUP_TAS2781_I2C ),
1082210886 SND_PCI_QUIRK (0x17aa , 0x3881 , "YB9 dual power mode2 YC" , ALC287_FIXUP_TAS2781_I2C ),
1082310887 SND_PCI_QUIRK (0x17aa , 0x3882 , "Lenovo Yoga Pro 7 14APH8" , ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ),
1082410888 SND_PCI_QUIRK (0x17aa , 0x3884 , "Y780 YG DUAL" , ALC287_FIXUP_TAS2781_I2C ),
1082510889 SND_PCI_QUIRK (0x17aa , 0x3886 , "Y780 VECO DUAL" , ALC287_FIXUP_TAS2781_I2C ),
1082610890 SND_PCI_QUIRK (0x17aa , 0x3891 , "Lenovo Yoga Pro 7 14AHP9" , ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN ),
10891+ SND_PCI_QUIRK (0x17aa , 0x38a5 , "Y580P AMD dual" , ALC287_FIXUP_TAS2781_I2C ),
1082710892 SND_PCI_QUIRK (0x17aa , 0x38a7 , "Y780P AMD YG dual" , ALC287_FIXUP_TAS2781_I2C ),
1082810893 SND_PCI_QUIRK (0x17aa , 0x38a8 , "Y780P AMD VECO dual" , ALC287_FIXUP_TAS2781_I2C ),
1082910894 SND_PCI_QUIRK (0x17aa , 0x38a9 , "Thinkbook 16P" , ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD ),
@@ -10832,6 +10897,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1083210897 SND_PCI_QUIRK (0x17aa , 0x38b5 , "Legion Slim 7 16IRH8" , ALC287_FIXUP_CS35L41_I2C_2 ),
1083310898 SND_PCI_QUIRK (0x17aa , 0x38b6 , "Legion Slim 7 16APH8" , ALC287_FIXUP_CS35L41_I2C_2 ),
1083410899 SND_PCI_QUIRK (0x17aa , 0x38b7 , "Legion Slim 7 16APH8" , ALC287_FIXUP_CS35L41_I2C_2 ),
10900+ SND_PCI_QUIRK (0x17aa , 0x38b8 , "Yoga S780-14.5 proX AMD YC Dual" , ALC287_FIXUP_TAS2781_I2C ),
10901+ SND_PCI_QUIRK (0x17aa , 0x38b9 , "Yoga S780-14.5 proX AMD LX Dual" , ALC287_FIXUP_TAS2781_I2C ),
1083510902 SND_PCI_QUIRK (0x17aa , 0x38ba , "Yoga S780-14.5 Air AMD quad YC" , ALC287_FIXUP_TAS2781_I2C ),
1083610903 SND_PCI_QUIRK (0x17aa , 0x38bb , "Yoga S780-14.5 Air AMD quad AAC" , ALC287_FIXUP_TAS2781_I2C ),
1083710904 SND_PCI_QUIRK (0x17aa , 0x38be , "Yoga S980-14.5 proX YC Dual" , ALC287_FIXUP_TAS2781_I2C ),
@@ -10842,12 +10909,22 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1084210909 SND_PCI_QUIRK (0x17aa , 0x38cb , "Y790 YG DUAL" , ALC287_FIXUP_TAS2781_I2C ),
1084310910 SND_PCI_QUIRK (0x17aa , 0x38cd , "Y790 VECO DUAL" , ALC287_FIXUP_TAS2781_I2C ),
1084410911 SND_PCI_QUIRK (0x17aa , 0x38d2 , "Lenovo Yoga 9 14IMH9" , ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN ),
10912+ SND_PCI_QUIRK (0x17aa , 0x38d3 , "Yoga S990-16 Pro IMH YC Dual" , ALC287_FIXUP_TAS2781_I2C ),
10913+ SND_PCI_QUIRK (0x17aa , 0x38d4 , "Yoga S990-16 Pro IMH VECO Dual" , ALC287_FIXUP_TAS2781_I2C ),
10914+ SND_PCI_QUIRK (0x17aa , 0x38d5 , "Yoga S990-16 Pro IMH YC Quad" , ALC287_FIXUP_TAS2781_I2C ),
10915+ SND_PCI_QUIRK (0x17aa , 0x38d6 , "Yoga S990-16 Pro IMH VECO Quad" , ALC287_FIXUP_TAS2781_I2C ),
1084510916 SND_PCI_QUIRK (0x17aa , 0x38d7 , "Lenovo Yoga 9 14IMH9" , ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN ),
10917+ SND_PCI_QUIRK (0x17aa , 0x38df , "Yoga Y990 Intel YC Dual" , ALC287_FIXUP_TAS2781_I2C ),
10918+ SND_PCI_QUIRK (0x17aa , 0x38e0 , "Yoga Y990 Intel VECO Dual" , ALC287_FIXUP_TAS2781_I2C ),
10919+ SND_PCI_QUIRK (0x17aa , 0x38f8 , "Yoga Book 9i" , ALC287_FIXUP_TAS2781_I2C ),
1084610920 SND_PCI_QUIRK (0x17aa , 0x38df , "Y990 YG DUAL" , ALC287_FIXUP_TAS2781_I2C ),
1084710921 SND_PCI_QUIRK (0x17aa , 0x38f9 , "Thinkbook 16P Gen5" , ALC287_FIXUP_CS35L41_I2C_2 ),
1084810922 SND_PCI_QUIRK (0x17aa , 0x38fa , "Thinkbook 16P Gen5" , ALC287_FIXUP_CS35L41_I2C_2 ),
10923+ SND_PCI_QUIRK (0x17aa , 0x38fd , "ThinkBook plus Gen5 Hybrid" , ALC287_FIXUP_TAS2781_I2C ),
1084910924 SND_PCI_QUIRK (0x17aa , 0x3902 , "Lenovo E50-80" , ALC269_FIXUP_DMIC_THINKPAD_ACPI ),
1085010925 SND_PCI_QUIRK (0x17aa , 0x3913 , "Lenovo 145" , ALC236_FIXUP_LENOVO_INV_DMIC ),
10926+ SND_PCI_QUIRK (0x17aa , 0x391f , "Yoga S990-16 pro Quad YC Quad" , ALC287_FIXUP_TAS2781_I2C ),
10927+ SND_PCI_QUIRK (0x17aa , 0x3920 , "Yoga S990-16 pro Quad VECO Quad" , ALC287_FIXUP_TAS2781_I2C ),
1085110928 SND_PCI_QUIRK (0x17aa , 0x3977 , "IdeaPad S210" , ALC283_FIXUP_INT_MIC ),
1085210929 SND_PCI_QUIRK (0x17aa , 0x3978 , "Lenovo B50-70" , ALC269_FIXUP_DMIC_THINKPAD_ACPI ),
1085310930 SND_PCI_QUIRK (0x17aa , 0x3bf8 , "Quanta FL1" , ALC269_FIXUP_PCM_44K ),
0 commit comments