@@ -1512,6 +1512,7 @@ enum {
1512
1512
ALC260_FIXUP_KN1 ,
1513
1513
ALC260_FIXUP_FSC_S7020 ,
1514
1514
ALC260_FIXUP_FSC_S7020_JWSE ,
1515
+ ALC260_FIXUP_VAIO_PINS ,
1515
1516
};
1516
1517
1517
1518
static void alc260_gpio1_automute (struct hda_codec * codec )
@@ -1652,6 +1653,24 @@ static const struct hda_fixup alc260_fixups[] = {
1652
1653
.chained = true,
1653
1654
.chain_id = ALC260_FIXUP_FSC_S7020 ,
1654
1655
},
1656
+ [ALC260_FIXUP_VAIO_PINS ] = {
1657
+ .type = HDA_FIXUP_PINS ,
1658
+ .v .pins = (const struct hda_pintbl []) {
1659
+ /* Pin configs are missing completely on some VAIOs */
1660
+ { 0x0f , 0x01211020 },
1661
+ { 0x10 , 0x0001003f },
1662
+ { 0x11 , 0x411111f0 },
1663
+ { 0x12 , 0x01a15930 },
1664
+ { 0x13 , 0x411111f0 },
1665
+ { 0x14 , 0x411111f0 },
1666
+ { 0x15 , 0x411111f0 },
1667
+ { 0x16 , 0x411111f0 },
1668
+ { 0x17 , 0x411111f0 },
1669
+ { 0x18 , 0x411111f0 },
1670
+ { 0x19 , 0x411111f0 },
1671
+ { }
1672
+ }
1673
+ },
1655
1674
};
1656
1675
1657
1676
static const struct snd_pci_quirk alc260_fixup_tbl [] = {
@@ -1660,6 +1679,8 @@ static const struct snd_pci_quirk alc260_fixup_tbl[] = {
1660
1679
SND_PCI_QUIRK (0x1025 , 0x008f , "Acer" , ALC260_FIXUP_GPIO1 ),
1661
1680
SND_PCI_QUIRK (0x103c , 0x280a , "HP dc5750" , ALC260_FIXUP_HP_DC5750 ),
1662
1681
SND_PCI_QUIRK (0x103c , 0x30ba , "HP Presario B1900" , ALC260_FIXUP_HP_B1900 ),
1682
+ SND_PCI_QUIRK (0x104d , 0x81bb , "Sony VAIO" , ALC260_FIXUP_VAIO_PINS ),
1683
+ SND_PCI_QUIRK (0x104d , 0x81e2 , "Sony VAIO TX" , ALC260_FIXUP_HP_PIN_0F ),
1663
1684
SND_PCI_QUIRK (0x10cf , 0x1326 , "FSC LifeBook S7020" , ALC260_FIXUP_FSC_S7020 ),
1664
1685
SND_PCI_QUIRK (0x1509 , 0x4540 , "Favorit 100XS" , ALC260_FIXUP_GPIO1 ),
1665
1686
SND_PCI_QUIRK (0x152d , 0x0729 , "Quanta KN1" , ALC260_FIXUP_KN1 ),
@@ -3393,7 +3414,7 @@ static void alc_update_headset_mode_hook(struct hda_codec *codec,
3393
3414
static void alc_update_headset_jack_cb (struct hda_codec * codec , struct hda_jack_tbl * jack )
3394
3415
{
3395
3416
struct alc_spec * spec = codec -> spec ;
3396
- spec -> current_headset_type = ALC_HEADSET_MODE_UNKNOWN ;
3417
+ spec -> current_headset_type = ALC_HEADSET_TYPE_UNKNOWN ;
3397
3418
snd_hda_gen_hp_automute (codec , jack );
3398
3419
}
3399
3420
@@ -3652,9 +3673,29 @@ static void alc290_fixup_mono_speakers(struct hda_codec *codec,
3652
3673
#if IS_ENABLED (CONFIG_THINKPAD_ACPI )
3653
3674
3654
3675
#include <linux/thinkpad_acpi.h>
3676
+ #include <acpi/acpi.h>
3655
3677
3656
3678
static int (* led_set_func )(int , bool );
3657
3679
3680
+ static acpi_status acpi_check_cb (acpi_handle handle , u32 lvl , void * context ,
3681
+ void * * rv )
3682
+ {
3683
+ bool * found = context ;
3684
+ * found = true;
3685
+ return AE_OK ;
3686
+ }
3687
+
3688
+ static bool is_thinkpad (struct hda_codec * codec )
3689
+ {
3690
+ bool found = false;
3691
+ if (codec -> subsystem_id >> 16 != 0x17aa )
3692
+ return false;
3693
+ if (ACPI_SUCCESS (acpi_get_devices ("LEN0068" , acpi_check_cb , & found , NULL )) && found )
3694
+ return true;
3695
+ found = false;
3696
+ return ACPI_SUCCESS (acpi_get_devices ("IBM0068" , acpi_check_cb , & found , NULL )) && found ;
3697
+ }
3698
+
3658
3699
static void update_tpacpi_mute_led (void * private_data , int enabled )
3659
3700
{
3660
3701
if (led_set_func )
@@ -3680,6 +3721,8 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
3680
3721
bool removefunc = false;
3681
3722
3682
3723
if (action == HDA_FIXUP_ACT_PROBE ) {
3724
+ if (!is_thinkpad (codec ))
3725
+ return ;
3683
3726
if (!led_set_func )
3684
3727
led_set_func = symbol_request (tpacpi_led_set );
3685
3728
if (!led_set_func ) {
@@ -3923,6 +3966,8 @@ static const struct hda_fixup alc269_fixups[] = {
3923
3966
[ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT ] = {
3924
3967
.type = HDA_FIXUP_FUNC ,
3925
3968
.v .func = alc269_fixup_pincfg_no_hp_to_lineout ,
3969
+ .chained = true,
3970
+ .chain_id = ALC269_FIXUP_THINKPAD_ACPI ,
3926
3971
},
3927
3972
[ALC269_FIXUP_DELL1_MIC_NO_PRESENCE ] = {
3928
3973
.type = HDA_FIXUP_PINS ,
@@ -4027,6 +4072,8 @@ static const struct hda_fixup alc269_fixups[] = {
4027
4072
[ALC269_FIXUP_LIMIT_INT_MIC_BOOST ] = {
4028
4073
.type = HDA_FIXUP_FUNC ,
4029
4074
.v .func = alc269_fixup_limit_int_mic_boost ,
4075
+ .chained = true,
4076
+ .chain_id = ALC269_FIXUP_THINKPAD_ACPI ,
4030
4077
},
4031
4078
[ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED ] = {
4032
4079
.type = HDA_FIXUP_FUNC ,
@@ -4070,8 +4117,6 @@ static const struct hda_fixup alc269_fixups[] = {
4070
4117
[ALC269_FIXUP_THINKPAD_ACPI ] = {
4071
4118
.type = HDA_FIXUP_FUNC ,
4072
4119
.v .func = alc_fixup_thinkpad_acpi ,
4073
- .chained = true,
4074
- .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
4075
4120
},
4076
4121
[ALC255_FIXUP_DELL1_MIC_NO_PRESENCE ] = {
4077
4122
.type = HDA_FIXUP_PINS ,
@@ -4128,6 +4173,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
4128
4173
SND_PCI_QUIRK (0x1028 , 0x0608 , "Dell" , ALC269_FIXUP_DELL1_MIC_NO_PRESENCE ),
4129
4174
SND_PCI_QUIRK (0x1028 , 0x0609 , "Dell" , ALC269_FIXUP_DELL1_MIC_NO_PRESENCE ),
4130
4175
SND_PCI_QUIRK (0x1028 , 0x0613 , "Dell" , ALC269_FIXUP_DELL1_MIC_NO_PRESENCE ),
4176
+ SND_PCI_QUIRK (0x1028 , 0x0614 , "Dell Inspiron 3135" , ALC269_FIXUP_DELL1_MIC_NO_PRESENCE ),
4131
4177
SND_PCI_QUIRK (0x1028 , 0x0616 , "Dell Vostro 5470" , ALC290_FIXUP_MONO_SPEAKERS ),
4132
4178
SND_PCI_QUIRK (0x1028 , 0x061f , "Dell" , ALC255_FIXUP_DELL1_MIC_NO_PRESENCE ),
4133
4179
SND_PCI_QUIRK (0x1028 , 0x063f , "Dell" , ALC255_FIXUP_DELL1_MIC_NO_PRESENCE ),
@@ -4173,14 +4219,15 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
4173
4219
SND_PCI_QUIRK (0x17aa , 0x2208 , "Thinkpad T431s" , ALC269_FIXUP_LENOVO_DOCK ),
4174
4220
SND_PCI_QUIRK (0x17aa , 0x220c , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4175
4221
SND_PCI_QUIRK (0x17aa , 0x2212 , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4176
- SND_PCI_QUIRK (0x17aa , 0x2214 , "Thinkpad" , ALC269_FIXUP_THINKPAD_ACPI ),
4222
+ SND_PCI_QUIRK (0x17aa , 0x2214 , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4177
4223
SND_PCI_QUIRK (0x17aa , 0x2215 , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4178
4224
SND_PCI_QUIRK (0x17aa , 0x5013 , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4179
4225
SND_PCI_QUIRK (0x17aa , 0x501a , "Thinkpad" , ALC283_FIXUP_INT_MIC ),
4180
4226
SND_PCI_QUIRK (0x17aa , 0x5026 , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4181
4227
SND_PCI_QUIRK (0x17aa , 0x5109 , "Thinkpad" , ALC269_FIXUP_LIMIT_INT_MIC_BOOST ),
4182
4228
SND_PCI_QUIRK (0x17aa , 0x3bf8 , "Quanta FL1" , ALC269_FIXUP_PCM_44K ),
4183
4229
SND_PCI_QUIRK (0x17aa , 0x9e54 , "LENOVO NB" , ALC269_FIXUP_LENOVO_EAPD ),
4230
+ SND_PCI_QUIRK_VENDOR (0x17aa , "Thinkpad" , ALC269_FIXUP_THINKPAD_ACPI ),
4184
4231
SND_PCI_QUIRK (0x1b7d , 0xa831 , "Ordissimo EVE2 " , ALC269VB_FIXUP_ORDISSIMO_EVE2 ), /* Also known as Malata PC-B1303 */
4185
4232
4186
4233
#if 0
@@ -4698,6 +4745,8 @@ enum {
4698
4745
ALC668_FIXUP_DELL_MIC_NO_PRESENCE ,
4699
4746
ALC668_FIXUP_HEADSET_MODE ,
4700
4747
ALC662_FIXUP_BASS_CHMAP ,
4748
+ ALC662_FIXUP_BASS_1A ,
4749
+ ALC662_FIXUP_BASS_1A_CHMAP ,
4701
4750
};
4702
4751
4703
4752
static const struct hda_fixup alc662_fixups [] = {
@@ -4878,6 +4927,19 @@ static const struct hda_fixup alc662_fixups[] = {
4878
4927
.chained = true,
4879
4928
.chain_id = ALC662_FIXUP_ASUS_MODE4
4880
4929
},
4930
+ [ALC662_FIXUP_BASS_1A ] = {
4931
+ .type = HDA_FIXUP_PINS ,
4932
+ .v .pins = (const struct hda_pintbl []) {
4933
+ {0x1a , 0x80106111 }, /* bass speaker */
4934
+ {}
4935
+ },
4936
+ },
4937
+ [ALC662_FIXUP_BASS_1A_CHMAP ] = {
4938
+ .type = HDA_FIXUP_FUNC ,
4939
+ .v .func = alc662_fixup_bass_chmap ,
4940
+ .chained = true,
4941
+ .chain_id = ALC662_FIXUP_BASS_1A ,
4942
+ },
4881
4943
};
4882
4944
4883
4945
static const struct snd_pci_quirk alc662_fixup_tbl [] = {
@@ -4890,8 +4952,10 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
4890
4952
SND_PCI_QUIRK (0x1025 , 0x038b , "Acer Aspire 8943G" , ALC662_FIXUP_ASPIRE ),
4891
4953
SND_PCI_QUIRK (0x1028 , 0x05d8 , "Dell" , ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),
4892
4954
SND_PCI_QUIRK (0x1028 , 0x05db , "Dell" , ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),
4955
+ SND_PCI_QUIRK (0x1028 , 0x0625 , "Dell" , ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),
4893
4956
SND_PCI_QUIRK (0x1028 , 0x0626 , "Dell" , ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),
4894
4957
SND_PCI_QUIRK (0x103c , 0x1632 , "HP RP5800" , ALC662_FIXUP_HP_RP5800 ),
4958
+ SND_PCI_QUIRK (0x1043 , 0x11cd , "Asus N550" , ALC662_FIXUP_BASS_1A_CHMAP ),
4895
4959
SND_PCI_QUIRK (0x1043 , 0x1477 , "ASUS N56VZ" , ALC662_FIXUP_BASS_CHMAP ),
4896
4960
SND_PCI_QUIRK (0x1043 , 0x1bf3 , "ASUS N76VZ" , ALC662_FIXUP_BASS_CHMAP ),
4897
4961
SND_PCI_QUIRK (0x1043 , 0x8469 , "ASUS mobo" , ALC662_FIXUP_NO_JACK_DETECT ),
0 commit comments