Lines Matching defs:per_pin

115 			      struct hdmi_spec_per_pin *per_pin,
256 struct hdmi_spec_per_pin *per_pin;
266 per_pin = get_pin(spec, pin_idx);
267 if ((per_pin->pin_nid == pin_nid) &&
268 (per_pin->dev_id == dev_id))
294 struct hdmi_spec_per_pin *per_pin;
298 per_pin = get_pin(spec, pin_idx);
299 if (per_pin->pcm &&
300 per_pin->pcm->pcm->stream == hinfo)
313 struct hdmi_spec_per_pin *per_pin;
316 per_pin = get_pin(spec, i);
317 if (per_pin->pcm_idx == pcm_idx)
318 return per_pin;
341 struct hdmi_spec_per_pin *per_pin;
349 per_pin = pcm_idx_to_pin(spec, pcm_idx);
350 if (!per_pin) {
355 eld = &per_pin->sink_eld;
368 struct hdmi_spec_per_pin *per_pin;
375 per_pin = pcm_idx_to_pin(spec, pcm_idx);
376 if (!per_pin) {
383 eld = &per_pin->sink_eld;
496 struct hdmi_spec_per_pin *per_pin = entry->private_data;
498 mutex_lock(&per_pin->lock);
499 snd_hdmi_print_eld_info(&per_pin->sink_eld, buffer, per_pin->pin_nid,
500 per_pin->dev_id, per_pin->cvt_nid);
501 mutex_unlock(&per_pin->lock);
507 struct hdmi_spec_per_pin *per_pin = entry->private_data;
509 mutex_lock(&per_pin->lock);
510 snd_hdmi_write_eld_info(&per_pin->sink_eld, buffer);
511 mutex_unlock(&per_pin->lock);
514 static int eld_proc_new(struct hdmi_spec_per_pin *per_pin, int index)
517 struct hda_codec *codec = per_pin->codec;
526 snd_info_set_text_ops(entry, per_pin, print_eld_info);
529 per_pin->proc_entry = entry;
534 static void eld_proc_free(struct hdmi_spec_per_pin *per_pin)
536 if (!per_pin->codec->bus->shutdown) {
537 snd_info_free_entry(per_pin->proc_entry);
538 per_pin->proc_entry = NULL;
542 static inline int eld_proc_new(struct hdmi_spec_per_pin *per_pin,
547 static inline void eld_proc_free(struct hdmi_spec_per_pin *per_pin)
739 struct hdmi_spec_per_pin *per_pin,
744 hda_nid_t pin_nid = per_pin->pin_nid;
745 int dev_id = per_pin->dev_id;
746 int channels = per_pin->channels;
762 eld = &per_pin->sink_eld;
766 per_pin->chmap_set, non_pcm, per_pin->chmap);
770 chmap->ops.set_channel_count(&codec->core, per_pin->cvt_nid,
779 per_pin->chmap, per_pin->chmap_set);
784 per_pin->non_pcm = non_pcm;
791 static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll);
997 struct hdmi_spec_per_pin *per_pin;
1003 per_pin = NULL;
1005 per_pin = get_pin(spec, pin_idx);
1007 if (per_pin && per_pin->silent_stream) {
1008 cvt_idx = cvt_nid_to_cvt_index(codec, per_pin->cvt_nid);
1024 if (per_pin == NULL)
1027 for (mux_idx = 0; mux_idx < per_pin->num_mux_nids; mux_idx++)
1028 if (per_pin->mux_nids[mux_idx] == per_cvt->cvt_nid)
1031 if (mux_idx == per_pin->num_mux_nids)
1040 if (per_pin != NULL)
1041 per_pin->mux_idx = mux_idx;
1051 struct hdmi_spec_per_pin *per_pin)
1053 hda_nid_t pin_nid = per_pin->pin_nid;
1056 mux_idx = per_pin->mux_idx;
1096 struct hdmi_spec_per_pin *per_pin;
1104 per_pin = get_pin(spec, pin_idx);
1109 if (!per_pin->pcm)
1112 if ((per_pin->pin_nid == pin_nid) &&
1113 (per_pin->dev_id == dev_id))
1117 * if per_pin->dev_id >= dev_num,
1122 dev_num = snd_hda_get_num_devices(codec, per_pin->pin_nid) + 1;
1123 if (per_pin->dev_id >= dev_num)
1126 nid = per_pin->pin_nid;
1135 snd_hda_set_dev_select(codec, nid, per_pin->dev_id);
1182 struct hdmi_spec_per_pin *per_pin,
1188 spec->ops.pin_cvt_fixup(codec, per_pin, cvt_nid);
1247 struct hdmi_spec_per_pin *per_pin;
1276 per_pin = get_pin(spec, pin_idx);
1277 per_pin->cvt_nid = per_cvt->cvt_nid;
1284 snd_hda_set_dev_select(codec, per_pin->pin_nid, per_pin->dev_id);
1285 snd_hda_codec_write_cache(codec, per_pin->pin_nid, 0,
1287 per_pin->mux_idx);
1290 pin_cvt_fixup(codec, per_pin, 0);
1301 eld = &per_pin->sink_eld;
1334 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
1335 hda_nid_t pin_nid = per_pin->pin_nid;
1336 int dev_id = per_pin->dev_id;
1350 memcpy(per_pin->mux_nids, spec->cvt_nids,
1354 per_pin->mux_nids,
1359 per_pin->num_mux_nids = conns;
1365 struct hdmi_spec_per_pin *per_pin)
1377 struct hdmi_spec_per_pin *per_pin)
1382 if (per_pin->pcm)
1385 idx = per_pin->prev_pcm_idx;
1389 per_pin->prev_pcm_idx = -1; /* no longer valid, clear it */
1391 idx = hdmi_find_pcm_slot(spec, per_pin);
1395 per_pin->pcm_idx = idx;
1396 per_pin->pcm = get_hdmi_pcm(spec, idx);
1401 struct hdmi_spec_per_pin *per_pin)
1406 if (!per_pin->pcm)
1408 idx = per_pin->pcm_idx;
1409 per_pin->pcm_idx = -1;
1410 per_pin->prev_pcm_idx = idx; /* remember the previous index */
1411 per_pin->pcm = NULL;
1417 struct hdmi_spec_per_pin *per_pin, hda_nid_t cvt_nid)
1421 for (mux_idx = 0; mux_idx < per_pin->num_mux_nids; mux_idx++)
1422 if (per_pin->mux_nids[mux_idx] == cvt_nid)
1430 struct hdmi_spec_per_pin *per_pin)
1432 struct hda_codec *codec = per_pin->codec;
1439 if (per_pin->pcm_idx < 0 || per_pin->pcm_idx >= spec->pcm_used)
1441 pcm = get_pcm_rec(spec, per_pin->pcm_idx);
1444 if (!test_bit(per_pin->pcm_idx, &spec->pcm_in_use))
1451 per_pin->cvt_nid = hinfo->nid;
1453 mux_idx = hdmi_get_pin_cvt_mux(spec, per_pin, hinfo->nid);
1454 if (mux_idx < per_pin->num_mux_nids) {
1455 snd_hda_set_dev_select(codec, per_pin->pin_nid,
1456 per_pin->dev_id);
1457 snd_hda_codec_write_cache(codec, per_pin->pin_nid, 0,
1461 snd_hda_spdif_ctls_assign(codec, per_pin->pcm_idx, hinfo->nid);
1465 per_pin->channels = substream->runtime->channels;
1466 per_pin->setup = true;
1467 per_pin->mux_idx = mux_idx;
1469 hdmi_setup_audio_infoframe(codec, per_pin, non_pcm);
1473 struct hdmi_spec_per_pin *per_pin)
1475 if (per_pin->pcm_idx >= 0 && per_pin->pcm_idx < spec->pcm_used)
1476 snd_hda_spdif_ctls_unassign(per_pin->codec, per_pin->pcm_idx);
1478 per_pin->chmap_set = false;
1479 memset(per_pin->chmap, 0, sizeof(per_pin->chmap));
1481 per_pin->setup = false;
1482 per_pin->channels = 0;
1486 struct hdmi_spec_per_pin *per_pin)
1490 if (per_pin->pcm_idx >= 0)
1491 return spec->pcm_rec[per_pin->pcm_idx].jack;
1496 /* update per_pin ELD from the given new ELD;
1501 struct hdmi_spec_per_pin *per_pin,
1505 struct hdmi_eld *pin_eld = &per_pin->sink_eld;
1518 schedule_delayed_work(&per_pin->work,
1531 pcm_idx = per_pin->pcm_idx;
1537 pcm_jack = pin_idx_to_pcm_jack(codec, per_pin);
1541 hdmi_attach_hda_pcm(spec, per_pin);
1542 hdmi_pcm_setup_pin(spec, per_pin);
1544 hdmi_pcm_reset_pin(spec, per_pin);
1545 hdmi_detach_hda_pcm(spec, per_pin);
1553 pcm_idx = per_pin->pcm_idx;
1555 pcm_jack = pin_idx_to_pcm_jack(codec, per_pin);
1584 if (eld->eld_valid && !old_eld_valid && per_pin->setup) {
1585 pin_cvt_fixup(codec, per_pin, 0);
1586 hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
1602 static void hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin,
1605 struct hda_codec *codec = per_pin->codec;
1609 hda_nid_t pin_nid = per_pin->pin_nid;
1610 int dev_id = per_pin->dev_id;
1633 mutex_lock(&per_pin->lock);
1650 update_eld(codec, per_pin, eld, repoll);
1651 mutex_unlock(&per_pin->lock);
1662 struct hdmi_spec_per_pin *per_pin)
1666 snd_hdac_sync_audio_rate(&codec->core, per_pin->pin_nid,
1667 per_pin->dev_id, I915_SILENT_RATE);
1672 snd_hda_codec_setup_stream(codec, per_pin->cvt_nid,
1675 snd_hda_codec_setup_stream(codec, per_pin->cvt_nid, I915_SILENT_FMT_MASK, 0, format);
1677 per_pin->channels = I915_SILENT_CHANNELS;
1678 hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
1682 struct hdmi_spec_per_pin *per_pin,
1687 codec_dbg(codec, "HDMI: KAE %d cvt-NID=0x%x\n", enable, per_pin->cvt_nid);
1689 param = snd_hda_codec_read(codec, per_pin->cvt_nid, 0, AC_VERB_GET_DIGI_CONVERT_1, 0);
1697 snd_hda_codec_write(codec, per_pin->cvt_nid, 0, AC_VERB_SET_DIGI_CONVERT_3, param);
1701 struct hdmi_spec_per_pin *per_pin)
1721 mutex_lock(&per_pin->lock);
1723 if (per_pin->setup) {
1729 pin_idx = pin_id_to_pin_index(codec, per_pin->pin_nid, per_pin->dev_id);
1738 per_pin->cvt_nid = per_cvt->cvt_nid;
1739 per_pin->silent_stream = true;
1742 per_pin->pin_nid, per_cvt->cvt_nid);
1744 snd_hda_set_dev_select(codec, per_pin->pin_nid, per_pin->dev_id);
1745 snd_hda_codec_write_cache(codec, per_pin->pin_nid, 0,
1747 per_pin->mux_idx);
1750 pin_cvt_fixup(codec, per_pin, 0);
1754 silent_stream_enable_i915(codec, per_pin);
1755 silent_stream_set_kae(codec, per_pin, true);
1758 silent_stream_enable_i915(codec, per_pin);
1766 mutex_unlock(&per_pin->lock);
1773 struct hdmi_spec_per_pin *per_pin)
1788 mutex_lock(&per_pin->lock);
1789 if (!per_pin->silent_stream)
1793 per_pin->pin_nid, per_pin->cvt_nid);
1795 cvt_idx = cvt_nid_to_cvt_index(codec, per_pin->cvt_nid);
1805 silent_stream_set_kae(codec, per_pin, false);
1808 per_pin->cvt_nid = 0;
1809 per_pin->silent_stream = false;
1812 mutex_unlock(&per_pin->lock);
1819 struct hdmi_spec_per_pin *per_pin)
1825 mutex_lock(&per_pin->lock);
1827 monitor_prev = per_pin->sink_eld.monitor_present;
1828 eld->eld_size = snd_hdac_acomp_get_eld(&codec->core, per_pin->pin_nid,
1829 per_pin->dev_id, &eld->monitor_present,
1832 update_eld(codec, per_pin, eld, 0);
1833 monitor_next = per_pin->sink_eld.monitor_present;
1834 mutex_unlock(&per_pin->lock);
1838 silent_stream_enable(codec, per_pin);
1840 silent_stream_disable(codec, per_pin);
1844 static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
1846 struct hda_codec *codec = per_pin->codec;
1849 hdmi_present_sense_via_verbs(per_pin, repoll);
1851 sync_eld_via_acomp(codec, per_pin);
1856 struct hdmi_spec_per_pin *per_pin =
1858 struct hda_codec *codec = per_pin->codec;
1862 jack = snd_hda_jack_tbl_get_mst(codec, per_pin->pin_nid,
1863 per_pin->dev_id);
1867 if (per_pin->repoll_count++ > 6)
1868 per_pin->repoll_count = 0;
1871 hdmi_present_sense(per_pin, per_pin->repoll_count);
1880 struct hdmi_spec_per_pin *per_pin;
1929 per_pin = snd_array_new(&spec->pins);
1931 if (!per_pin)
1934 per_pin->pcm = NULL;
1935 per_pin->pcm_idx = -1;
1936 per_pin->prev_pcm_idx = -1;
1937 per_pin->pin_nid = pin_nid;
1938 per_pin->pin_nid_idx = spec->num_nids;
1939 per_pin->dev_id = i;
1940 per_pin->non_pcm = false;
2092 struct hdmi_spec_per_pin *per_pin;
2110 per_pin = get_pin(spec, pin_idx);
2120 pin_cvt_fixup(codec, per_pin, 0);
2125 snd_hdac_sync_audio_rate(&codec->core, per_pin->pin_nid,
2126 per_pin->dev_id, runtime->rate);
2129 mutex_lock(&per_pin->lock);
2130 per_pin->channels = substream->runtime->channels;
2131 per_pin->setup = true;
2141 hdmi_setup_audio_infoframe(codec, per_pin, non_pcm);
2142 mutex_unlock(&per_pin->lock);
2144 snd_hda_set_dev_select(codec, per_pin->pin_nid,
2145 per_pin->dev_id);
2146 pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
2148 snd_hda_codec_write(codec, per_pin->pin_nid, 0,
2154 err = spec->ops.setup_stream(codec, cvt_nid, per_pin->pin_nid,
2155 per_pin->dev_id, stream_tag, format);
2176 struct hdmi_spec_per_pin *per_pin;
2208 per_pin = get_pin(spec, pin_idx);
2211 snd_hda_set_dev_select(codec, per_pin->pin_nid,
2212 per_pin->dev_id);
2213 pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
2215 snd_hda_codec_write(codec, per_pin->pin_nid, 0,
2220 mutex_lock(&per_pin->lock);
2221 per_pin->chmap_set = false;
2222 memset(per_pin->chmap, 0, sizeof(per_pin->chmap));
2224 per_pin->setup = false;
2225 per_pin->channels = 0;
2226 mutex_unlock(&per_pin->lock);
2246 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2248 if (!per_pin)
2251 return per_pin->sink_eld.info.spk_alloc;
2259 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2262 if (!per_pin)
2265 memcpy(chmap, per_pin->chmap, ARRAY_SIZE(per_pin->chmap));
2273 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2275 if (!per_pin)
2277 mutex_lock(&per_pin->lock);
2278 per_pin->chmap_set = true;
2279 memcpy(per_pin->chmap, chmap, ARRAY_SIZE(per_pin->chmap));
2281 hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
2282 mutex_unlock(&per_pin->lock);
2289 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2291 return per_pin ? true:false;
2400 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2401 struct hdmi_eld *pin_eld = &per_pin->sink_eld;
2404 hdmi_attach_hda_pcm(spec, per_pin);
2405 hdmi_pcm_setup_pin(spec, per_pin);
2409 hdmi_present_sense(per_pin, 0);
2433 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2435 per_pin->codec = codec;
2436 mutex_init(&per_pin->lock);
2437 INIT_DELAYED_WORK(&per_pin->work, hdmi_repoll_eld);
2438 eld_proc_new(per_pin, pin_idx);
2450 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2451 hda_nid_t pin_nid = per_pin->pin_nid;
2452 int dev_id = per_pin->dev_id;
2502 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2503 cancel_delayed_work_sync(&per_pin->work);
2504 eld_proc_free(per_pin);
2522 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2523 cancel_delayed_work_sync(&per_pin->work);
2537 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2538 hdmi_present_sense(per_pin, 1);
2907 struct hdmi_spec_per_pin *per_pin;
2911 per_pin = NULL;
2913 per_pin = get_pin(spec, pin_idx);
2917 if (spec->silent_stream_type == SILENT_STREAM_KAE && per_pin && per_pin->silent_stream) {
2918 silent_stream_set_kae(codec, per_pin, false);
2926 if (spec->silent_stream_type == SILENT_STREAM_KAE && per_pin && per_pin->silent_stream) {
2928 silent_stream_set_kae(codec, per_pin, true);
2936 struct hdmi_spec_per_pin *per_pin,
2939 if (per_pin) {
2940 haswell_verify_D0(codec, per_pin->cvt_nid, per_pin->pin_nid);
2941 snd_hda_set_dev_select(codec, per_pin->pin_nid,
2942 per_pin->dev_id);
2943 intel_verify_pin_cvt_connect(codec, per_pin);
2944 intel_not_share_assigned_cvt(codec, per_pin->pin_nid,
2945 per_pin->dev_id, per_pin->mux_idx);
2960 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2962 if (per_pin->silent_stream) {
3002 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
3009 if (per_pin->silent_stream) {
3012 param = snd_hda_codec_read(codec, per_pin->cvt_nid, 0,
3016 silent_stream_enable_i915(codec, per_pin);
3019 param = snd_hda_codec_read(codec, per_pin->cvt_nid, 0,
3023 silent_stream_set_kae(codec, per_pin, true);
3268 struct hdmi_spec_per_pin *per_pin = get_pin(spec, 0);
3269 hda_nid_t pin = per_pin->pin_nid;
3277 snd_hda_jack_detect_enable(codec, pin, per_pin->dev_id);
3450 struct hdmi_spec_per_pin *per_pin;
3465 per_pin = snd_array_new(&spec->pins);
3467 if (!per_pin || !per_cvt) {
3472 per_pin->pin_nid = pin_nid;
4389 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
4392 snd_hda_codec_write(codec, per_pin->pin_nid, 0, ATI_VERB_SET_DOWNMIX_INFO, 0);
4396 snd_hda_codec_write(codec, per_pin->pin_nid, 0,