Commit f811c3cf authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Consolidate add_in_jack_modes and add_out_jack_modes hints

There is no big merit to distinguish these two hints.  Instead, just
have a single flag, add_jack_modes, for creating the jack mode enum
ctls for both I/O directions.

The hint string parser code is left and translated as add_jack_modes
just for keeping compatibility.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 3f550e32
...@@ -461,10 +461,9 @@ The generic parser supports the following hints: ...@@ -461,10 +461,9 @@ The generic parser supports the following hints:
the corresponding mixer control, if available the corresponding mixer control, if available
- add_stereo_mix_input (bool): add the stereo mix (analog-loopback - add_stereo_mix_input (bool): add the stereo mix (analog-loopback
mix) to the input mux if available mix) to the input mux if available
- add_out_jack_modes (bool): add "xxx Jack Mode" enum controls to each - add_jack_modes (bool): add "xxx Jack Mode" enum controls to each
output jack for allowing to change the headphone amp capability I/O jack for allowing to change the headphone amp and mic bias VREF
- add_in_jack_modes (bool): add "xxx Jack Mode" enum controls to each capabilities
input jack for allowing to change the mic bias vref
- power_down_unused (bool): power down the unused widgets - power_down_unused (bool): power down the unused widgets
- add_hp_mic (bool): add the headphone to capture source if possible - add_hp_mic (bool): add the headphone to capture source if possible
- hp_mic_detect (bool): enable/disable the hp/mic shared input for a - hp_mic_detect (bool): enable/disable the hp/mic shared input for a
......
...@@ -150,12 +150,16 @@ static void parse_user_hints(struct hda_codec *codec) ...@@ -150,12 +150,16 @@ static void parse_user_hints(struct hda_codec *codec)
val = snd_hda_get_bool_hint(codec, "add_stereo_mix_input"); val = snd_hda_get_bool_hint(codec, "add_stereo_mix_input");
if (val >= 0) if (val >= 0)
spec->add_stereo_mix_input = !!val; spec->add_stereo_mix_input = !!val;
/* the following two are just for compatibility */
val = snd_hda_get_bool_hint(codec, "add_out_jack_modes"); val = snd_hda_get_bool_hint(codec, "add_out_jack_modes");
if (val >= 0) if (val >= 0)
spec->add_out_jack_modes = !!val; spec->add_jack_modes = !!val;
val = snd_hda_get_bool_hint(codec, "add_in_jack_modes"); val = snd_hda_get_bool_hint(codec, "add_in_jack_modes");
if (val >= 0) if (val >= 0)
spec->add_in_jack_modes = !!val; spec->add_jack_modes = !!val;
val = snd_hda_get_bool_hint(codec, "add_jack_modes");
if (val >= 0)
spec->add_jack_modes = !!val;
val = snd_hda_get_bool_hint(codec, "power_down_unused"); val = snd_hda_get_bool_hint(codec, "power_down_unused");
if (val >= 0) if (val >= 0)
spec->power_down_unused = !!val; spec->power_down_unused = !!val;
...@@ -2373,7 +2377,7 @@ static void get_jack_mode_name(struct hda_codec *codec, hda_nid_t pin, ...@@ -2373,7 +2377,7 @@ static void get_jack_mode_name(struct hda_codec *codec, hda_nid_t pin,
static int get_out_jack_num_items(struct hda_codec *codec, hda_nid_t pin) static int get_out_jack_num_items(struct hda_codec *codec, hda_nid_t pin)
{ {
struct hda_gen_spec *spec = codec->spec; struct hda_gen_spec *spec = codec->spec;
if (spec->add_out_jack_modes) { if (spec->add_jack_modes) {
unsigned int pincap = snd_hda_query_pin_caps(codec, pin); unsigned int pincap = snd_hda_query_pin_caps(codec, pin);
if ((pincap & AC_PINCAP_OUT) && (pincap & AC_PINCAP_HP_DRV)) if ((pincap & AC_PINCAP_OUT) && (pincap & AC_PINCAP_HP_DRV))
return 2; return 2;
...@@ -2520,7 +2524,7 @@ static int get_in_jack_num_items(struct hda_codec *codec, hda_nid_t pin) ...@@ -2520,7 +2524,7 @@ static int get_in_jack_num_items(struct hda_codec *codec, hda_nid_t pin)
{ {
struct hda_gen_spec *spec = codec->spec; struct hda_gen_spec *spec = codec->spec;
int nitems = 0; int nitems = 0;
if (spec->add_in_jack_modes) if (spec->add_jack_modes)
nitems = hweight32(get_vref_caps(codec, pin)); nitems = hweight32(get_vref_caps(codec, pin));
return nitems ? nitems : 1; return nitems ? nitems : 1;
} }
...@@ -2532,14 +2536,8 @@ static int create_in_jack_mode(struct hda_codec *codec, hda_nid_t pin) ...@@ -2532,14 +2536,8 @@ static int create_in_jack_mode(struct hda_codec *codec, hda_nid_t pin)
char name[44]; char name[44];
unsigned int defcfg; unsigned int defcfg;
if (pin == spec->hp_mic_pin) { if (pin == spec->hp_mic_pin)
if (!spec->add_out_jack_modes) { return 0; /* already done in create_out_jack_mode() */
int ret = create_hp_mic_jack_mode(codec, pin);
if (ret < 0)
return ret;
}
return 0;
}
/* no jack mode for fixed pins */ /* no jack mode for fixed pins */
defcfg = snd_hda_codec_get_pincfg(codec, pin); defcfg = snd_hda_codec_get_pincfg(codec, pin);
...@@ -2981,7 +2979,7 @@ static int create_input_ctls(struct hda_codec *codec) ...@@ -2981,7 +2979,7 @@ static int create_input_ctls(struct hda_codec *codec)
if (err < 0) if (err < 0)
return err; return err;
if (spec->add_in_jack_modes) { if (spec->add_jack_modes) {
err = create_in_jack_mode(codec, pin); err = create_in_jack_mode(codec, pin);
if (err < 0) if (err < 0)
return err; return err;
...@@ -4215,7 +4213,7 @@ int snd_hda_gen_parse_auto_config(struct hda_codec *codec, ...@@ -4215,7 +4213,7 @@ int snd_hda_gen_parse_auto_config(struct hda_codec *codec,
if (err < 0) if (err < 0)
return err; return err;
if (spec->add_out_jack_modes) { if (spec->add_jack_modes) {
if (cfg->line_out_type != AUTO_PIN_SPEAKER_OUT) { if (cfg->line_out_type != AUTO_PIN_SPEAKER_OUT) {
err = create_out_jack_modes(codec, cfg->line_outs, err = create_out_jack_modes(codec, cfg->line_outs,
cfg->line_out_pins); cfg->line_out_pins);
......
...@@ -213,8 +213,7 @@ struct hda_gen_spec { ...@@ -213,8 +213,7 @@ struct hda_gen_spec {
unsigned int indep_hp:1; /* independent HP supported */ unsigned int indep_hp:1; /* independent HP supported */
unsigned int prefer_hp_amp:1; /* enable HP amp for speaker if any */ unsigned int prefer_hp_amp:1; /* enable HP amp for speaker if any */
unsigned int add_stereo_mix_input:1; /* add aamix as a capture src */ unsigned int add_stereo_mix_input:1; /* add aamix as a capture src */
unsigned int add_out_jack_modes:1; /* add output jack mode enum ctls */ unsigned int add_jack_modes:1; /* add i/o jack mode enum ctls */
unsigned int add_in_jack_modes:1; /* add input jack mode enum ctls */
unsigned int power_down_unused:1; /* power down unused widgets */ unsigned int power_down_unused:1; /* power down unused widgets */
/* other internal flags */ /* other internal flags */
......
...@@ -1526,8 +1526,7 @@ static void alc260_fixup_fsc_s7020_jwse(struct hda_codec *codec, ...@@ -1526,8 +1526,7 @@ static void alc260_fixup_fsc_s7020_jwse(struct hda_codec *codec,
{ {
struct alc_spec *spec = codec->spec; struct alc_spec *spec = codec->spec;
if (action == HDA_FIXUP_ACT_PRE_PROBE) { if (action == HDA_FIXUP_ACT_PRE_PROBE) {
spec->gen.add_out_jack_modes = 1; spec->gen.add_jack_modes = 1;
spec->gen.add_in_jack_modes = 1;
spec->gen.hp_mic = 1; spec->gen.hp_mic = 1;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment