diff options
-rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 19 |
2 files changed, 13 insertions, 7 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 64eb1100eec1..0f5d26bea80f 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -349,6 +349,7 @@ STAC92HD73* | |||
349 | STAC92HD83* | 349 | STAC92HD83* |
350 | =========== | 350 | =========== |
351 | ref Reference board | 351 | ref Reference board |
352 | mic-ref Reference board with power managment for ports | ||
352 | 353 | ||
353 | STAC9872 | 354 | STAC9872 |
354 | ======== | 355 | ======== |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index c553fdb2b149..3dd4eee70b7c 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -81,6 +81,7 @@ enum { | |||
81 | 81 | ||
82 | enum { | 82 | enum { |
83 | STAC_92HD83XXX_REF, | 83 | STAC_92HD83XXX_REF, |
84 | STAC_92HD83XXX_PWR_REF, | ||
84 | STAC_92HD83XXX_MODELS | 85 | STAC_92HD83XXX_MODELS |
85 | }; | 86 | }; |
86 | 87 | ||
@@ -1734,10 +1735,12 @@ static unsigned int ref92hd83xxx_pin_configs[14] = { | |||
1734 | 1735 | ||
1735 | static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = { | 1736 | static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = { |
1736 | [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs, | 1737 | [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs, |
1738 | [STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs, | ||
1737 | }; | 1739 | }; |
1738 | 1740 | ||
1739 | static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { | 1741 | static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { |
1740 | [STAC_92HD83XXX_REF] = "ref", | 1742 | [STAC_92HD83XXX_REF] = "ref", |
1743 | [STAC_92HD83XXX_PWR_REF] = "mic-ref", | ||
1741 | }; | 1744 | }; |
1742 | 1745 | ||
1743 | static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { | 1746 | static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { |
@@ -4783,13 +4786,6 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) | |||
4783 | AC_VERB_SET_CONNECT_SEL, num_dacs); | 4786 | AC_VERB_SET_CONNECT_SEL, num_dacs); |
4784 | 4787 | ||
4785 | spec->init = stac92hd83xxx_core_init; | 4788 | spec->init = stac92hd83xxx_core_init; |
4786 | switch (codec->vendor_id) { | ||
4787 | case 0x111d7605: | ||
4788 | break; | ||
4789 | default: | ||
4790 | spec->num_pwrs--; | ||
4791 | } | ||
4792 | |||
4793 | spec->mixer = stac92hd83xxx_mixer; | 4789 | spec->mixer = stac92hd83xxx_mixer; |
4794 | spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids); | 4790 | spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids); |
4795 | spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids); | 4791 | spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids); |
@@ -4815,6 +4811,15 @@ again: | |||
4815 | return err; | 4811 | return err; |
4816 | } | 4812 | } |
4817 | 4813 | ||
4814 | switch (codec->vendor_id) { | ||
4815 | case 0x111d7604: | ||
4816 | case 0x111d7605: | ||
4817 | if (spec->board_config == STAC_92HD83XXX_PWR_REF) | ||
4818 | break; | ||
4819 | spec->num_pwrs = 0; | ||
4820 | break; | ||
4821 | } | ||
4822 | |||
4818 | err = stac92xx_parse_auto_config(codec, 0x1d, 0); | 4823 | err = stac92xx_parse_auto_config(codec, 0x1d, 0); |
4819 | if (!err) { | 4824 | if (!err) { |
4820 | if (spec->board_config < 0) { | 4825 | if (spec->board_config < 0) { |