diff options
-rw-r--r-- | Documentation/sound/alsa/HD-Audio.txt | 7 | ||||
-rw-r--r-- | sound/pci/hda/hda_generic.c | 26 | ||||
-rw-r--r-- | sound/pci/hda/hda_generic.h | 3 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 3 |
4 files changed, 17 insertions, 22 deletions
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt index 77e176a35ce1..c3c912d023cc 100644 --- a/Documentation/sound/alsa/HD-Audio.txt +++ b/Documentation/sound/alsa/HD-Audio.txt | |||
@@ -461,10 +461,9 @@ The generic parser supports the following hints: | |||
461 | the corresponding mixer control, if available | 461 | the corresponding mixer control, if available |
462 | - add_stereo_mix_input (bool): add the stereo mix (analog-loopback | 462 | - add_stereo_mix_input (bool): add the stereo mix (analog-loopback |
463 | mix) to the input mux if available | 463 | mix) to the input mux if available |
464 | - add_out_jack_modes (bool): add "xxx Jack Mode" enum controls to each | 464 | - add_jack_modes (bool): add "xxx Jack Mode" enum controls to each |
465 | output jack for allowing to change the headphone amp capability | 465 | I/O jack for allowing to change the headphone amp and mic bias VREF |
466 | - add_in_jack_modes (bool): add "xxx Jack Mode" enum controls to each | 466 | capabilities |
467 | input jack for allowing to change the mic bias vref | ||
468 | - power_down_unused (bool): power down the unused widgets | 467 | - power_down_unused (bool): power down the unused widgets |
469 | - add_hp_mic (bool): add the headphone to capture source if possible | 468 | - add_hp_mic (bool): add the headphone to capture source if possible |
470 | - hp_mic_detect (bool): enable/disable the hp/mic shared input for a | 469 | - hp_mic_detect (bool): enable/disable the hp/mic shared input for a |
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index cb40a0b7ce3e..c8791225b2ba 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c | |||
@@ -150,12 +150,16 @@ static void parse_user_hints(struct hda_codec *codec) | |||
150 | val = snd_hda_get_bool_hint(codec, "add_stereo_mix_input"); | 150 | val = snd_hda_get_bool_hint(codec, "add_stereo_mix_input"); |
151 | if (val >= 0) | 151 | if (val >= 0) |
152 | spec->add_stereo_mix_input = !!val; | 152 | spec->add_stereo_mix_input = !!val; |
153 | /* the following two are just for compatibility */ | ||
153 | val = snd_hda_get_bool_hint(codec, "add_out_jack_modes"); | 154 | val = snd_hda_get_bool_hint(codec, "add_out_jack_modes"); |
154 | if (val >= 0) | 155 | if (val >= 0) |
155 | spec->add_out_jack_modes = !!val; | 156 | spec->add_jack_modes = !!val; |
156 | val = snd_hda_get_bool_hint(codec, "add_in_jack_modes"); | 157 | val = snd_hda_get_bool_hint(codec, "add_in_jack_modes"); |
157 | if (val >= 0) | 158 | if (val >= 0) |
158 | spec->add_in_jack_modes = !!val; | 159 | spec->add_jack_modes = !!val; |
160 | val = snd_hda_get_bool_hint(codec, "add_jack_modes"); | ||
161 | if (val >= 0) | ||
162 | spec->add_jack_modes = !!val; | ||
159 | val = snd_hda_get_bool_hint(codec, "power_down_unused"); | 163 | val = snd_hda_get_bool_hint(codec, "power_down_unused"); |
160 | if (val >= 0) | 164 | if (val >= 0) |
161 | spec->power_down_unused = !!val; | 165 | spec->power_down_unused = !!val; |
@@ -2373,7 +2377,7 @@ static void get_jack_mode_name(struct hda_codec *codec, hda_nid_t pin, | |||
2373 | static int get_out_jack_num_items(struct hda_codec *codec, hda_nid_t pin) | 2377 | static int get_out_jack_num_items(struct hda_codec *codec, hda_nid_t pin) |
2374 | { | 2378 | { |
2375 | struct hda_gen_spec *spec = codec->spec; | 2379 | struct hda_gen_spec *spec = codec->spec; |
2376 | if (spec->add_out_jack_modes) { | 2380 | if (spec->add_jack_modes) { |
2377 | unsigned int pincap = snd_hda_query_pin_caps(codec, pin); | 2381 | unsigned int pincap = snd_hda_query_pin_caps(codec, pin); |
2378 | if ((pincap & AC_PINCAP_OUT) && (pincap & AC_PINCAP_HP_DRV)) | 2382 | if ((pincap & AC_PINCAP_OUT) && (pincap & AC_PINCAP_HP_DRV)) |
2379 | return 2; | 2383 | return 2; |
@@ -2520,7 +2524,7 @@ static int get_in_jack_num_items(struct hda_codec *codec, hda_nid_t pin) | |||
2520 | { | 2524 | { |
2521 | struct hda_gen_spec *spec = codec->spec; | 2525 | struct hda_gen_spec *spec = codec->spec; |
2522 | int nitems = 0; | 2526 | int nitems = 0; |
2523 | if (spec->add_in_jack_modes) | 2527 | if (spec->add_jack_modes) |
2524 | nitems = hweight32(get_vref_caps(codec, pin)); | 2528 | nitems = hweight32(get_vref_caps(codec, pin)); |
2525 | return nitems ? nitems : 1; | 2529 | return nitems ? nitems : 1; |
2526 | } | 2530 | } |
@@ -2532,14 +2536,8 @@ static int create_in_jack_mode(struct hda_codec *codec, hda_nid_t pin) | |||
2532 | char name[44]; | 2536 | char name[44]; |
2533 | unsigned int defcfg; | 2537 | unsigned int defcfg; |
2534 | 2538 | ||
2535 | if (pin == spec->hp_mic_pin) { | 2539 | if (pin == spec->hp_mic_pin) |
2536 | if (!spec->add_out_jack_modes) { | 2540 | return 0; /* already done in create_out_jack_mode() */ |
2537 | int ret = create_hp_mic_jack_mode(codec, pin); | ||
2538 | if (ret < 0) | ||
2539 | return ret; | ||
2540 | } | ||
2541 | return 0; | ||
2542 | } | ||
2543 | 2541 | ||
2544 | /* no jack mode for fixed pins */ | 2542 | /* no jack mode for fixed pins */ |
2545 | defcfg = snd_hda_codec_get_pincfg(codec, pin); | 2543 | defcfg = snd_hda_codec_get_pincfg(codec, pin); |
@@ -2981,7 +2979,7 @@ static int create_input_ctls(struct hda_codec *codec) | |||
2981 | if (err < 0) | 2979 | if (err < 0) |
2982 | return err; | 2980 | return err; |
2983 | 2981 | ||
2984 | if (spec->add_in_jack_modes) { | 2982 | if (spec->add_jack_modes) { |
2985 | err = create_in_jack_mode(codec, pin); | 2983 | err = create_in_jack_mode(codec, pin); |
2986 | if (err < 0) | 2984 | if (err < 0) |
2987 | return err; | 2985 | return err; |
@@ -4215,7 +4213,7 @@ int snd_hda_gen_parse_auto_config(struct hda_codec *codec, | |||
4215 | if (err < 0) | 4213 | if (err < 0) |
4216 | return err; | 4214 | return err; |
4217 | 4215 | ||
4218 | if (spec->add_out_jack_modes) { | 4216 | if (spec->add_jack_modes) { |
4219 | if (cfg->line_out_type != AUTO_PIN_SPEAKER_OUT) { | 4217 | if (cfg->line_out_type != AUTO_PIN_SPEAKER_OUT) { |
4220 | err = create_out_jack_modes(codec, cfg->line_outs, | 4218 | err = create_out_jack_modes(codec, cfg->line_outs, |
4221 | cfg->line_out_pins); | 4219 | cfg->line_out_pins); |
diff --git a/sound/pci/hda/hda_generic.h b/sound/pci/hda/hda_generic.h index 7ee5b57946c9..984bf301ebbb 100644 --- a/sound/pci/hda/hda_generic.h +++ b/sound/pci/hda/hda_generic.h | |||
@@ -213,8 +213,7 @@ struct hda_gen_spec { | |||
213 | unsigned int indep_hp:1; /* independent HP supported */ | 213 | unsigned int indep_hp:1; /* independent HP supported */ |
214 | unsigned int prefer_hp_amp:1; /* enable HP amp for speaker if any */ | 214 | unsigned int prefer_hp_amp:1; /* enable HP amp for speaker if any */ |
215 | unsigned int add_stereo_mix_input:1; /* add aamix as a capture src */ | 215 | unsigned int add_stereo_mix_input:1; /* add aamix as a capture src */ |
216 | unsigned int add_out_jack_modes:1; /* add output jack mode enum ctls */ | 216 | unsigned int add_jack_modes:1; /* add i/o jack mode enum ctls */ |
217 | unsigned int add_in_jack_modes:1; /* add input jack mode enum ctls */ | ||
218 | unsigned int power_down_unused:1; /* power down unused widgets */ | 217 | unsigned int power_down_unused:1; /* power down unused widgets */ |
219 | 218 | ||
220 | /* other internal flags */ | 219 | /* other internal flags */ |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 056990e5ffe9..f772585c89ba 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -1526,8 +1526,7 @@ static void alc260_fixup_fsc_s7020_jwse(struct hda_codec *codec, | |||
1526 | { | 1526 | { |
1527 | struct alc_spec *spec = codec->spec; | 1527 | struct alc_spec *spec = codec->spec; |
1528 | if (action == HDA_FIXUP_ACT_PRE_PROBE) { | 1528 | if (action == HDA_FIXUP_ACT_PRE_PROBE) { |
1529 | spec->gen.add_out_jack_modes = 1; | 1529 | spec->gen.add_jack_modes = 1; |
1530 | spec->gen.add_in_jack_modes = 1; | ||
1531 | spec->gen.hp_mic = 1; | 1530 | spec->gen.hp_mic = 1; |
1532 | } | 1531 | } |
1533 | } | 1532 | } |