Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32ed3f46 authored by Matt Ranostay's avatar Matt Ranostay Committed by Takashi Iwai
Browse files

ALSA: hda: Add STAC92HD83XXX_PWR_REF quirk



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: default avatarMatthew Ranostay <mranostay@embeddedalley.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 87e88a74
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -349,6 +349,7 @@ STAC92HD73*
STAC92HD83*
===========
  ref		Reference board
  mic-ref	Reference board with power managment for ports

STAC9872
========
+12 −7
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ enum {

enum {
	STAC_92HD83XXX_REF,
	STAC_92HD83XXX_PWR_REF,
	STAC_92HD83XXX_MODELS
};

@@ -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[] = {
@@ -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);
@@ -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) {