Lines Matching refs:jack
73 struct hda_jack_tbl *jack = codec->jacktbl.list; in snd_hda_jack_tbl_get_mst() local
76 if (!nid || !jack) in snd_hda_jack_tbl_get_mst()
78 for (i = 0; i < codec->jacktbl.used; i++, jack++) in snd_hda_jack_tbl_get_mst()
79 if (jack->nid == nid && jack->dev_id == dev_id) in snd_hda_jack_tbl_get_mst()
80 return jack; in snd_hda_jack_tbl_get_mst()
95 struct hda_jack_tbl *jack = codec->jacktbl.list; in snd_hda_jack_tbl_get_from_tag() local
98 if (!tag || !jack) in snd_hda_jack_tbl_get_from_tag()
100 for (i = 0; i < codec->jacktbl.used; i++, jack++) in snd_hda_jack_tbl_get_from_tag()
101 if (jack->tag == tag && jack->dev_id == dev_id) in snd_hda_jack_tbl_get_from_tag()
102 return jack; in snd_hda_jack_tbl_get_from_tag()
110 struct hda_jack_tbl *jack = codec->jacktbl.list; in any_jack_tbl_get_from_nid() local
113 if (!nid || !jack) in any_jack_tbl_get_from_nid()
115 for (i = 0; i < codec->jacktbl.used; i++, jack++) in any_jack_tbl_get_from_nid()
116 if (jack->nid == nid) in any_jack_tbl_get_from_nid()
117 return jack; in any_jack_tbl_get_from_nid()
130 struct hda_jack_tbl *jack = in snd_hda_jack_tbl_new() local
137 if (jack) in snd_hda_jack_tbl_new()
138 return jack; in snd_hda_jack_tbl_new()
139 jack = snd_array_new(&codec->jacktbl); in snd_hda_jack_tbl_new()
140 if (!jack) in snd_hda_jack_tbl_new()
142 jack->nid = nid; in snd_hda_jack_tbl_new()
143 jack->dev_id = dev_id; in snd_hda_jack_tbl_new()
144 jack->jack_dirty = 1; in snd_hda_jack_tbl_new()
146 jack->tag = existing_nid_jack->tag; in snd_hda_jack_tbl_new()
153 jack->jack_detect = existing_nid_jack->jack_detect; in snd_hda_jack_tbl_new()
155 jack->tag = codec->jacktbl.used; in snd_hda_jack_tbl_new()
158 return jack; in snd_hda_jack_tbl_new()
163 struct hda_jack_tbl *jack = codec->jacktbl.list; in snd_hda_jack_tbl_clear() local
166 for (i = 0; i < codec->jacktbl.used; i++, jack++) { in snd_hda_jack_tbl_clear()
170 if (!codec->bus->shutdown && jack->jack) in snd_hda_jack_tbl_clear()
171 snd_device_free(codec->card, jack->jack); in snd_hda_jack_tbl_clear()
173 for (cb = jack->callback; cb; cb = next) { in snd_hda_jack_tbl_clear()
185 struct hda_jack_tbl *jack) in jack_detect_update() argument
187 if (!jack->jack_dirty) in jack_detect_update()
190 if (jack->phantom_jack) in jack_detect_update()
191 jack->pin_sense = AC_PINSENSE_PRESENCE; in jack_detect_update()
193 jack->pin_sense = read_pin_sense(codec, jack->nid, in jack_detect_update()
194 jack->dev_id); in jack_detect_update()
197 if (jack->gating_jack && in jack_detect_update()
198 !snd_hda_jack_detect_mst(codec, jack->gating_jack, jack->dev_id)) in jack_detect_update()
199 jack->pin_sense &= ~AC_PINSENSE_PRESENCE; in jack_detect_update()
201 jack->jack_dirty = 0; in jack_detect_update()
204 if (jack->gated_jack) { in jack_detect_update()
206 snd_hda_jack_tbl_get_mst(codec, jack->gated_jack, in jack_detect_update()
207 jack->dev_id); in jack_detect_update()
224 struct hda_jack_tbl *jack = codec->jacktbl.list; in snd_hda_jack_set_dirty_all() local
227 for (i = 0; i < codec->jacktbl.used; i++, jack++) in snd_hda_jack_set_dirty_all()
228 if (jack->nid) in snd_hda_jack_set_dirty_all()
229 jack->jack_dirty = 1; in snd_hda_jack_set_dirty_all()
244 struct hda_jack_tbl *jack = in snd_hda_jack_pin_sense() local
246 if (jack) { in snd_hda_jack_pin_sense()
247 jack_detect_update(codec, jack); in snd_hda_jack_pin_sense()
248 return jack->pin_sense; in snd_hda_jack_pin_sense()
266 struct hda_jack_tbl *jack = in snd_hda_jack_detect_state_mst() local
268 if (jack && jack->phantom_jack) in snd_hda_jack_detect_state_mst()
279 find_callback_from_list(struct hda_jack_tbl *jack, in find_callback_from_list() argument
287 for (cb = jack->callback; cb; cb = cb->next) { in find_callback_from_list()
310 struct hda_jack_tbl *jack; in snd_hda_jack_detect_enable_callback_mst() local
314 jack = snd_hda_jack_tbl_new(codec, nid, dev_id); in snd_hda_jack_detect_enable_callback_mst()
315 if (!jack) in snd_hda_jack_detect_enable_callback_mst()
318 callback = find_callback_from_list(jack, func); in snd_hda_jack_detect_enable_callback_mst()
325 callback->nid = jack->nid; in snd_hda_jack_detect_enable_callback_mst()
326 callback->dev_id = jack->dev_id; in snd_hda_jack_detect_enable_callback_mst()
327 callback->next = jack->callback; in snd_hda_jack_detect_enable_callback_mst()
328 jack->callback = callback; in snd_hda_jack_detect_enable_callback_mst()
331 if (jack->jack_detect) in snd_hda_jack_detect_enable_callback_mst()
333 jack->jack_detect = 1; in snd_hda_jack_detect_enable_callback_mst()
338 AC_USRSP_EN | jack->tag); in snd_hda_jack_detect_enable_callback_mst()
397 struct hda_jack_tbl *jack; in snd_hda_jack_report_sync() local
401 jack = codec->jacktbl.list; in snd_hda_jack_report_sync()
402 for (i = 0; i < codec->jacktbl.used; i++, jack++) in snd_hda_jack_report_sync()
403 if (jack->nid) in snd_hda_jack_report_sync()
404 jack_detect_update(codec, jack); in snd_hda_jack_report_sync()
409 jack = codec->jacktbl.list; in snd_hda_jack_report_sync()
410 for (i = 0; i < codec->jacktbl.used; i++, jack++) in snd_hda_jack_report_sync()
411 if (jack->nid) { in snd_hda_jack_report_sync()
412 if (!jack->jack || jack->block_report) in snd_hda_jack_report_sync()
414 state = jack->button_state; in snd_hda_jack_report_sync()
415 if (get_jack_plug_state(jack->pin_sense)) in snd_hda_jack_report_sync()
416 state |= jack->type; in snd_hda_jack_report_sync()
417 snd_jack_report(jack->jack, state); in snd_hda_jack_report_sync()
418 if (jack->button_state) { in snd_hda_jack_report_sync()
419 snd_jack_report(jack->jack, in snd_hda_jack_report_sync()
420 state & ~jack->button_state); in snd_hda_jack_report_sync()
421 jack->button_state = 0; /* button released */ in snd_hda_jack_report_sync()
447 static void hda_free_jack_priv(struct snd_jack *jack) in hda_free_jack_priv() argument
449 struct hda_jack_tbl *jacks = jack->private_data; in hda_free_jack_priv()
451 jacks->jack = NULL; in hda_free_jack_priv()
471 struct hda_jack_tbl *jack; in snd_hda_jack_add_kctl_mst() local
475 jack = snd_hda_jack_tbl_new(codec, nid, dev_id); in snd_hda_jack_add_kctl_mst()
476 if (!jack) in snd_hda_jack_add_kctl_mst()
478 if (jack->jack) in snd_hda_jack_add_kctl_mst()
491 &jack->jack, true, phantom_jack); in snd_hda_jack_add_kctl_mst()
495 jack->phantom_jack = !!phantom_jack; in snd_hda_jack_add_kctl_mst()
496 jack->type = type; in snd_hda_jack_add_kctl_mst()
497 jack->button_state = 0; in snd_hda_jack_add_kctl_mst()
498 jack->jack->private_data = jack; in snd_hda_jack_add_kctl_mst()
499 jack->jack->private_free = hda_free_jack_priv; in snd_hda_jack_add_kctl_mst()
502 snd_jack_set_key(jack->jack, map->type, map->key); in snd_hda_jack_add_kctl_mst()
506 snd_jack_report(jack->jack, state ? jack->type : 0); in snd_hda_jack_add_kctl_mst()
611 struct hda_jack_tbl *jack) in call_jack_callback() argument
615 for (cb = jack->callback; cb; cb = cb->next) { in call_jack_callback()
616 cb->jack = jack; in call_jack_callback()
620 if (jack->gated_jack) { in call_jack_callback()
622 snd_hda_jack_tbl_get_mst(codec, jack->gated_jack, in call_jack_callback()
623 jack->dev_id); in call_jack_callback()
626 cb->jack = gated; in call_jack_callback()
670 struct hda_jack_tbl *jack = codec->jacktbl.list; in snd_hda_jack_poll_all() local
673 for (i = 0; i < codec->jacktbl.used; i++, jack++) { in snd_hda_jack_poll_all()
675 if (!jack->nid || !jack->jack_dirty || jack->phantom_jack) in snd_hda_jack_poll_all()
677 old_sense = get_jack_plug_state(jack->pin_sense); in snd_hda_jack_poll_all()
678 jack_detect_update(codec, jack); in snd_hda_jack_poll_all()
679 if (old_sense == get_jack_plug_state(jack->pin_sense)) in snd_hda_jack_poll_all()
682 call_jack_callback(codec, 0, jack); in snd_hda_jack_poll_all()