b/sound/pci/hda/hda_auto_parser.c
@@ -952,6 +952,7 @@ void snd_hda_pick_fixup(struct hda_codec *codec,
const struct snd_pci_quirk *q;
int id = HDA_FIXUP_ID_NOT_SET;
const char *name = NULL;
+ int i;
if (codec->fixup_id != HDA_FIXUP_ID_NOT_SET)
return;
@@ -966,6 +967,9 @@ void snd_hda_pick_fixup(struct hda_codec *codec,
return;
}
+ if (!snd_hda_get_int_hint(codec, "alt_config", &i))
+ codec->alt_config = i;
+
if (codec->modelname && models) {
while (models->name) {
if (!strcmp(codec->modelname, models->name)) {
@@ -1914,6 +1914,31 @@ static void alc889_fixup_mba21_vref(struct hda_codec
*codec,
alc889_fixup_mac_pins(codec, nids, ARRAY_SIZE(nids));
}
+static void alc888_fixup_acer_aspire_4930g(struct hda_codec *codec,
+ const struct hda_fixup *fix, int action)
+{
+ struct hda_pintbl subwoofer_config[] = {
+ { 0x16, 0x90170111 }, /* internal subwoofer */
+ {}
+ };
+ struct hda_pintbl alt_config[] = {
+ { 0x15, 0x02014010},
+ { 0x1a, 0x02014011},
+ { 0x18, 0x02014012},
+ {}
+ };
+ snd_hda_apply_pincfgs(codec, subwoofer_config);
+ switch(codec->alt_config){
+ case 1:
+ codec_info(codec, "5.1 External Speaker\n");
+ snd_hda_apply_pincfgs(codec, alt_config);
+ break;
+ default:
+ codec_info(codec, "use [Hint]\nalt_config=1 for 5.1 External
Speaker\n");
+ break;
+ }
+}
+
/* Don't take HP output as primary