From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Ranostay Subject: [PATCH] hda: Add logic to force HP mixer creation Date: Sun, 15 Feb 2009 11:01:01 -0500 Message-ID: <49983C3D.2000309@embeddedalley.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from easi.embeddedalley.com (easi.embeddedalley.com [71.6.201.124]) by alsa0.perex.cz (Postfix) with SMTP id 8B29E1037F5 for ; Sun, 15 Feb 2009 17:01:13 +0100 (CET) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: alsa-devel@alsa-project.org Cc: Takashi Iwai , Mario Limonciello List-Id: alsa-devel@alsa-project.org In some instances like a laptop PCI_QUIRK you may want to force a headphone mixer otherwise a "Front" mixer would be in its place, this is to aid user friendlyness. Signed-off-by: Matthew Ranostay --- sound/pci/hda/patch_sigmatel.c | 25 ++++++++++++++++++------- 1 files changed, 18 insertions(+), 7 deletions(-) diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index aeb5d21..e02a187 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -168,6 +168,7 @@ struct sigmatel_spec { unsigned int surr_switch: 1; unsigned int alt_switch: 1; unsigned int hp_detect: 1; + unsigned int hp_mixer: 1; unsigned int spdif_mute: 1; unsigned int check_volume_offset:1; @@ -857,9 +858,9 @@ static struct hda_verb stac92hd73xx_10ch_core_init[] = { }; static struct hda_verb stac92hd83xxx_core_init[] = { - { 0xa, AC_VERB_SET_CONNECT_SEL, 0x1}, - { 0xb, AC_VERB_SET_CONNECT_SEL, 0x1}, - { 0xd, AC_VERB_SET_CONNECT_SEL, 0x0}, + { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0}, + { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0}, + { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1}, /* power state controls amps */ { 0x01, AC_VERB_SET_EAPD, 1 << 2}, @@ -3115,12 +3116,12 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec, "Front", "Surround", NULL /*CLFE*/, "Side" }; hda_nid_t nid = 0; - int i, err; + int i, idx = 0, err; unsigned int wid_caps; for (i = 0; i < cfg->line_outs && spec->multiout.dac_nids[i]; i++) { nid = spec->multiout.dac_nids[i]; - if (i == 2) { + if (idx == 2) { /* Center/LFE */ err = create_controls(codec, "Center", nid, 1); if (err < 0) @@ -3139,9 +3140,9 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec, if (err < 0) return err; } - + idx++; } else { - const char *name = chname[i]; + const char *name = chname[idx]; /* if it's a single DAC, assign a better name */ if (!i && is_unique_dac(spec, nid)) { switch (cfg->line_out_type) { @@ -3153,6 +3154,10 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec, break; } } + if (!i && spec->hp_mixer) + name = "Headphone"; + else + idx++; err = create_controls(codec, name, nid, 3); if (err < 0) return err; @@ -4894,6 +4899,12 @@ again: break; } + switch (spec->board_config) { + case STAC_DELL_S14: + spec->hp_mixer = 1; + break; + } + err = stac92xx_parse_auto_config(codec, 0x1d, 0); if (!err) { if (spec->board_config < 0) { -- 1.5.6.3