Lines Matching refs:nid
33 bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid) in is_jack_detectable() argument
37 if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT)) in is_jack_detectable()
39 if (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) & in is_jack_detectable()
42 if (!(get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP) && in is_jack_detectable()
50 static u32 read_pin_sense(struct hda_codec *codec, hda_nid_t nid) in read_pin_sense() argument
56 pincap = snd_hda_query_pin_caps(codec, nid); in read_pin_sense()
58 snd_hda_codec_read(codec, nid, 0, in read_pin_sense()
61 val = snd_hda_codec_read(codec, nid, 0, in read_pin_sense()
74 snd_hda_jack_tbl_get(struct hda_codec *codec, hda_nid_t nid) in snd_hda_jack_tbl_get() argument
79 if (!nid || !jack) in snd_hda_jack_tbl_get()
82 if (jack->nid == nid) in snd_hda_jack_tbl_get()
114 snd_hda_jack_tbl_new(struct hda_codec *codec, hda_nid_t nid) in snd_hda_jack_tbl_new() argument
116 struct hda_jack_tbl *jack = snd_hda_jack_tbl_get(codec, nid); in snd_hda_jack_tbl_new()
122 jack->nid = nid; in snd_hda_jack_tbl_new()
160 jack->pin_sense = read_pin_sense(codec, jack->nid); in jack_detect_update()
192 if (jack->nid) in snd_hda_jack_set_dirty_all()
205 u32 snd_hda_pin_sense(struct hda_codec *codec, hda_nid_t nid) in snd_hda_pin_sense() argument
207 struct hda_jack_tbl *jack = snd_hda_jack_tbl_get(codec, nid); in snd_hda_pin_sense()
212 return read_pin_sense(codec, nid); in snd_hda_pin_sense()
224 int snd_hda_jack_detect_state(struct hda_codec *codec, hda_nid_t nid) in snd_hda_jack_detect_state() argument
226 struct hda_jack_tbl *jack = snd_hda_jack_tbl_get(codec, nid); in snd_hda_jack_detect_state()
229 else if (snd_hda_pin_sense(codec, nid) & AC_PINSENSE_PRESENCE) in snd_hda_jack_detect_state()
247 snd_hda_jack_detect_enable_callback(struct hda_codec *codec, hda_nid_t nid, in snd_hda_jack_detect_enable_callback() argument
254 jack = snd_hda_jack_tbl_new(codec, nid); in snd_hda_jack_detect_enable_callback()
262 callback->nid = jack->nid; in snd_hda_jack_detect_enable_callback()
272 err = snd_hda_codec_write_cache(codec, nid, 0, in snd_hda_jack_detect_enable_callback()
289 int snd_hda_jack_detect_enable(struct hda_codec *codec, hda_nid_t nid) in snd_hda_jack_detect_enable() argument
291 return PTR_ERR_OR_ZERO(snd_hda_jack_detect_enable_callback(codec, nid, NULL)); in snd_hda_jack_detect_enable()
331 if (jack->nid) in snd_hda_jack_report_sync()
339 if (jack->nid) { in snd_hda_jack_report_sync()
350 static int get_input_jack_type(struct hda_codec *codec, hda_nid_t nid) in get_input_jack_type() argument
352 unsigned int def_conf = snd_hda_codec_get_pincfg(codec, nid); in get_input_jack_type()
372 jacks->nid = 0; in hda_free_jack_priv()
386 int snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, in snd_hda_jack_add_kctl() argument
392 jack = snd_hda_jack_tbl_new(codec, nid); in snd_hda_jack_add_kctl()
398 type = get_input_jack_type(codec, nid); in snd_hda_jack_add_kctl()
408 state = snd_hda_jack_detect(codec, nid); in snd_hda_jack_add_kctl()
415 static int add_jack_kctl(struct hda_codec *codec, hda_nid_t nid, in add_jack_kctl() argument
424 if (!nid) in add_jack_kctl()
426 def_conf = snd_hda_codec_get_pincfg(codec, nid); in add_jack_kctl()
431 !is_jack_detectable(codec, nid); in add_jack_kctl()
436 snd_hda_get_pin_label(codec, nid, cfg, name, sizeof(name), NULL); in add_jack_kctl()
440 err = snd_hda_jack_add_kctl(codec, nid, name, phantom_jack); in add_jack_kctl()
445 return snd_hda_jack_detect_enable(codec, nid); in add_jack_kctl()
562 if (!jack->nid || !jack->jack_dirty || jack->phantom_jack) in snd_hda_jack_poll_all()