Lines Matching refs:pin
208 #define update_pin_ctl(codec, pin, val) \ argument
209 snd_hda_codec_update_cache(codec, pin, 0, \
213 static inline void restore_pin_ctl(struct hda_codec *codec, hda_nid_t pin) in restore_pin_ctl() argument
215 update_pin_ctl(codec, pin, snd_hda_codec_get_pin_target(codec, pin)); in restore_pin_ctl()
219 static void set_pin_target(struct hda_codec *codec, hda_nid_t pin, in set_pin_target() argument
222 if (!pin) in set_pin_target()
224 val = snd_hda_correct_pin_ctl(codec, pin, val); in set_pin_target()
225 snd_hda_codec_set_pin_target(codec, pin, val); in set_pin_target()
227 update_pin_ctl(codec, pin, val); in set_pin_target()
533 static hda_nid_t get_preferred_dac(struct hda_codec *codec, hda_nid_t pin) in get_preferred_dac() argument
541 if (*list == pin) in get_preferred_dac()
547 static hda_nid_t look_for_dac(struct hda_codec *codec, hda_nid_t pin, in look_for_dac() argument
561 if (is_reachable_path(codec, nid, pin)) in look_for_dac()
935 static void set_pin_eapd(struct hda_codec *codec, hda_nid_t pin, bool enable) in set_pin_eapd() argument
939 !(snd_hda_query_pin_caps(codec, pin) & AC_PINCAP_EAPD)) in set_pin_eapd()
945 snd_hda_codec_update_cache(codec, pin, 0, in set_pin_eapd()
1324 hda_nid_t dac, hda_nid_t pin) in try_dac() argument
1326 return is_reachable_path(codec, dac, pin) ? dac : 0; in try_dac()
1345 hda_nid_t pin = pins[i]; in try_assign_dacs() local
1353 dacs[i] = get_preferred_dac(codec, pin); in try_assign_dacs()
1360 dacs[i] = look_for_dac(codec, pin, false); in try_assign_dacs()
1364 if (is_reachable_path(codec, dacs[j], pin)) { in try_assign_dacs()
1376 dac = try_dac(codec, get_primary_out(codec, i), pin); in try_assign_dacs()
1378 dac = try_dac(codec, dacs[0], pin); in try_assign_dacs()
1380 dac = try_dac(codec, get_primary_out(codec, i), pin); in try_assign_dacs()
1388 } else if (is_reachable_path(codec, spec->private_dac_nids[0], pin)) { in try_assign_dacs()
1398 path = snd_hda_add_new_path(codec, dac, pin, -spec->mixer_nid); in try_assign_dacs()
1401 path = snd_hda_add_new_path(codec, dac, pin, 0); in try_assign_dacs()
1418 static hda_nid_t get_dac_if_single(struct hda_codec *codec, hda_nid_t pin) in get_dac_if_single() argument
1428 if (is_reachable_path(codec, nid, pin)) { in get_dac_if_single()
1469 cfg->inputs[i].pin)) in count_multiio_pins()
1506 hda_nid_t nid = cfg->inputs[i].pin; in fill_multi_ios()
1514 if (nid == spec->multi_io[j].pin) in fill_multi_ios()
1535 spec->multi_io[spec->multi_ios].pin = nid; in fill_multi_ios()
1610 hda_nid_t path_dac, dac, pin; in check_aamix_out_path() local
1618 pin = path->path[path->depth - 1]; in check_aamix_out_path()
1619 path = snd_hda_add_new_path(codec, dac, pin, spec->mixer_nid); in check_aamix_out_path()
1630 path = snd_hda_add_new_path(codec, dac, pin, in check_aamix_out_path()
1891 spec->multi_io[0].pin, spec->multi_io[1].pin, in debug_show_configs()
2334 hda_nid_t nid = spec->multi_io[idx].pin; in set_multi_io()
2531 hda_nid_t pin; in update_hp_mic() local
2533 pin = spec->hp_mic_pin; in update_hp_mic()
2537 val = snd_hda_codec_get_pin_target(codec, pin); in update_hp_mic()
2547 val = snd_hda_get_default_vref(codec, pin); in update_hp_mic()
2564 set_pin_target(codec, pin, val, true); in update_hp_mic()
2586 defcfg = snd_hda_codec_get_pincfg(codec, cfg->inputs[0].pin); in create_hp_mic()
2607 cfg->inputs[cfg->num_inputs].pin = nid; in create_hp_mic()
2623 static int create_hp_mic_jack_mode(struct hda_codec *codec, hda_nid_t pin);
2681 static void get_jack_mode_name(struct hda_codec *codec, hda_nid_t pin, in get_jack_mode_name() argument
2687 snd_hda_get_pin_label(codec, pin, &spec->autocfg, name, name_len, &idx); in get_jack_mode_name()
2694 static int get_out_jack_num_items(struct hda_codec *codec, hda_nid_t pin) in get_out_jack_num_items() argument
2698 unsigned int pincap = snd_hda_query_pin_caps(codec, pin); in get_out_jack_num_items()
2712 hda_nid_t pin = pins[i]; in create_out_jack_modes() local
2713 if (pin == spec->hp_mic_pin) in create_out_jack_modes()
2715 if (get_out_jack_num_items(codec, pin) > 1) { in create_out_jack_modes()
2718 get_jack_mode_name(codec, pin, name, sizeof(name)); in create_out_jack_modes()
2723 knew->private_value = pin; in create_out_jack_modes()
2742 static unsigned int get_vref_caps(struct hda_codec *codec, hda_nid_t pin) in get_vref_caps() argument
2746 pincap = snd_hda_query_pin_caps(codec, pin); in get_vref_caps()
2836 static int get_in_jack_num_items(struct hda_codec *codec, hda_nid_t pin) in get_in_jack_num_items() argument
2841 nitems = hweight32(get_vref_caps(codec, pin)); in get_in_jack_num_items()
2845 static int create_in_jack_mode(struct hda_codec *codec, hda_nid_t pin) in create_in_jack_mode() argument
2852 if (pin == spec->hp_mic_pin) in create_in_jack_mode()
2856 defcfg = snd_hda_codec_get_pincfg(codec, pin); in create_in_jack_mode()
2861 if (get_in_jack_num_items(codec, pin) <= 1) in create_in_jack_mode()
2864 get_jack_mode_name(codec, pin, name, sizeof(name)); in create_in_jack_mode()
2868 knew->private_value = pin; in create_in_jack_mode()
2982 static int create_hp_mic_jack_mode(struct hda_codec *codec, hda_nid_t pin) in create_hp_mic_jack_mode() argument
2991 knew->private_value = pin; in create_hp_mic_jack_mode()
3019 hda_nid_t pin, unsigned int *mix_val, in look_for_mix_leaf_ctls() argument
3026 idx = snd_hda_get_conn_index(codec, mix_nid, pin, true); in look_for_mix_leaf_ctls()
3055 hda_nid_t pin, const char *ctlname, int ctlidx, in new_analog_input() argument
3063 if (!look_for_mix_leaf_ctls(codec, mix_nid, pin, &mix_val, &mute_val)) in new_analog_input()
3066 path = snd_hda_add_new_path(codec, pin, mix_nid, 0); in new_analog_input()
3214 static int parse_capture_source(struct hda_codec *codec, hda_nid_t pin, in parse_capture_source() argument
3228 if (!is_reachable_path(codec, pin, adc)) in parse_capture_source()
3230 path = snd_hda_add_new_path(codec, pin, adc, anchor); in parse_capture_source()
3238 if (spec->hp_mic_pin == pin) in parse_capture_source()
3240 spec->imux_pins[imux->num_items] = pin; in parse_capture_source()
3263 hda_nid_t pin = cfg->inputs[i].pin; in fill_input_pin_labels() local
3267 if (!is_input_pin(codec, pin)) in fill_input_pin_labels()
3307 hda_nid_t pin; in create_input_ctls() local
3309 pin = cfg->inputs[i].pin; in create_input_ctls()
3310 if (!is_input_pin(codec, pin)) in create_input_ctls()
3315 val |= snd_hda_get_default_vref(codec, pin); in create_input_ctls()
3316 if (pin != spec->hp_mic_pin && in create_input_ctls()
3317 !snd_hda_codec_get_pin_target(codec, pin)) in create_input_ctls()
3318 set_pin_target(codec, pin, val, false); in create_input_ctls()
3321 if (is_reachable_path(codec, pin, mixer)) { in create_input_ctls()
3322 err = new_analog_input(codec, i, pin, in create_input_ctls()
3331 err = parse_capture_source(codec, pin, i, num_adcs, in create_input_ctls()
3337 err = create_in_jack_mode(codec, pin); in create_input_ctls()
3548 if (cfg->inputs[i].pin != nid) in is_inv_dmic_pin()
3881 hda_nid_t dig_nid, pin; in parse_digital() local
3886 pin = spec->autocfg.dig_out_pins[i]; in parse_digital()
3887 dig_nid = look_for_dac(codec, pin, true); in parse_digital()
3890 path = snd_hda_add_new_path(codec, dig_nid, pin, 0); in parse_digital()
3897 set_pin_target(codec, pin, PIN_OUT, false); in parse_digital()
3911 pin = spec->autocfg.dig_in_pin; in parse_digital()
3918 path = snd_hda_add_new_path(codec, pin, dig_nid, 0); in parse_digital()
3925 set_pin_target(codec, pin, PIN_IN, false); in parse_digital()
4018 static bool detect_pin_state(struct hda_codec *codec, hda_nid_t pin) in detect_pin_state() argument
4020 if (!is_jack_detectable(codec, pin)) in detect_pin_state()
4022 return snd_hda_jack_detect_state(codec, pin) != HDA_JACK_NOT_PRESENT; in detect_pin_state()
4031 static hda_nid_t set_pin_power_jack(struct hda_codec *codec, hda_nid_t pin, in set_pin_power_jack() argument
4039 on = detect_pin_state(codec, pin); in set_pin_power_jack()
4043 return set_path_power(codec, pin, on, -1); in set_pin_power_jack()
4102 add_pin_power_ctls(codec, 1, &cfg->inputs[i].pin, on); in add_all_pin_power_ctls()
4131 sync_pin_power_ctls(codec, 1, &cfg->inputs[i].pin); in sync_all_pin_power_ctls()
4197 int snd_hda_gen_fix_pin_power(struct hda_codec *codec, hda_nid_t pin) in snd_hda_gen_fix_pin_power() argument
4207 path->path[0] = pin; in snd_hda_gen_fix_pin_power()
4429 hda_nid_t pin = spec->am_entry[i].pin; in snd_hda_gen_mic_autoswitch() local
4431 if (snd_hda_codec_get_pin_target(codec, pin) & AC_PINCTL_OUT_EN) in snd_hda_gen_mic_autoswitch()
4433 if (snd_hda_jack_detect_state(codec, pin) == HDA_JACK_PRESENT) { in snd_hda_gen_mic_autoswitch()
4657 find_idx_in_nid_list(spec->am_entry[i].pin, in auto_mic_check_imux()
4666 spec->am_entry[i].pin, in auto_mic_check_imux()
4695 hda_nid_t nid = cfg->inputs[i].pin; in check_auto_mic_availability()
4721 spec->am_entry[num_pins].pin = nid; in check_auto_mic_availability()
4743 spec->am_entry[0].pin, in check_auto_mic_availability()
4744 spec->am_entry[1].pin, in check_auto_mic_availability()
4745 spec->am_entry[2].pin); in check_auto_mic_availability()
5647 hda_nid_t pin; in set_output_and_unmute() local
5652 pin = path->path[path->depth - 1]; in set_output_and_unmute()
5653 restore_pin_ctl(codec, pin); in set_output_and_unmute()
5656 set_pin_eapd(codec, pin, path->active); in set_output_and_unmute()
5697 hda_nid_t pin = spec->multi_io[i].pin; in init_multi_io() local
5704 snd_hda_codec_get_pin_target(codec, pin); in init_multi_io()
5737 hda_nid_t nid = cfg->inputs[i].pin; in init_analog_input()
5785 hda_nid_t pin; in init_digital() local
5789 pin = spec->autocfg.dig_in_pin; in init_digital()
5790 if (pin) { in init_digital()
5791 restore_pin_ctl(codec, pin); in init_digital()
5804 struct hda_pincfg *pin = snd_array_elem(&codec->init_pins, i); in clear_unsol_on_unused_pins() local
5805 hda_nid_t nid = pin->nid; in clear_unsol_on_unused_pins()