|
@@ -1614,6 +1614,7 @@ do_sku:
|
|
|
spec->init_amp = ALC_INIT_GPIO3;
|
|
|
break;
|
|
|
case 5:
|
|
|
+ default:
|
|
|
spec->init_amp = ALC_INIT_DEFAULT;
|
|
|
break;
|
|
|
}
|
|
@@ -2013,6 +2014,36 @@ static struct hda_verb alc888_acer_aspire_6530g_verbs[] = {
|
|
|
{ }
|
|
|
};
|
|
|
|
|
|
+/*
|
|
|
+ *ALC888 Acer Aspire 7730G model
|
|
|
+ */
|
|
|
+
|
|
|
+static struct hda_verb alc888_acer_aspire_7730G_verbs[] = {
|
|
|
+/* Bias voltage on for external mic port */
|
|
|
+ {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN | PIN_VREF80},
|
|
|
+/* Front Mic: set to PIN_IN (empty by default) */
|
|
|
+ {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
|
|
|
+/* Unselect Front Mic by default in input mixer 3 */
|
|
|
+ {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0xb)},
|
|
|
+/* Enable unsolicited event for HP jack */
|
|
|
+ {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
|
|
|
+/* Enable speaker output */
|
|
|
+ {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
|
|
|
+ {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
|
|
|
+ {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2},
|
|
|
+/* Enable headphone output */
|
|
|
+ {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | PIN_HP},
|
|
|
+ {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
|
|
|
+ {0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
|
|
|
+ {0x15, AC_VERB_SET_EAPD_BTLENABLE, 2},
|
|
|
+/*Enable internal subwoofer */
|
|
|
+ {0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
|
|
|
+ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
|
|
|
+ {0x17, AC_VERB_SET_CONNECT_SEL, 0x02},
|
|
|
+ {0x17, AC_VERB_SET_EAPD_BTLENABLE, 2},
|
|
|
+ { }
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* ALC889 Acer Aspire 8930G model
|
|
|
*/
|
|
@@ -2200,6 +2231,16 @@ static void alc888_acer_aspire_6530g_setup(struct hda_codec *codec)
|
|
|
spec->autocfg.speaker_pins[2] = 0x17;
|
|
|
}
|
|
|
|
|
|
+static void alc888_acer_aspire_7730g_setup(struct hda_codec *codec)
|
|
|
+{
|
|
|
+ struct alc_spec *spec = codec->spec;
|
|
|
+
|
|
|
+ spec->autocfg.hp_pins[0] = 0x15;
|
|
|
+ spec->autocfg.speaker_pins[0] = 0x14;
|
|
|
+ spec->autocfg.speaker_pins[1] = 0x16;
|
|
|
+ spec->autocfg.speaker_pins[2] = 0x17;
|
|
|
+}
|
|
|
+
|
|
|
static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec)
|
|
|
{
|
|
|
struct alc_spec *spec = codec->spec;
|
|
@@ -9524,13 +9565,6 @@ static struct hda_verb alc883_acer_eapd_verbs[] = {
|
|
|
{ }
|
|
|
};
|
|
|
|
|
|
-static struct hda_verb alc888_acer_aspire_7730G_verbs[] = {
|
|
|
- {0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
|
|
|
- {0x17, AC_VERB_SET_CONNECT_SEL, 0x02},
|
|
|
- {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
|
|
|
- { } /* end */
|
|
|
-};
|
|
|
-
|
|
|
static void alc888_6st_dell_setup(struct hda_codec *codec)
|
|
|
{
|
|
|
struct alc_spec *spec = codec->spec;
|
|
@@ -10328,7 +10362,7 @@ static struct alc_config_preset alc882_presets[] = {
|
|
|
.const_channel_count = 6,
|
|
|
.input_mux = &alc883_capture_source,
|
|
|
.unsol_event = alc_automute_amp_unsol_event,
|
|
|
- .setup = alc888_acer_aspire_6530g_setup,
|
|
|
+ .setup = alc888_acer_aspire_7730g_setup,
|
|
|
.init_hook = alc_automute_amp,
|
|
|
},
|
|
|
[ALC883_MEDION] = {
|
|
@@ -16910,7 +16944,7 @@ static struct alc_config_preset alc861vd_presets[] = {
|
|
|
static int alc861vd_auto_create_input_ctls(struct hda_codec *codec,
|
|
|
const struct auto_pin_cfg *cfg)
|
|
|
{
|
|
|
- return alc_auto_create_input_ctls(codec, cfg, 0x15, 0x09, 0);
|
|
|
+ return alc_auto_create_input_ctls(codec, cfg, 0x0b, 0x22, 0);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -18964,6 +18998,8 @@ static inline hda_nid_t alc662_mix_to_dac(hda_nid_t nid)
|
|
|
return 0x02;
|
|
|
else if (nid >= 0x0c && nid <= 0x0e)
|
|
|
return nid - 0x0c + 0x02;
|
|
|
+ else if (nid == 0x26) /* ALC887-VD has this DAC too */
|
|
|
+ return 0x25;
|
|
|
else
|
|
|
return 0;
|
|
|
}
|
|
@@ -18972,7 +19008,7 @@ static inline hda_nid_t alc662_mix_to_dac(hda_nid_t nid)
|
|
|
static hda_nid_t alc662_dac_to_mix(struct hda_codec *codec, hda_nid_t pin,
|
|
|
hda_nid_t dac)
|
|
|
{
|
|
|
- hda_nid_t mix[4];
|
|
|
+ hda_nid_t mix[5];
|
|
|
int i, num;
|
|
|
|
|
|
num = snd_hda_get_connections(codec, pin, mix, ARRAY_SIZE(mix));
|