aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/patch_realtek.c29
-rw-r--r--sound/pci/hda/patch_sigmatel.c16
2 files changed, 37 insertions, 8 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 4eceab9bd109..a4666c96a44f 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -829,6 +829,7 @@ static void alc_sku_automute(struct hda_codec *codec)
829 spec->jack_present ? 0 : PIN_OUT); 829 spec->jack_present ? 0 : PIN_OUT);
830} 830}
831 831
832#if 0 /* it's broken in some acses -- temporarily disabled */
832static void alc_mic_automute(struct hda_codec *codec) 833static void alc_mic_automute(struct hda_codec *codec)
833{ 834{
834 struct alc_spec *spec = codec->spec; 835 struct alc_spec *spec = codec->spec;
@@ -849,6 +850,9 @@ static void alc_mic_automute(struct hda_codec *codec)
849 snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, 850 snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic,
850 HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); 851 HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);
851} 852}
853#else
854#define alc_mic_automute(codec) /* NOP */
855#endif /* disabled */
852 856
853/* unsolicited event for HP jack sensing */ 857/* unsolicited event for HP jack sensing */
854static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) 858static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res)
@@ -1058,12 +1062,14 @@ do_sku:
1058 AC_VERB_SET_UNSOLICITED_ENABLE, 1062 AC_VERB_SET_UNSOLICITED_ENABLE,
1059 AC_USRSP_EN | ALC880_HP_EVENT); 1063 AC_USRSP_EN | ALC880_HP_EVENT);
1060 1064
1065#if 0 /* it's broken in some acses -- temporarily disabled */
1061 if (spec->autocfg.input_pins[AUTO_PIN_MIC] && 1066 if (spec->autocfg.input_pins[AUTO_PIN_MIC] &&
1062 spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) 1067 spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC])
1063 snd_hda_codec_write(codec, 1068 snd_hda_codec_write(codec,
1064 spec->autocfg.input_pins[AUTO_PIN_MIC], 0, 1069 spec->autocfg.input_pins[AUTO_PIN_MIC], 0,
1065 AC_VERB_SET_UNSOLICITED_ENABLE, 1070 AC_VERB_SET_UNSOLICITED_ENABLE,
1066 AC_USRSP_EN | ALC880_MIC_EVENT); 1071 AC_USRSP_EN | ALC880_MIC_EVENT);
1072#endif /* disabled */
1067 1073
1068 spec->unsol_event = alc_sku_unsol_event; 1074 spec->unsol_event = alc_sku_unsol_event;
1069} 1075}
@@ -8408,6 +8414,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = {
8408static struct snd_pci_quirk alc883_cfg_tbl[] = { 8414static struct snd_pci_quirk alc883_cfg_tbl[] = {
8409 SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG), 8415 SND_PCI_QUIRK(0x1019, 0x6668, "ECS", ALC883_3ST_6ch_DIG),
8410 SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE), 8416 SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_ACER_ASPIRE),
8417 SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_ACER_ASPIRE),
8411 SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE), 8418 SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE),
8412 SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE), 8419 SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE),
8413 SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE), 8420 SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE),
@@ -12238,8 +12245,26 @@ static int alc269_auto_create_multi_out_ctls(struct alc_spec *spec,
12238 return 0; 12245 return 0;
12239} 12246}
12240 12247
12241#define alc269_auto_create_analog_input_ctls \ 12248static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec,
12242 alc880_auto_create_analog_input_ctls 12249 const struct auto_pin_cfg *cfg)
12250{
12251 int err;
12252
12253 err = alc880_auto_create_analog_input_ctls(spec, cfg);
12254 if (err < 0)
12255 return err;
12256 /* digital-mic input pin is excluded in alc880_auto_create..()
12257 * because it's under 0x18
12258 */
12259 if (cfg->input_pins[AUTO_PIN_MIC] == 0x12 ||
12260 cfg->input_pins[AUTO_PIN_FRONT_MIC] == 0x12) {
12261 struct hda_input_mux *imux = &spec->private_imux;
12262 imux->items[imux->num_items].label = "Int Mic";
12263 imux->items[imux->num_items].index = 0x05;
12264 imux->num_items++;
12265 }
12266 return 0;
12267}
12243 12268
12244#ifdef CONFIG_SND_HDA_POWER_SAVE 12269#ifdef CONFIG_SND_HDA_POWER_SAVE
12245#define alc269_loopbacks alc880_loopbacks 12270#define alc269_loopbacks alc880_loopbacks
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index df9b0bc7f878..e6085915d86d 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -69,6 +69,7 @@ enum {
69enum { 69enum {
70 STAC_92HD73XX_REF, 70 STAC_92HD73XX_REF,
71 STAC_DELL_M6, 71 STAC_DELL_M6,
72 STAC_DELL_EQ,
72 STAC_92HD73XX_MODELS 73 STAC_92HD73XX_MODELS
73}; 74};
74 75
@@ -773,9 +774,7 @@ static struct hda_verb dell_eq_core_init[] = {
773}; 774};
774 775
775static struct hda_verb dell_m6_core_init[] = { 776static struct hda_verb dell_m6_core_init[] = {
776 /* set master volume to max value without distortion 777 { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
777 * and direct control */
778 { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xec},
779 /* setup audio connections */ 778 /* setup audio connections */
780 { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, 779 { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
781 { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, 780 { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01},
@@ -1600,11 +1599,13 @@ static unsigned int dell_m6_pin_configs[13] = {
1600static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { 1599static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = {
1601 [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, 1600 [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs,
1602 [STAC_DELL_M6] = dell_m6_pin_configs, 1601 [STAC_DELL_M6] = dell_m6_pin_configs,
1602 [STAC_DELL_EQ] = dell_m6_pin_configs,
1603}; 1603};
1604 1604
1605static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { 1605static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = {
1606 [STAC_92HD73XX_REF] = "ref", 1606 [STAC_92HD73XX_REF] = "ref",
1607 [STAC_DELL_M6] = "dell-m6", 1607 [STAC_DELL_M6] = "dell-m6",
1608 [STAC_DELL_EQ] = "dell-eq",
1608}; 1609};
1609 1610
1610static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { 1611static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
@@ -4131,12 +4132,17 @@ again:
4131 sizeof(stac92hd73xx_dmux)); 4132 sizeof(stac92hd73xx_dmux));
4132 4133
4133 switch (spec->board_config) { 4134 switch (spec->board_config) {
4134 case STAC_DELL_M6: 4135 case STAC_DELL_EQ:
4135 spec->init = dell_eq_core_init; 4136 spec->init = dell_eq_core_init;
4137 /* fallthru */
4138 case STAC_DELL_M6:
4136 spec->num_smuxes = 0; 4139 spec->num_smuxes = 0;
4137 spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; 4140 spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER];
4138 spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; 4141 spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP];
4139 spec->num_amps = 1; 4142 spec->num_amps = 1;
4143
4144 if (!spec->init)
4145 spec->init = dell_m6_core_init;
4140 switch (codec->subsystem_id) { 4146 switch (codec->subsystem_id) {
4141 case 0x1028025e: /* Analog Mics */ 4147 case 0x1028025e: /* Analog Mics */
4142 case 0x1028025f: 4148 case 0x1028025f:
@@ -4146,8 +4152,6 @@ again:
4146 break; 4152 break;
4147 case 0x10280271: /* Digital Mics */ 4153 case 0x10280271: /* Digital Mics */
4148 case 0x10280272: 4154 case 0x10280272:
4149 spec->init = dell_m6_core_init;
4150 /* fall-through */
4151 case 0x10280254: 4155 case 0x10280254:
4152 case 0x10280255: 4156 case 0x10280255:
4153 stac92xx_set_config_reg(codec, 0x13, 0x90A60160); 4157 stac92xx_set_config_reg(codec, 0x13, 0x90A60160);