Skip to content

Commit

Permalink
ALSA: hda: Add STAC92HD83XXX_PWR_REF quirk
Browse files Browse the repository at this point in the history
Some revisions of the 92hd8xxx codec's not supporting port power
downs in which the using of it causes capture and also randomly
playback streams to not function at all. Thus by disabling it by
default and adding a option to enable it manually will fix all issue
on current and future revisions.

Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Matthew Ranostay authored and Takashi Iwai committed Jan 23, 2009
1 parent 87e88a7 commit 32ed3f4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
1 change: 1 addition & 0 deletions Documentation/sound/alsa/HD-Audio-Models.txt
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,7 @@ STAC92HD73*
STAC92HD83*
===========
ref Reference board
mic-ref Reference board with power managment for ports

STAC9872
========
Expand Down
19 changes: 12 additions & 7 deletions sound/pci/hda/patch_sigmatel.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ enum {

enum {
STAC_92HD83XXX_REF,
STAC_92HD83XXX_PWR_REF,
STAC_92HD83XXX_MODELS
};

Expand Down Expand Up @@ -1734,10 +1735,12 @@ static unsigned int ref92hd83xxx_pin_configs[14] = {

static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = {
[STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs,
[STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs,
};

static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = {
[STAC_92HD83XXX_REF] = "ref",
[STAC_92HD83XXX_PWR_REF] = "mic-ref",
};

static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
Expand Down Expand Up @@ -4783,13 +4786,6 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
AC_VERB_SET_CONNECT_SEL, num_dacs);

spec->init = stac92hd83xxx_core_init;
switch (codec->vendor_id) {
case 0x111d7605:
break;
default:
spec->num_pwrs--;
}

spec->mixer = stac92hd83xxx_mixer;
spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids);
spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids);
Expand All @@ -4815,6 +4811,15 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
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);
if (!err) {
if (spec->board_config < 0) {
Expand Down

0 comments on commit 32ed3f4

Please sign in to comment.