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

Commit 6b3ab21e authored by Matt Ranostay's avatar Matt Ranostay Committed by Takashi Iwai
Browse files

ALSA: hda: make a STAC_DELL_EQ option



Add support for explicitly enabling the EQ distortion hack for
systems without software biquad support.

Signed-off-by: default avatarMatthew Ranostay <mranostay@embeddedalley.com>
Cc: stable@kernel.org
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 69e50282
Loading
Loading
Loading
Loading
+10 −6
Original line number Original line Diff line number Diff line
@@ -69,6 +69,7 @@ enum {
enum {
enum {
	STAC_92HD73XX_REF,
	STAC_92HD73XX_REF,
	STAC_DELL_M6,
	STAC_DELL_M6,
	STAC_DELL_EQ,
	STAC_92HD73XX_MODELS
	STAC_92HD73XX_MODELS
};
};


@@ -773,9 +774,7 @@ static struct hda_verb dell_eq_core_init[] = {
};
};


static struct hda_verb dell_m6_core_init[] = {
static struct hda_verb dell_m6_core_init[] = {
	/* set master volume to max value without distortion
	{ 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
	 * and direct control */
	{ 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xec},
	/* setup audio connections */
	/* setup audio connections */
	{ 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
	{ 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
	{ 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01},
	{ 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01},
@@ -1600,11 +1599,13 @@ static unsigned int dell_m6_pin_configs[13] = {
static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = {
static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = {
	[STAC_92HD73XX_REF]	= ref92hd73xx_pin_configs,
	[STAC_92HD73XX_REF]	= ref92hd73xx_pin_configs,
	[STAC_DELL_M6]	= dell_m6_pin_configs,
	[STAC_DELL_M6]	= dell_m6_pin_configs,
	[STAC_DELL_EQ]	= dell_m6_pin_configs,
};
};


static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = {
static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = {
	[STAC_92HD73XX_REF] = "ref",
	[STAC_92HD73XX_REF] = "ref",
	[STAC_DELL_M6] = "dell-m6",
	[STAC_DELL_M6] = "dell-m6",
	[STAC_DELL_EQ] = "dell-eq",
};
};


static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = {
@@ -4131,12 +4132,17 @@ static int patch_stac92hd73xx(struct hda_codec *codec)
			sizeof(stac92hd73xx_dmux));
			sizeof(stac92hd73xx_dmux));


	switch (spec->board_config) {
	switch (spec->board_config) {
	case STAC_DELL_M6:
	case STAC_DELL_EQ:
		spec->init = dell_eq_core_init;
		spec->init = dell_eq_core_init;
		/* fallthru */
	case STAC_DELL_M6:
		spec->num_smuxes = 0;
		spec->num_smuxes = 0;
		spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER];
		spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER];
		spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP];
		spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP];
		spec->num_amps = 1;
		spec->num_amps = 1;

		if (!spec->init)
			spec->init = dell_m6_core_init;
		switch (codec->subsystem_id) {
		switch (codec->subsystem_id) {
		case 0x1028025e: /* Analog Mics */
		case 0x1028025e: /* Analog Mics */
		case 0x1028025f:
		case 0x1028025f:
@@ -4146,8 +4152,6 @@ static int patch_stac92hd73xx(struct hda_codec *codec)
			break;
			break;
		case 0x10280271: /* Digital Mics */
		case 0x10280271: /* Digital Mics */
		case 0x10280272:
		case 0x10280272:
			spec->init = dell_m6_core_init;
			/* fall-through */
		case 0x10280254:
		case 0x10280254:
		case 0x10280255:
		case 0x10280255:
			stac92xx_set_config_reg(codec, 0x13, 0x90A60160);
			stac92xx_set_config_reg(codec, 0x13, 0x90A60160);