Lines Matching refs:per_pin

109 			      struct hdmi_spec_per_pin *per_pin,
243 struct hdmi_spec_per_pin *per_pin;
253 per_pin = get_pin(spec, pin_idx);
254 if ((per_pin->pin_nid == pin_nid) &&
255 (per_pin->dev_id == dev_id))
281 struct hdmi_spec_per_pin *per_pin;
285 per_pin = get_pin(spec, pin_idx);
286 if (per_pin->pcm &&
287 per_pin->pcm->pcm->stream == hinfo)
300 struct hdmi_spec_per_pin *per_pin;
303 per_pin = get_pin(spec, i);
304 if (per_pin->pcm_idx == pcm_idx)
305 return per_pin;
328 struct hdmi_spec_per_pin *per_pin;
336 per_pin = pcm_idx_to_pin(spec, pcm_idx);
337 if (!per_pin) {
342 eld = &per_pin->sink_eld;
355 struct hdmi_spec_per_pin *per_pin;
362 per_pin = pcm_idx_to_pin(spec, pcm_idx);
363 if (!per_pin) {
370 eld = &per_pin->sink_eld;
483 struct hdmi_spec_per_pin *per_pin = entry->private_data;
485 mutex_lock(&per_pin->lock);
486 snd_hdmi_print_eld_info(&per_pin->sink_eld, buffer);
487 mutex_unlock(&per_pin->lock);
493 struct hdmi_spec_per_pin *per_pin = entry->private_data;
495 mutex_lock(&per_pin->lock);
496 snd_hdmi_write_eld_info(&per_pin->sink_eld, buffer);
497 mutex_unlock(&per_pin->lock);
500 static int eld_proc_new(struct hdmi_spec_per_pin *per_pin, int index)
503 struct hda_codec *codec = per_pin->codec;
512 snd_info_set_text_ops(entry, per_pin, print_eld_info);
515 per_pin->proc_entry = entry;
520 static void eld_proc_free(struct hdmi_spec_per_pin *per_pin)
522 if (!per_pin->codec->bus->shutdown) {
523 snd_info_free_entry(per_pin->proc_entry);
524 per_pin->proc_entry = NULL;
528 static inline int eld_proc_new(struct hdmi_spec_per_pin *per_pin,
533 static inline void eld_proc_free(struct hdmi_spec_per_pin *per_pin)
728 struct hdmi_spec_per_pin *per_pin,
733 hda_nid_t pin_nid = per_pin->pin_nid;
734 int dev_id = per_pin->dev_id;
735 int channels = per_pin->channels;
751 eld = &per_pin->sink_eld;
755 per_pin->chmap_set, non_pcm, per_pin->chmap);
759 chmap->ops.set_channel_count(&codec->core, per_pin->cvt_nid,
768 per_pin->chmap, per_pin->chmap_set);
773 per_pin->non_pcm = non_pcm;
780 static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll);
985 struct hdmi_spec_per_pin *per_pin;
991 per_pin = NULL;
993 per_pin = get_pin(spec, pin_idx);
995 if (per_pin && per_pin->silent_stream) {
996 cvt_idx = cvt_nid_to_cvt_index(codec, per_pin->cvt_nid);
1009 if (per_pin == NULL)
1012 for (mux_idx = 0; mux_idx < per_pin->num_mux_nids; mux_idx++)
1013 if (per_pin->mux_nids[mux_idx] == per_cvt->cvt_nid)
1016 if (mux_idx == per_pin->num_mux_nids)
1025 if (per_pin != NULL)
1026 per_pin->mux_idx = mux_idx;
1036 struct hdmi_spec_per_pin *per_pin)
1038 hda_nid_t pin_nid = per_pin->pin_nid;
1041 mux_idx = per_pin->mux_idx;
1081 struct hdmi_spec_per_pin *per_pin;
1089 per_pin = get_pin(spec, pin_idx);
1094 if (!per_pin->pcm)
1097 if ((per_pin->pin_nid == pin_nid) &&
1098 (per_pin->dev_id == dev_id))
1102 * if per_pin->dev_id >= dev_num,
1107 dev_num = snd_hda_get_num_devices(codec, per_pin->pin_nid) + 1;
1108 if (per_pin->dev_id >= dev_num)
1111 nid = per_pin->pin_nid;
1120 snd_hda_set_dev_select(codec, nid, per_pin->dev_id);
1167 struct hdmi_spec_per_pin *per_pin,
1173 spec->ops.pin_cvt_fixup(codec, per_pin, cvt_nid);
1234 struct hdmi_spec_per_pin *per_pin;
1270 per_pin = get_pin(spec, pin_idx);
1271 per_pin->cvt_nid = per_cvt->cvt_nid;
1272 per_pin->silent_stream = false;
1279 snd_hda_set_dev_select(codec, per_pin->pin_nid, per_pin->dev_id);
1280 snd_hda_codec_write_cache(codec, per_pin->pin_nid, 0,
1282 per_pin->mux_idx);
1285 pin_cvt_fixup(codec, per_pin, 0);
1296 eld = &per_pin->sink_eld;
1329 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
1330 hda_nid_t pin_nid = per_pin->pin_nid;
1331 int dev_id = per_pin->dev_id;
1345 memcpy(per_pin->mux_nids, spec->cvt_nids,
1349 per_pin->mux_nids,
1354 per_pin->num_mux_nids = conns;
1360 struct hdmi_spec_per_pin *per_pin)
1374 * The per_pin of pin_nid_idx=n and dev_id=m prefers to get pcm-n
1376 * with the legacy static per_pin-pcm assignment that existed in the
1381 * per_pin of m!=0 prefers to get pcm=(num_nids + (m - 1)).
1384 if (per_pin->dev_id == 0 || spec->intel_hsw_fixup) {
1385 if (!test_bit(per_pin->pin_nid_idx, &spec->pcm_bitmap))
1386 return per_pin->pin_nid_idx;
1388 i = spec->num_nids + (per_pin->dev_id - 1);
1409 struct hdmi_spec_per_pin *per_pin)
1414 if (per_pin->pcm)
1416 idx = hdmi_find_pcm_slot(spec, per_pin);
1419 per_pin->pcm_idx = idx;
1420 per_pin->pcm = get_hdmi_pcm(spec, idx);
1425 struct hdmi_spec_per_pin *per_pin)
1430 if (!per_pin->pcm)
1432 idx = per_pin->pcm_idx;
1433 per_pin->pcm_idx = -1;
1434 per_pin->pcm = NULL;
1440 struct hdmi_spec_per_pin *per_pin, hda_nid_t cvt_nid)
1444 for (mux_idx = 0; mux_idx < per_pin->num_mux_nids; mux_idx++)
1445 if (per_pin->mux_nids[mux_idx] == cvt_nid)
1453 struct hdmi_spec_per_pin *per_pin)
1455 struct hda_codec *codec = per_pin->codec;
1462 if (per_pin->pcm_idx >= 0 && per_pin->pcm_idx < spec->pcm_used)
1463 pcm = get_pcm_rec(spec, per_pin->pcm_idx);
1468 if (!test_bit(per_pin->pcm_idx, &spec->pcm_in_use))
1475 per_pin->cvt_nid = hinfo->nid;
1477 mux_idx = hdmi_get_pin_cvt_mux(spec, per_pin, hinfo->nid);
1478 if (mux_idx < per_pin->num_mux_nids) {
1479 snd_hda_set_dev_select(codec, per_pin->pin_nid,
1480 per_pin->dev_id);
1481 snd_hda_codec_write_cache(codec, per_pin->pin_nid, 0,
1485 snd_hda_spdif_ctls_assign(codec, per_pin->pcm_idx, hinfo->nid);
1489 per_pin->channels = substream->runtime->channels;
1490 per_pin->setup = true;
1491 per_pin->mux_idx = mux_idx;
1493 hdmi_setup_audio_infoframe(codec, per_pin, non_pcm);
1497 struct hdmi_spec_per_pin *per_pin)
1499 if (per_pin->pcm_idx >= 0 && per_pin->pcm_idx < spec->pcm_used)
1500 snd_hda_spdif_ctls_unassign(per_pin->codec, per_pin->pcm_idx);
1502 per_pin->chmap_set = false;
1503 memset(per_pin->chmap, 0, sizeof(per_pin->chmap));
1505 per_pin->setup = false;
1506 per_pin->channels = 0;
1510 struct hdmi_spec_per_pin *per_pin)
1514 if (per_pin->pcm_idx >= 0)
1515 return spec->pcm_rec[per_pin->pcm_idx].jack;
1520 /* update per_pin ELD from the given new ELD;
1525 struct hdmi_spec_per_pin *per_pin,
1529 struct hdmi_eld *pin_eld = &per_pin->sink_eld;
1542 schedule_delayed_work(&per_pin->work,
1555 pcm_idx = per_pin->pcm_idx;
1561 pcm_jack = pin_idx_to_pcm_jack(codec, per_pin);
1565 hdmi_attach_hda_pcm(spec, per_pin);
1566 hdmi_pcm_setup_pin(spec, per_pin);
1568 hdmi_pcm_reset_pin(spec, per_pin);
1569 hdmi_detach_hda_pcm(spec, per_pin);
1576 pcm_idx = per_pin->pcm_idx;
1578 pcm_jack = pin_idx_to_pcm_jack(codec, per_pin);
1607 if (eld->eld_valid && !old_eld_valid && per_pin->setup) {
1608 pin_cvt_fixup(codec, per_pin, 0);
1609 hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
1625 static void hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin,
1628 struct hda_codec *codec = per_pin->codec;
1632 hda_nid_t pin_nid = per_pin->pin_nid;
1633 int dev_id = per_pin->dev_id;
1656 mutex_lock(&per_pin->lock);
1673 update_eld(codec, per_pin, eld, repoll);
1674 mutex_unlock(&per_pin->lock);
1686 struct hdmi_spec_per_pin *per_pin)
1693 mutex_lock(&per_pin->lock);
1695 if (per_pin->setup) {
1700 pin_idx = pin_id_to_pin_index(codec, per_pin->pin_nid, per_pin->dev_id);
1709 per_pin->cvt_nid = per_cvt->cvt_nid;
1710 per_pin->silent_stream = true;
1713 per_pin->pin_nid, per_cvt->cvt_nid);
1715 snd_hda_set_dev_select(codec, per_pin->pin_nid, per_pin->dev_id);
1716 snd_hda_codec_write_cache(codec, per_pin->pin_nid, 0,
1718 per_pin->mux_idx);
1721 pin_cvt_fixup(codec, per_pin, 0);
1723 snd_hdac_sync_audio_rate(&codec->core, per_pin->pin_nid,
1724 per_pin->dev_id, I915_SILENT_RATE);
1729 snd_hda_codec_setup_stream(codec, per_pin->cvt_nid,
1732 snd_hda_codec_setup_stream(codec, per_pin->cvt_nid, I915_SILENT_FMT_MASK, 0, format);
1734 per_pin->channels = I915_SILENT_CHANNELS;
1735 hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
1738 mutex_unlock(&per_pin->lock);
1742 struct hdmi_spec_per_pin *per_pin)
1748 mutex_lock(&per_pin->lock);
1749 if (!per_pin->silent_stream)
1753 per_pin->pin_nid, per_pin->cvt_nid);
1755 cvt_idx = cvt_nid_to_cvt_index(codec, per_pin->cvt_nid);
1761 per_pin->cvt_nid = 0;
1762 per_pin->silent_stream = false;
1765 mutex_unlock(&per_pin->lock);
1770 struct hdmi_spec_per_pin *per_pin)
1776 mutex_lock(&per_pin->lock);
1778 monitor_prev = per_pin->sink_eld.monitor_present;
1779 eld->eld_size = snd_hdac_acomp_get_eld(&codec->core, per_pin->pin_nid,
1780 per_pin->dev_id, &eld->monitor_present,
1783 update_eld(codec, per_pin, eld, 0);
1784 monitor_next = per_pin->sink_eld.monitor_present;
1785 mutex_unlock(&per_pin->lock);
1801 silent_stream_enable(codec, per_pin);
1803 silent_stream_disable(codec, per_pin);
1813 static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
1815 struct hda_codec *codec = per_pin->codec;
1818 hdmi_present_sense_via_verbs(per_pin, repoll);
1820 sync_eld_via_acomp(codec, per_pin);
1825 struct hdmi_spec_per_pin *per_pin =
1827 struct hda_codec *codec = per_pin->codec;
1831 jack = snd_hda_jack_tbl_get_mst(codec, per_pin->pin_nid,
1832 per_pin->dev_id);
1836 if (per_pin->repoll_count++ > 6)
1837 per_pin->repoll_count = 0;
1840 hdmi_present_sense(per_pin, per_pin->repoll_count);
1849 struct hdmi_spec_per_pin *per_pin;
1902 per_pin = snd_array_new(&spec->pins);
1904 if (!per_pin)
1908 per_pin->pcm = NULL;
1909 per_pin->pcm_idx = -1;
1911 per_pin->pcm = get_hdmi_pcm(spec, pin_idx);
1912 per_pin->pcm_idx = pin_idx;
1914 per_pin->pin_nid = pin_nid;
1915 per_pin->pin_nid_idx = spec->num_nids;
1916 per_pin->dev_id = i;
1917 per_pin->non_pcm = false;
2063 struct hdmi_spec_per_pin *per_pin;
2086 per_pin = get_pin(spec, pin_idx);
2096 pin_cvt_fixup(codec, per_pin, 0);
2101 snd_hdac_sync_audio_rate(&codec->core, per_pin->pin_nid,
2102 per_pin->dev_id, runtime->rate);
2105 mutex_lock(&per_pin->lock);
2106 per_pin->channels = substream->runtime->channels;
2107 per_pin->setup = true;
2117 hdmi_setup_audio_infoframe(codec, per_pin, non_pcm);
2118 mutex_unlock(&per_pin->lock);
2120 snd_hda_set_dev_select(codec, per_pin->pin_nid,
2121 per_pin->dev_id);
2122 pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
2124 snd_hda_codec_write(codec, per_pin->pin_nid, 0,
2130 err = spec->ops.setup_stream(codec, cvt_nid, per_pin->pin_nid,
2131 per_pin->dev_id, stream_tag, format);
2152 struct hdmi_spec_per_pin *per_pin;
2184 per_pin = get_pin(spec, pin_idx);
2187 snd_hda_set_dev_select(codec, per_pin->pin_nid,
2188 per_pin->dev_id);
2189 pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
2191 snd_hda_codec_write(codec, per_pin->pin_nid, 0,
2196 mutex_lock(&per_pin->lock);
2197 per_pin->chmap_set = false;
2198 memset(per_pin->chmap, 0, sizeof(per_pin->chmap));
2200 per_pin->setup = false;
2201 per_pin->channels = 0;
2202 mutex_unlock(&per_pin->lock);
2222 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2224 if (!per_pin)
2227 return per_pin->sink_eld.info.spk_alloc;
2235 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2238 if (!per_pin)
2241 memcpy(chmap, per_pin->chmap, ARRAY_SIZE(per_pin->chmap));
2249 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2251 if (!per_pin)
2253 mutex_lock(&per_pin->lock);
2254 per_pin->chmap_set = true;
2255 memcpy(per_pin->chmap, chmap, ARRAY_SIZE(per_pin->chmap));
2257 hdmi_setup_audio_infoframe(codec, per_pin, per_pin->non_pcm);
2258 mutex_unlock(&per_pin->lock);
2265 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx);
2267 return per_pin ? true:false;
2328 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pcm_idx);
2336 !is_jack_detectable(codec, per_pin->pin_nid))
2376 struct hdmi_spec_per_pin *per_pin =
2379 per_pin->pin_nid,
2380 per_pin->mux_nids[0],
2397 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2398 struct hdmi_eld *pin_eld = &per_pin->sink_eld;
2401 hdmi_present_sense(per_pin, 0);
2425 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2427 per_pin->codec = codec;
2428 mutex_init(&per_pin->lock);
2429 INIT_DELAYED_WORK(&per_pin->work, hdmi_repoll_eld);
2430 eld_proc_new(per_pin, pin_idx);
2442 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2443 hda_nid_t pin_nid = per_pin->pin_nid;
2444 int dev_id = per_pin->dev_id;
2494 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2495 cancel_delayed_work_sync(&per_pin->work);
2496 eld_proc_free(per_pin);
2519 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2520 cancel_delayed_work_sync(&per_pin->work);
2534 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
2535 hdmi_present_sense(per_pin, 1);
2912 struct hdmi_spec_per_pin *per_pin,
2915 if (per_pin) {
2916 haswell_verify_D0(codec, per_pin->cvt_nid, per_pin->pin_nid);
2917 snd_hda_set_dev_select(codec, per_pin->pin_nid,
2918 per_pin->dev_id);
2919 intel_verify_pin_cvt_connect(codec, per_pin);
2920 intel_not_share_assigned_cvt(codec, per_pin->pin_nid,
2921 per_pin->dev_id, per_pin->mux_idx);
3143 struct hdmi_spec_per_pin *per_pin = get_pin(spec, 0);
3144 hda_nid_t pin = per_pin->pin_nid;
3152 snd_hda_jack_detect_enable(codec, pin, per_pin->dev_id);
3325 struct hdmi_spec_per_pin *per_pin;
3340 per_pin = snd_array_new(&spec->pins);
3342 if (!per_pin || !per_cvt) {
3347 per_pin->pin_nid = pin_nid;
4196 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
4199 snd_hda_codec_write(codec, per_pin->pin_nid, 0, ATI_VERB_SET_DOWNMIX_INFO, 0);
4203 snd_hda_codec_write(codec, per_pin->pin_nid, 0,