diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 3d59f8325848..2291a8396817 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -2104,6 +2104,7 @@ static unsigned int ref9205_pin_configs[12] = { | |||
2104 | 10280204 | 2104 | 10280204 |
2105 | 1028021F | 2105 | 1028021F |
2106 | 10280228 (Dell Vostro 1500) | 2106 | 10280228 (Dell Vostro 1500) |
2107 | 10280229 (Dell Vostro 1700) | ||
2107 | */ | 2108 | */ |
2108 | static unsigned int dell_9205_m42_pin_configs[12] = { | 2109 | static unsigned int dell_9205_m42_pin_configs[12] = { |
2109 | 0x0321101F, 0x03A11020, 0x400003FA, 0x90170310, | 2110 | 0x0321101F, 0x03A11020, 0x400003FA, 0x90170310, |
@@ -2189,6 +2190,8 @@ static struct snd_pci_quirk stac9205_cfg_tbl[] = { | |||
2189 | "Dell Inspiron", STAC_9205_DELL_M44), | 2190 | "Dell Inspiron", STAC_9205_DELL_M44), |
2190 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0228, | 2191 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0228, |
2191 | "Dell Vostro 1500", STAC_9205_DELL_M42), | 2192 | "Dell Vostro 1500", STAC_9205_DELL_M42), |
2193 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0229, | ||
2194 | "Dell Vostro 1700", STAC_9205_DELL_M42), | ||
2192 | /* Gateway */ | 2195 | /* Gateway */ |
2193 | SND_PCI_QUIRK(0x107b, 0x0560, "Gateway T6834c", STAC_9205_EAPD), | 2196 | SND_PCI_QUIRK(0x107b, 0x0560, "Gateway T6834c", STAC_9205_EAPD), |
2194 | SND_PCI_QUIRK(0x107b, 0x0565, "Gateway T1616", STAC_9205_EAPD), | 2197 | SND_PCI_QUIRK(0x107b, 0x0565, "Gateway T1616", STAC_9205_EAPD), |
@@ -3779,15 +3782,16 @@ static int stac92xx_parse_auto_config(struct hda_codec *codec, hda_nid_t dig_out | |||
3779 | err = snd_hda_attach_beep_device(codec, nid); | 3782 | err = snd_hda_attach_beep_device(codec, nid); |
3780 | if (err < 0) | 3783 | if (err < 0) |
3781 | return err; | 3784 | return err; |
3782 | /* IDT/STAC codecs have linear beep tone parameter */ | 3785 | if (codec->beep) { |
3783 | codec->beep->linear_tone = 1; | 3786 | /* IDT/STAC codecs have linear beep tone parameter */ |
3784 | /* if no beep switch is available, make its own one */ | 3787 | codec->beep->linear_tone = 1; |
3785 | caps = query_amp_caps(codec, nid, HDA_OUTPUT); | 3788 | /* if no beep switch is available, make its own one */ |
3786 | if (codec->beep && | 3789 | caps = query_amp_caps(codec, nid, HDA_OUTPUT); |
3787 | !((caps & AC_AMPCAP_MUTE) >> AC_AMPCAP_MUTE_SHIFT)) { | 3790 | if (!(caps & AC_AMPCAP_MUTE)) { |
3788 | err = stac92xx_beep_switch_ctl(codec); | 3791 | err = stac92xx_beep_switch_ctl(codec); |
3789 | if (err < 0) | 3792 | if (err < 0) |
3790 | return err; | 3793 | return err; |
3794 | } | ||
3791 | } | 3795 | } |
3792 | } | 3796 | } |
3793 | #endif | 3797 | #endif |
@@ -4449,14 +4453,7 @@ static inline int get_pin_presence(struct hda_codec *codec, hda_nid_t nid) | |||
4449 | { | 4453 | { |
4450 | if (!nid) | 4454 | if (!nid) |
4451 | return 0; | 4455 | return 0; |
4452 | /* NOTE: we can't use snd_hda_jack_detect() here because STAC/IDT | 4456 | return snd_hda_jack_detect(codec, nid); |
4453 | * codecs behave wrongly when SET_PIN_SENSE is triggered, although | ||
4454 | * the pincap gives TRIG_REQ bit. | ||
4455 | */ | ||
4456 | if (snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_PIN_SENSE, 0) & | ||
4457 | AC_PINSENSE_PRESENCE) | ||
4458 | return 1; | ||
4459 | return 0; | ||
4460 | } | 4457 | } |
4461 | 4458 | ||
4462 | static void stac92xx_line_out_detect(struct hda_codec *codec, | 4459 | static void stac92xx_line_out_detect(struct hda_codec *codec, |
@@ -4958,6 +4955,7 @@ static int patch_stac9200(struct hda_codec *codec) | |||
4958 | if (spec == NULL) | 4955 | if (spec == NULL) |
4959 | return -ENOMEM; | 4956 | return -ENOMEM; |
4960 | 4957 | ||
4958 | codec->no_trigger_sense = 1; | ||
4961 | codec->spec = spec; | 4959 | codec->spec = spec; |
4962 | spec->num_pins = ARRAY_SIZE(stac9200_pin_nids); | 4960 | spec->num_pins = ARRAY_SIZE(stac9200_pin_nids); |
4963 | spec->pin_nids = stac9200_pin_nids; | 4961 | spec->pin_nids = stac9200_pin_nids; |
@@ -5020,6 +5018,7 @@ static int patch_stac925x(struct hda_codec *codec) | |||
5020 | if (spec == NULL) | 5018 | if (spec == NULL) |
5021 | return -ENOMEM; | 5019 | return -ENOMEM; |
5022 | 5020 | ||
5021 | codec->no_trigger_sense = 1; | ||
5023 | codec->spec = spec; | 5022 | codec->spec = spec; |
5024 | spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); | 5023 | spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); |
5025 | spec->pin_nids = stac925x_pin_nids; | 5024 | spec->pin_nids = stac925x_pin_nids; |
@@ -5104,6 +5103,7 @@ static int patch_stac92hd73xx(struct hda_codec *codec) | |||
5104 | if (spec == NULL) | 5103 | if (spec == NULL) |
5105 | return -ENOMEM; | 5104 | return -ENOMEM; |
5106 | 5105 | ||
5106 | codec->no_trigger_sense = 1; | ||
5107 | codec->spec = spec; | 5107 | codec->spec = spec; |
5108 | codec->slave_dig_outs = stac92hd73xx_slave_dig_outs; | 5108 | codec->slave_dig_outs = stac92hd73xx_slave_dig_outs; |
5109 | spec->num_pins = ARRAY_SIZE(stac92hd73xx_pin_nids); | 5109 | spec->num_pins = ARRAY_SIZE(stac92hd73xx_pin_nids); |
@@ -5251,6 +5251,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) | |||
5251 | if (spec == NULL) | 5251 | if (spec == NULL) |
5252 | return -ENOMEM; | 5252 | return -ENOMEM; |
5253 | 5253 | ||
5254 | codec->no_trigger_sense = 1; | ||
5254 | codec->spec = spec; | 5255 | codec->spec = spec; |
5255 | codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs; | 5256 | codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs; |
5256 | spec->digbeep_nid = 0x21; | 5257 | spec->digbeep_nid = 0x21; |
@@ -5414,6 +5415,7 @@ static int patch_stac92hd71bxx(struct hda_codec *codec) | |||
5414 | if (spec == NULL) | 5415 | if (spec == NULL) |
5415 | return -ENOMEM; | 5416 | return -ENOMEM; |
5416 | 5417 | ||
5418 | codec->no_trigger_sense = 1; | ||
5417 | codec->spec = spec; | 5419 | codec->spec = spec; |
5418 | codec->patch_ops = stac92xx_patch_ops; | 5420 | codec->patch_ops = stac92xx_patch_ops; |
5419 | spec->num_pins = STAC92HD71BXX_NUM_PINS; | 5421 | spec->num_pins = STAC92HD71BXX_NUM_PINS; |
@@ -5657,6 +5659,7 @@ static int patch_stac922x(struct hda_codec *codec) | |||
5657 | if (spec == NULL) | 5659 | if (spec == NULL) |
5658 | return -ENOMEM; | 5660 | return -ENOMEM; |
5659 | 5661 | ||
5662 | codec->no_trigger_sense = 1; | ||
5660 | codec->spec = spec; | 5663 | codec->spec = spec; |
5661 | spec->num_pins = ARRAY_SIZE(stac922x_pin_nids); | 5664 | spec->num_pins = ARRAY_SIZE(stac922x_pin_nids); |
5662 | spec->pin_nids = stac922x_pin_nids; | 5665 | spec->pin_nids = stac922x_pin_nids; |
@@ -5760,6 +5763,7 @@ static int patch_stac927x(struct hda_codec *codec) | |||
5760 | if (spec == NULL) | 5763 | if (spec == NULL) |
5761 | return -ENOMEM; | 5764 | return -ENOMEM; |
5762 | 5765 | ||
5766 | codec->no_trigger_sense = 1; | ||
5763 | codec->spec = spec; | 5767 | codec->spec = spec; |
5764 | codec->slave_dig_outs = stac927x_slave_dig_outs; | 5768 | codec->slave_dig_outs = stac927x_slave_dig_outs; |
5765 | spec->num_pins = ARRAY_SIZE(stac927x_pin_nids); | 5769 | spec->num_pins = ARRAY_SIZE(stac927x_pin_nids); |
@@ -5894,6 +5898,7 @@ static int patch_stac9205(struct hda_codec *codec) | |||
5894 | if (spec == NULL) | 5898 | if (spec == NULL) |
5895 | return -ENOMEM; | 5899 | return -ENOMEM; |
5896 | 5900 | ||
5901 | codec->no_trigger_sense = 1; | ||
5897 | codec->spec = spec; | 5902 | codec->spec = spec; |
5898 | spec->num_pins = ARRAY_SIZE(stac9205_pin_nids); | 5903 | spec->num_pins = ARRAY_SIZE(stac9205_pin_nids); |
5899 | spec->pin_nids = stac9205_pin_nids; | 5904 | spec->pin_nids = stac9205_pin_nids; |
@@ -6049,6 +6054,7 @@ static int patch_stac9872(struct hda_codec *codec) | |||
6049 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); | 6054 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); |
6050 | if (spec == NULL) | 6055 | if (spec == NULL) |
6051 | return -ENOMEM; | 6056 | return -ENOMEM; |
6057 | codec->no_trigger_sense = 1; | ||
6052 | codec->spec = spec; | 6058 | codec->spec = spec; |
6053 | spec->num_pins = ARRAY_SIZE(stac9872_pin_nids); | 6059 | spec->num_pins = ARRAY_SIZE(stac9872_pin_nids); |
6054 | spec->pin_nids = stac9872_pin_nids; | 6060 | spec->pin_nids = stac9872_pin_nids; |