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()
933 static void set_pin_eapd(struct hda_codec *codec, hda_nid_t pin, bool enable) in set_pin_eapd() argument
937 !(snd_hda_query_pin_caps(codec, pin) & AC_PINCAP_EAPD)) in set_pin_eapd()
943 snd_hda_codec_update_cache(codec, pin, 0, in set_pin_eapd()
1322 hda_nid_t dac, hda_nid_t pin) in try_dac() argument
1324 return is_reachable_path(codec, dac, pin) ? dac : 0; in try_dac()
1343 hda_nid_t pin = pins[i]; in try_assign_dacs() local
1351 dacs[i] = get_preferred_dac(codec, pin); in try_assign_dacs()
1358 dacs[i] = look_for_dac(codec, pin, false); in try_assign_dacs()
1362 if (is_reachable_path(codec, dacs[j], pin)) { in try_assign_dacs()
1374 dac = try_dac(codec, get_primary_out(codec, i), pin); in try_assign_dacs()
1376 dac = try_dac(codec, dacs[0], pin); in try_assign_dacs()
1378 dac = try_dac(codec, get_primary_out(codec, i), pin); in try_assign_dacs()
1386 } else if (is_reachable_path(codec, spec->private_dac_nids[0], pin)) { in try_assign_dacs()
1396 path = snd_hda_add_new_path(codec, dac, pin, -spec->mixer_nid); in try_assign_dacs()
1399 path = snd_hda_add_new_path(codec, dac, pin, 0); in try_assign_dacs()
1416 static hda_nid_t get_dac_if_single(struct hda_codec *codec, hda_nid_t pin) in get_dac_if_single() argument
1426 if (is_reachable_path(codec, nid, pin)) { in get_dac_if_single()
1467 cfg->inputs[i].pin)) in count_multiio_pins()
1504 hda_nid_t nid = cfg->inputs[i].pin; in fill_multi_ios()
1512 if (nid == spec->multi_io[j].pin) in fill_multi_ios()
1533 spec->multi_io[spec->multi_ios].pin = nid; in fill_multi_ios()
1608 hda_nid_t path_dac, dac, pin; in check_aamix_out_path() local
1616 pin = path->path[path->depth - 1]; in check_aamix_out_path()
1617 path = snd_hda_add_new_path(codec, dac, pin, spec->mixer_nid); in check_aamix_out_path()
1628 path = snd_hda_add_new_path(codec, dac, pin, in check_aamix_out_path()
1889 spec->multi_io[0].pin, spec->multi_io[1].pin, in debug_show_configs()
2332 hda_nid_t nid = spec->multi_io[idx].pin; in set_multi_io()
2529 hda_nid_t pin; in update_hp_mic() local
2531 pin = spec->hp_mic_pin; in update_hp_mic()
2535 val = snd_hda_codec_get_pin_target(codec, pin); in update_hp_mic()
2545 val = snd_hda_get_default_vref(codec, pin); in update_hp_mic()
2562 set_pin_target(codec, pin, val, true); in update_hp_mic()
2584 defcfg = snd_hda_codec_get_pincfg(codec, cfg->inputs[0].pin); in create_hp_mic()
2605 cfg->inputs[cfg->num_inputs].pin = nid; in create_hp_mic()
2621 static int create_hp_mic_jack_mode(struct hda_codec *codec, hda_nid_t pin);
2679 static void get_jack_mode_name(struct hda_codec *codec, hda_nid_t pin, in get_jack_mode_name() argument
2685 snd_hda_get_pin_label(codec, pin, &spec->autocfg, name, name_len, &idx); in get_jack_mode_name()
2692 static int get_out_jack_num_items(struct hda_codec *codec, hda_nid_t pin) in get_out_jack_num_items() argument
2696 unsigned int pincap = snd_hda_query_pin_caps(codec, pin); in get_out_jack_num_items()
2710 hda_nid_t pin = pins[i]; in create_out_jack_modes() local
2711 if (pin == spec->hp_mic_pin) in create_out_jack_modes()
2713 if (get_out_jack_num_items(codec, pin) > 1) { in create_out_jack_modes()
2716 get_jack_mode_name(codec, pin, name, sizeof(name)); in create_out_jack_modes()
2721 knew->private_value = pin; in create_out_jack_modes()
2740 static unsigned int get_vref_caps(struct hda_codec *codec, hda_nid_t pin) in get_vref_caps() argument
2744 pincap = snd_hda_query_pin_caps(codec, pin); in get_vref_caps()
2834 static int get_in_jack_num_items(struct hda_codec *codec, hda_nid_t pin) in get_in_jack_num_items() argument
2839 nitems = hweight32(get_vref_caps(codec, pin)); in get_in_jack_num_items()
2843 static int create_in_jack_mode(struct hda_codec *codec, hda_nid_t pin) in create_in_jack_mode() argument
2850 if (pin == spec->hp_mic_pin) in create_in_jack_mode()
2854 defcfg = snd_hda_codec_get_pincfg(codec, pin); in create_in_jack_mode()
2859 if (get_in_jack_num_items(codec, pin) <= 1) in create_in_jack_mode()
2862 get_jack_mode_name(codec, pin, name, sizeof(name)); in create_in_jack_mode()
2866 knew->private_value = pin; in create_in_jack_mode()
2980 static int create_hp_mic_jack_mode(struct hda_codec *codec, hda_nid_t pin) in create_hp_mic_jack_mode() argument
2989 knew->private_value = pin; in create_hp_mic_jack_mode()
3017 hda_nid_t pin, unsigned int *mix_val, in look_for_mix_leaf_ctls() argument
3024 idx = snd_hda_get_conn_index(codec, mix_nid, pin, true); in look_for_mix_leaf_ctls()
3053 hda_nid_t pin, const char *ctlname, int ctlidx, in new_analog_input() argument
3061 if (!look_for_mix_leaf_ctls(codec, mix_nid, pin, &mix_val, &mute_val)) in new_analog_input()
3064 path = snd_hda_add_new_path(codec, pin, mix_nid, 0); in new_analog_input()
3212 static int parse_capture_source(struct hda_codec *codec, hda_nid_t pin, in parse_capture_source() argument
3226 if (!is_reachable_path(codec, pin, adc)) in parse_capture_source()
3228 path = snd_hda_add_new_path(codec, pin, adc, anchor); in parse_capture_source()
3236 if (spec->hp_mic_pin == pin) in parse_capture_source()
3238 spec->imux_pins[imux->num_items] = pin; in parse_capture_source()
3261 hda_nid_t pin = cfg->inputs[i].pin; in fill_input_pin_labels() local
3265 if (!is_input_pin(codec, pin)) in fill_input_pin_labels()
3305 hda_nid_t pin; in create_input_ctls() local
3307 pin = cfg->inputs[i].pin; in create_input_ctls()
3308 if (!is_input_pin(codec, pin)) in create_input_ctls()
3313 val |= snd_hda_get_default_vref(codec, pin); in create_input_ctls()
3314 if (pin != spec->hp_mic_pin && in create_input_ctls()
3315 !snd_hda_codec_get_pin_target(codec, pin)) in create_input_ctls()
3316 set_pin_target(codec, pin, val, false); in create_input_ctls()
3319 if (is_reachable_path(codec, pin, mixer)) { in create_input_ctls()
3320 err = new_analog_input(codec, i, pin, in create_input_ctls()
3329 err = parse_capture_source(codec, pin, i, num_adcs, in create_input_ctls()
3335 err = create_in_jack_mode(codec, pin); in create_input_ctls()
3546 if (cfg->inputs[i].pin != nid) in is_inv_dmic_pin()
3879 hda_nid_t dig_nid, pin; in parse_digital() local
3884 pin = spec->autocfg.dig_out_pins[i]; in parse_digital()
3885 dig_nid = look_for_dac(codec, pin, true); in parse_digital()
3888 path = snd_hda_add_new_path(codec, dig_nid, pin, 0); in parse_digital()
3895 set_pin_target(codec, pin, PIN_OUT, false); in parse_digital()
3909 pin = spec->autocfg.dig_in_pin; in parse_digital()
3916 path = snd_hda_add_new_path(codec, pin, dig_nid, 0); in parse_digital()
3923 set_pin_target(codec, pin, PIN_IN, false); in parse_digital()
4016 static bool detect_pin_state(struct hda_codec *codec, hda_nid_t pin) in detect_pin_state() argument
4018 if (!is_jack_detectable(codec, pin)) in detect_pin_state()
4020 return snd_hda_jack_detect_state(codec, pin) != HDA_JACK_NOT_PRESENT; in detect_pin_state()
4029 static hda_nid_t set_pin_power_jack(struct hda_codec *codec, hda_nid_t pin, in set_pin_power_jack() argument
4037 on = detect_pin_state(codec, pin); in set_pin_power_jack()
4041 return set_path_power(codec, pin, on, -1); in set_pin_power_jack()
4100 add_pin_power_ctls(codec, 1, &cfg->inputs[i].pin, on); in add_all_pin_power_ctls()
4129 sync_pin_power_ctls(codec, 1, &cfg->inputs[i].pin); in sync_all_pin_power_ctls()
4195 int snd_hda_gen_fix_pin_power(struct hda_codec *codec, hda_nid_t pin) in snd_hda_gen_fix_pin_power() argument
4205 path->path[0] = pin; in snd_hda_gen_fix_pin_power()
4427 hda_nid_t pin = spec->am_entry[i].pin; in snd_hda_gen_mic_autoswitch() local
4429 if (snd_hda_codec_get_pin_target(codec, pin) & AC_PINCTL_OUT_EN) in snd_hda_gen_mic_autoswitch()
4431 if (snd_hda_jack_detect_state(codec, pin) == HDA_JACK_PRESENT) { in snd_hda_gen_mic_autoswitch()
4655 find_idx_in_nid_list(spec->am_entry[i].pin, in auto_mic_check_imux()
4664 spec->am_entry[i].pin, in auto_mic_check_imux()
4693 hda_nid_t nid = cfg->inputs[i].pin; in check_auto_mic_availability()
4719 spec->am_entry[num_pins].pin = nid; in check_auto_mic_availability()
4741 spec->am_entry[0].pin, in check_auto_mic_availability()
4742 spec->am_entry[1].pin, in check_auto_mic_availability()
4743 spec->am_entry[2].pin); in check_auto_mic_availability()
5645 hda_nid_t pin; in set_output_and_unmute() local
5650 pin = path->path[path->depth - 1]; in set_output_and_unmute()
5651 restore_pin_ctl(codec, pin); in set_output_and_unmute()
5654 set_pin_eapd(codec, pin, path->active); in set_output_and_unmute()
5695 hda_nid_t pin = spec->multi_io[i].pin; in init_multi_io() local
5702 snd_hda_codec_get_pin_target(codec, pin); in init_multi_io()
5735 hda_nid_t nid = cfg->inputs[i].pin; in init_analog_input()
5783 hda_nid_t pin; in init_digital() local
5787 pin = spec->autocfg.dig_in_pin; in init_digital()
5788 if (pin) { in init_digital()
5789 restore_pin_ctl(codec, pin); in init_digital()
5802 struct hda_pincfg *pin = snd_array_elem(&codec->init_pins, i); in clear_unsol_on_unused_pins() local
5803 hda_nid_t nid = pin->nid; in clear_unsol_on_unused_pins()