diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-09-21 05:56:18 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-09-23 04:48:01 -0400 |
commit | 314634bc81325dcfeb31ed138647d428b1f26cbf (patch) | |
tree | 9a230e872a69e13d026eae4cb247b1447b14c88f /sound/pci/hda/hda_codec.c | |
parent | 7ffffecc7c4df08ad89723ca32d936ff09b5b3ff (diff) |
[ALSA] hda-codec - Fix mic input with STAC92xx codecs
Fixed mic input with STAC92xx codecs. The mic pin was sometimes set to
OUTPUT by the headphone jack detection.
Also, try to assign a secondary mic as front-mic (or vice versa)
in the auto-detection if possible.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/hda/hda_codec.c')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 07360996caaa..9c3d7ac08068 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -2079,12 +2079,21 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec, struct auto_pin_cfg *c | |||
2079 | cfg->hp_pins[cfg->hp_outs] = nid; | 2079 | cfg->hp_pins[cfg->hp_outs] = nid; |
2080 | cfg->hp_outs++; | 2080 | cfg->hp_outs++; |
2081 | break; | 2081 | break; |
2082 | case AC_JACK_MIC_IN: | 2082 | case AC_JACK_MIC_IN: { |
2083 | if (loc == AC_JACK_LOC_FRONT) | 2083 | int preferred, alt; |
2084 | cfg->input_pins[AUTO_PIN_FRONT_MIC] = nid; | 2084 | if (loc == AC_JACK_LOC_FRONT) { |
2085 | else | 2085 | preferred = AUTO_PIN_FRONT_MIC; |
2086 | cfg->input_pins[AUTO_PIN_MIC] = nid; | 2086 | alt = AUTO_PIN_MIC; |
2087 | } else { | ||
2088 | preferred = AUTO_PIN_MIC; | ||
2089 | alt = AUTO_PIN_FRONT_MIC; | ||
2090 | } | ||
2091 | if (!cfg->input_pins[preferred]) | ||
2092 | cfg->input_pins[preferred] = nid; | ||
2093 | else if (!cfg->input_pins[alt]) | ||
2094 | cfg->input_pins[alt] = nid; | ||
2087 | break; | 2095 | break; |
2096 | } | ||
2088 | case AC_JACK_LINE_IN: | 2097 | case AC_JACK_LINE_IN: |
2089 | if (loc == AC_JACK_LOC_FRONT) | 2098 | if (loc == AC_JACK_LOC_FRONT) |
2090 | cfg->input_pins[AUTO_PIN_FRONT_LINE] = nid; | 2099 | cfg->input_pins[AUTO_PIN_FRONT_LINE] = nid; |