|
@@ -2912,6 +2912,8 @@ static void alc283_init(struct hda_codec *codec)
|
|
|
|
|
|
if (!hp_pin)
|
|
|
return;
|
|
|
+
|
|
|
+ msleep(30);
|
|
|
hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
|
|
|
|
|
|
/* Index 0x43 Direct Drive HP AMP LPM Control 1 */
|
|
@@ -3607,6 +3609,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
|
|
|
|
|
|
switch (codec->vendor_id) {
|
|
|
case 0x10ec0255:
|
|
|
+ case 0x10ec0256:
|
|
|
alc_process_coef_fw(codec, coef0255);
|
|
|
break;
|
|
|
case 0x10ec0233:
|
|
@@ -3662,6 +3665,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
|
|
|
|
|
|
switch (codec->vendor_id) {
|
|
|
case 0x10ec0255:
|
|
|
+ case 0x10ec0256:
|
|
|
alc_write_coef_idx(codec, 0x45, 0xc489);
|
|
|
snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
|
|
|
alc_process_coef_fw(codec, coef0255);
|
|
@@ -3731,6 +3735,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
|
|
|
|
|
|
switch (codec->vendor_id) {
|
|
|
case 0x10ec0255:
|
|
|
+ case 0x10ec0256:
|
|
|
alc_process_coef_fw(codec, coef0255);
|
|
|
break;
|
|
|
case 0x10ec0233:
|
|
@@ -3785,6 +3790,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
|
|
|
|
|
|
switch (codec->vendor_id) {
|
|
|
case 0x10ec0255:
|
|
|
+ case 0x10ec0256:
|
|
|
alc_process_coef_fw(codec, coef0255);
|
|
|
break;
|
|
|
case 0x10ec0233:
|
|
@@ -3839,6 +3845,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
|
|
|
|
|
|
switch (codec->vendor_id) {
|
|
|
case 0x10ec0255:
|
|
|
+ case 0x10ec0256:
|
|
|
alc_process_coef_fw(codec, coef0255);
|
|
|
break;
|
|
|
case 0x10ec0233:
|
|
@@ -3884,6 +3891,7 @@ static void alc_determine_headset_type(struct hda_codec *codec)
|
|
|
|
|
|
switch (codec->vendor_id) {
|
|
|
case 0x10ec0255:
|
|
|
+ case 0x10ec0256:
|
|
|
alc_process_coef_fw(codec, coef0255);
|
|
|
msleep(300);
|
|
|
val = alc_read_coef_idx(codec, 0x46);
|
|
@@ -4364,6 +4372,7 @@ enum {
|
|
|
ALC269_FIXUP_QUANTA_MUTE,
|
|
|
ALC269_FIXUP_LIFEBOOK,
|
|
|
ALC269_FIXUP_LIFEBOOK_EXTMIC,
|
|
|
+ ALC269_FIXUP_LIFEBOOK_HP_PIN,
|
|
|
ALC269_FIXUP_AMIC,
|
|
|
ALC269_FIXUP_DMIC,
|
|
|
ALC269VB_FIXUP_AMIC,
|
|
@@ -4517,6 +4526,13 @@ static const struct hda_fixup alc269_fixups[] = {
|
|
|
{ }
|
|
|
},
|
|
|
},
|
|
|
+ [ALC269_FIXUP_LIFEBOOK_HP_PIN] = {
|
|
|
+ .type = HDA_FIXUP_PINS,
|
|
|
+ .v.pins = (const struct hda_pintbl[]) {
|
|
|
+ { 0x21, 0x0221102f }, /* HP out */
|
|
|
+ { }
|
|
|
+ },
|
|
|
+ },
|
|
|
[ALC269_FIXUP_AMIC] = {
|
|
|
.type = HDA_FIXUP_PINS,
|
|
|
.v.pins = (const struct hda_pintbl[]) {
|
|
@@ -5010,6 +5026,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
|
|
SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
|
|
|
SND_PCI_QUIRK(0x104d, 0x9099, "Sony VAIO S13", ALC275_FIXUP_SONY_DISABLE_AAMIX),
|
|
|
SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook", ALC269_FIXUP_LIFEBOOK),
|
|
|
+ SND_PCI_QUIRK(0x10cf, 0x15dc, "Lifebook T731", ALC269_FIXUP_LIFEBOOK_HP_PIN),
|
|
|
SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC),
|
|
|
SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
|
|
|
SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_BXBT2807_MIC),
|
|
@@ -5217,6 +5234,16 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
|
|
{0x17, 0x40000000},
|
|
|
{0x1d, 0x40700001},
|
|
|
{0x21, 0x02211050}),
|
|
|
+ SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
|
|
|
+ {0x12, 0x90a60140},
|
|
|
+ {0x13, 0x40000000},
|
|
|
+ {0x14, 0x90170110},
|
|
|
+ {0x19, 0x411111f0},
|
|
|
+ {0x1a, 0x411111f0},
|
|
|
+ {0x1b, 0x411111f0},
|
|
|
+ {0x1d, 0x40700001},
|
|
|
+ {0x1e, 0x411111f0},
|
|
|
+ {0x21, 0x02211020}),
|
|
|
SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4,
|
|
|
{0x12, 0x90a60130},
|
|
|
{0x13, 0x40000000},
|