Bladeren bron

Merge branch 'fix/hda' into topic/hda

Takashi Iwai 16 jaren geleden
bovenliggende
commit
7907f6a411
2 gewijzigde bestanden met toevoegingen van 14 en 8 verwijderingen
  1. 1 0
      Documentation/sound/alsa/HD-Audio-Models.txt
  2. 13 8
      sound/pci/hda/patch_sigmatel.c

+ 1 - 0
Documentation/sound/alsa/HD-Audio-Models.txt

@@ -350,6 +350,7 @@ STAC92HD73*
 STAC92HD83*
 STAC92HD83*
 ===========
 ===========
   ref		Reference board
   ref		Reference board
+  mic-ref	Reference board with power managment for ports
 
 
 STAC9872
 STAC9872
 ========
 ========

+ 13 - 8
sound/pci/hda/patch_sigmatel.c

@@ -82,6 +82,7 @@ enum {
 
 
 enum {
 enum {
 	STAC_92HD83XXX_REF,
 	STAC_92HD83XXX_REF,
+	STAC_92HD83XXX_PWR_REF,
 	STAC_92HD83XXX_MODELS
 	STAC_92HD83XXX_MODELS
 };
 };
 
 
@@ -338,7 +339,7 @@ static hda_nid_t stac92hd83xxx_slave_dig_outs[2] = {
 };
 };
 
 
 static unsigned int stac92hd83xxx_pwr_mapping[4] = {
 static unsigned int stac92hd83xxx_pwr_mapping[4] = {
-	0x03, 0x0c, 0x20, 0x80,
+	0x03, 0x0c, 0x20, 0x40,
 };
 };
 
 
 static hda_nid_t stac92hd83xxx_amp_nids[1] = {
 static hda_nid_t stac92hd83xxx_amp_nids[1] = {
@@ -1740,10 +1741,12 @@ static unsigned int ref92hd83xxx_pin_configs[14] = {
 
 
 static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = {
 static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = {
 	[STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs,
 	[STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs,
+	[STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs,
 };
 };
 
 
 static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = {
 static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = {
 	[STAC_92HD83XXX_REF] = "ref",
 	[STAC_92HD83XXX_REF] = "ref",
+	[STAC_92HD83XXX_PWR_REF] = "mic-ref",
 };
 };
 
 
 static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
 static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
@@ -4820,13 +4823,6 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
 		AC_VERB_SET_CONNECT_SEL, num_dacs);
 		AC_VERB_SET_CONNECT_SEL, num_dacs);
 
 
 	spec->init = stac92hd83xxx_core_init;
 	spec->init = stac92hd83xxx_core_init;
-	switch (codec->vendor_id) {
-	case 0x111d7605:
-		break;
-	default:
-		spec->num_pwrs--;
-	}
-
 	spec->mixer = stac92hd83xxx_mixer;
 	spec->mixer = stac92hd83xxx_mixer;
 	spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids);
 	spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids);
 	spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids);
 	spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids);
@@ -4852,6 +4848,15 @@ again:
 		return err;
 		return err;
 	}
 	}
 
 
+	switch (codec->vendor_id) {
+	case 0x111d7604:
+	case 0x111d7605:
+		if (spec->board_config == STAC_92HD83XXX_PWR_REF)
+			break;
+		spec->num_pwrs = 0;
+		break;
+	}
+
 	err = stac92xx_parse_auto_config(codec, 0x1d, 0);
 	err = stac92xx_parse_auto_config(codec, 0x1d, 0);
 	if (!err) {
 	if (!err) {
 		if (spec->board_config < 0) {
 		if (spec->board_config < 0) {