Lines Matching refs:spec
198 struct hdmi_spec *spec = codec->spec; in codec_has_acomp() local
199 return spec->use_acomp_notifier; in codec_has_acomp()
241 #define get_pin(spec, idx) \ argument
242 ((struct hdmi_spec_per_pin *)snd_array_elem(&spec->pins, idx))
243 #define get_cvt(spec, idx) \ argument
244 ((struct hdmi_spec_per_cvt *)snd_array_elem(&spec->cvts, idx))
246 #define get_hdmi_pcm(spec, idx) (&(spec)->pcm_rec[idx]) argument
248 #define get_pcm_rec(spec, idx) (get_hdmi_pcm(spec, idx)->pcm) argument
253 struct hdmi_spec *spec = codec->spec; in pin_id_to_pin_index() local
264 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in pin_id_to_pin_index()
265 per_pin = get_pin(spec, pin_idx); in pin_id_to_pin_index()
278 struct hdmi_spec *spec = codec->spec; in hinfo_to_pcm_index() local
281 for (pcm_idx = 0; pcm_idx < spec->pcm_used; pcm_idx++) in hinfo_to_pcm_index()
282 if (get_pcm_rec(spec, pcm_idx)->stream == hinfo) in hinfo_to_pcm_index()
292 struct hdmi_spec *spec = codec->spec; in hinfo_to_pin_index() local
296 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in hinfo_to_pin_index()
297 per_pin = get_pin(spec, pin_idx); in hinfo_to_pin_index()
308 static struct hdmi_spec_per_pin *pcm_idx_to_pin(struct hdmi_spec *spec, in pcm_idx_to_pin() argument
314 for (i = 0; i < spec->num_pins; i++) { in pcm_idx_to_pin()
315 per_pin = get_pin(spec, i); in pcm_idx_to_pin()
324 struct hdmi_spec *spec = codec->spec; in cvt_nid_to_cvt_index() local
327 for (cvt_idx = 0; cvt_idx < spec->num_cvts; cvt_idx++) in cvt_nid_to_cvt_index()
328 if (get_cvt(spec, cvt_idx)->cvt_nid == cvt_nid) in cvt_nid_to_cvt_index()
339 struct hdmi_spec *spec = codec->spec; in hdmi_eld_ctl_info() local
347 mutex_lock(&spec->pcm_lock); in hdmi_eld_ctl_info()
348 per_pin = pcm_idx_to_pin(spec, pcm_idx); in hdmi_eld_ctl_info()
358 mutex_unlock(&spec->pcm_lock); in hdmi_eld_ctl_info()
366 struct hdmi_spec *spec = codec->spec; in hdmi_eld_ctl_get() local
373 mutex_lock(&spec->pcm_lock); in hdmi_eld_ctl_get()
374 per_pin = pcm_idx_to_pin(spec, pcm_idx); in hdmi_eld_ctl_get()
397 mutex_unlock(&spec->pcm_lock); in hdmi_eld_ctl_get()
414 struct hdmi_spec *spec = codec->spec; in hdmi_create_eld_ctl() local
430 get_hdmi_pcm(spec, pcm_idx)->eld_ctl = kctl; in hdmi_create_eld_ctl()
466 struct hdmi_spec *spec = codec->spec; in hdmi_init_pin() local
474 if (spec->dyn_pin_out) in hdmi_init_pin()
685 struct hdmi_spec *spec = codec->spec; in hdmi_pin_setup_infoframe() local
691 (conn_type == 1 && spec->nv_dp_workaround)) { in hdmi_pin_setup_infoframe()
741 struct hdmi_spec *spec = codec->spec; in hdmi_setup_audio_infoframe() local
742 struct hdac_chmap *chmap = &spec->chmap; in hdmi_setup_audio_infoframe()
776 snd_hdac_setup_channel_mapping(&spec->chmap, in hdmi_setup_audio_infoframe()
780 spec->ops.pin_setup_infoframe(codec, pin_nid, dev_id, in hdmi_setup_audio_infoframe()
795 struct hdmi_spec *spec = codec->spec; in check_presence_and_report() local
800 mutex_lock(&spec->pcm_lock); in check_presence_and_report()
801 hdmi_present_sense(get_pin(spec, pin_idx), 1); in check_presence_and_report()
802 mutex_unlock(&spec->pcm_lock); in check_presence_and_report()
950 struct hdmi_spec *spec = codec->spec; in hdmi_setup_stream() local
954 err = spec->ops.pin_hbr_setup(codec, pin_nid, dev_id, in hdmi_setup_stream()
962 if (spec->intel_hsw_fixup) { in hdmi_setup_stream()
995 struct hdmi_spec *spec = codec->spec; in hdmi_choose_cvt() local
1004 per_pin = get_pin(spec, pin_idx); in hdmi_choose_cvt()
1008 per_cvt = get_cvt(spec, cvt_idx); in hdmi_choose_cvt()
1017 for (cvt_idx = 0; cvt_idx < spec->num_cvts; cvt_idx++) { in hdmi_choose_cvt()
1018 per_cvt = get_cvt(spec, cvt_idx); in hdmi_choose_cvt()
1036 if (cvt_idx == spec->num_cvts) in hdmi_choose_cvt()
1067 static int intel_cvt_id_to_mux_idx(struct hdmi_spec *spec, in intel_cvt_id_to_mux_idx() argument
1072 for (i = 0; i < spec->num_cvts; i++) in intel_cvt_id_to_mux_idx()
1073 if (spec->cvt_nids[i] == cvt_nid) in intel_cvt_id_to_mux_idx()
1091 struct hdmi_spec *spec = codec->spec; in intel_not_share_assigned_cvt() local
1099 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in intel_not_share_assigned_cvt()
1103 per_pin = get_pin(spec, pin_idx); in intel_not_share_assigned_cvt()
1146 for (cvt_idx = 0; cvt_idx < spec->num_cvts; cvt_idx++) { in intel_not_share_assigned_cvt()
1147 per_cvt = get_cvt(spec, cvt_idx); in intel_not_share_assigned_cvt()
1167 struct hdmi_spec *spec = codec->spec; in intel_not_share_assigned_cvt_nid() local
1174 mux_idx = intel_cvt_id_to_mux_idx(spec, cvt_nid); in intel_not_share_assigned_cvt_nid()
1184 struct hdmi_spec *spec = codec->spec; in pin_cvt_fixup() local
1186 if (spec->ops.pin_cvt_fixup) in pin_cvt_fixup()
1187 spec->ops.pin_cvt_fixup(codec, per_pin, cvt_nid); in pin_cvt_fixup()
1195 struct hdmi_spec *spec = codec->spec; in hdmi_pcm_open_no_pin() local
1209 per_cvt = get_cvt(spec, cvt_idx); in hdmi_pcm_open_no_pin()
1215 set_bit(pcm_idx, &spec->pcm_in_use); in hdmi_pcm_open_no_pin()
1243 struct hdmi_spec *spec = codec->spec; in hdmi_pcm_open() local
1256 mutex_lock(&spec->pcm_lock); in hdmi_pcm_open()
1270 per_cvt = get_cvt(spec, cvt_idx); in hdmi_pcm_open()
1274 set_bit(pcm_idx, &spec->pcm_in_use); in hdmi_pcm_open()
1275 per_pin = get_pin(spec, pin_idx); in hdmi_pcm_open()
1323 mutex_unlock(&spec->pcm_lock); in hdmi_pcm_open()
1332 struct hdmi_spec *spec = codec->spec; in hdmi_read_pin_conn() local
1333 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in hdmi_read_pin_conn()
1347 if (spec->intel_hsw_fixup) { in hdmi_read_pin_conn()
1348 conns = spec->num_cvts; in hdmi_read_pin_conn()
1349 memcpy(per_pin->mux_nids, spec->cvt_nids, in hdmi_read_pin_conn()
1363 static int hdmi_find_pcm_slot(struct hdmi_spec *spec, in hdmi_find_pcm_slot() argument
1368 for (i = 0; i < spec->pcm_used; i++) { in hdmi_find_pcm_slot()
1369 if (!test_bit(i, &spec->pcm_bitmap)) in hdmi_find_pcm_slot()
1375 static void hdmi_attach_hda_pcm(struct hdmi_spec *spec, in hdmi_attach_hda_pcm() argument
1383 idx = hdmi_find_pcm_slot(spec, per_pin); in hdmi_attach_hda_pcm()
1387 per_pin->pcm = get_hdmi_pcm(spec, idx); in hdmi_attach_hda_pcm()
1388 set_bit(idx, &spec->pcm_bitmap); in hdmi_attach_hda_pcm()
1391 static void hdmi_detach_hda_pcm(struct hdmi_spec *spec, in hdmi_detach_hda_pcm() argument
1402 if (idx >= 0 && idx < spec->pcm_used) in hdmi_detach_hda_pcm()
1403 clear_bit(idx, &spec->pcm_bitmap); in hdmi_detach_hda_pcm()
1406 static int hdmi_get_pin_cvt_mux(struct hdmi_spec *spec, in hdmi_get_pin_cvt_mux() argument
1419 static void hdmi_pcm_setup_pin(struct hdmi_spec *spec, in hdmi_pcm_setup_pin() argument
1429 if (per_pin->pcm_idx < 0 || per_pin->pcm_idx >= spec->pcm_used) in hdmi_pcm_setup_pin()
1431 pcm = get_pcm_rec(spec, per_pin->pcm_idx); in hdmi_pcm_setup_pin()
1434 if (!test_bit(per_pin->pcm_idx, &spec->pcm_in_use)) in hdmi_pcm_setup_pin()
1443 mux_idx = hdmi_get_pin_cvt_mux(spec, per_pin, hinfo->nid); in hdmi_pcm_setup_pin()
1462 static void hdmi_pcm_reset_pin(struct hdmi_spec *spec, in hdmi_pcm_reset_pin() argument
1465 if (per_pin->pcm_idx >= 0 && per_pin->pcm_idx < spec->pcm_used) in hdmi_pcm_reset_pin()
1478 struct hdmi_spec *spec = codec->spec; in pin_idx_to_pcm_jack() local
1481 return spec->pcm_rec[per_pin->pcm_idx].jack; in pin_idx_to_pcm_jack()
1496 struct hdmi_spec *spec = codec->spec; in update_eld() local
1529 if (!spec->static_pcm_mapping) { in update_eld()
1531 hdmi_attach_hda_pcm(spec, per_pin); in update_eld()
1532 hdmi_pcm_setup_pin(spec, per_pin); in update_eld()
1534 hdmi_pcm_reset_pin(spec, per_pin); in update_eld()
1535 hdmi_detach_hda_pcm(spec, per_pin); in update_eld()
1583 &get_hdmi_pcm(spec, pcm_idx)->eld_ctl->id); in update_eld()
1596 struct hdmi_spec *spec = codec->spec; in hdmi_present_sense_via_verbs() local
1597 struct hdmi_eld *eld = &spec->temp_eld; in hdmi_present_sense_via_verbs()
1635 if (spec->ops.pin_get_eld(codec, pin_nid, dev_id, in hdmi_present_sense_via_verbs()
1694 struct hdmi_spec *spec = codec->spec; in silent_stream_enable() local
1727 per_cvt = get_cvt(spec, cvt_idx); in silent_stream_enable()
1743 switch (spec->silent_stream_type) { in silent_stream_enable()
1766 struct hdmi_spec *spec = codec->spec; in silent_stream_disable() local
1787 if (cvt_idx >= 0 && cvt_idx < spec->num_cvts) { in silent_stream_disable()
1788 per_cvt = get_cvt(spec, cvt_idx); in silent_stream_disable()
1792 if (spec->silent_stream_type == SILENT_STREAM_I915) { in silent_stream_disable()
1795 } else if (spec->silent_stream_type == SILENT_STREAM_KAE) { in silent_stream_disable()
1812 struct hdmi_spec *spec = codec->spec; in sync_eld_via_acomp() local
1813 struct hdmi_eld *eld = &spec->temp_eld; in sync_eld_via_acomp()
1827 if (spec->silent_stream_type) { in sync_eld_via_acomp()
1850 struct hdmi_spec *spec = codec->spec; in hdmi_repoll_eld() local
1861 mutex_lock(&spec->pcm_lock); in hdmi_repoll_eld()
1863 mutex_unlock(&spec->pcm_lock); in hdmi_repoll_eld()
1868 struct hdmi_spec *spec = codec->spec; in hdmi_add_pin() local
1885 !spec->force_connect) in hdmi_add_pin()
1892 if (spec->intel_hsw_fixup) { in hdmi_add_pin()
1899 dev_num = spec->dev_num; in hdmi_add_pin()
1906 spec->dev_num = (spec->dev_num > dev_num) ? in hdmi_add_pin()
1907 spec->dev_num : dev_num; in hdmi_add_pin()
1915 spec->dev_num = 1; in hdmi_add_pin()
1919 pin_idx = spec->num_pins; in hdmi_add_pin()
1920 per_pin = snd_array_new(&spec->pins); in hdmi_add_pin()
1928 per_pin->pin_nid_idx = spec->num_nids; in hdmi_add_pin()
1937 spec->num_pins++; in hdmi_add_pin()
1939 spec->num_nids++; in hdmi_add_pin()
1946 struct hdmi_spec *spec = codec->spec; in hdmi_add_cvt() local
1954 per_cvt = snd_array_new(&spec->cvts); in hdmi_add_cvt()
1962 if (chans > spec->chmap.channels_max) in hdmi_add_cvt()
1963 spec->chmap.channels_max = chans; in hdmi_add_cvt()
1973 if (spec->num_cvts < ARRAY_SIZE(spec->cvt_nids)) in hdmi_add_cvt()
1974 spec->cvt_nids[spec->num_cvts] = cvt_nid; in hdmi_add_cvt()
1975 spec->num_cvts++; in hdmi_add_cvt()
1992 struct hdmi_spec *spec = codec->spec; in hdmi_parse_codec() local
2005 spec->force_connect = true; in hdmi_parse_codec()
2010 spec->force_connect = true; in hdmi_parse_codec()
2076 struct hdmi_spec *spec = codec->spec; in generic_hdmi_playback_pcm_prepare() local
2084 mutex_lock(&spec->pcm_lock); in generic_hdmi_playback_pcm_prepare()
2100 per_pin = get_pin(spec, pin_idx); in generic_hdmi_playback_pcm_prepare()
2133 if (spec->dyn_pin_out) { in generic_hdmi_playback_pcm_prepare()
2144 err = spec->ops.setup_stream(codec, cvt_nid, per_pin->pin_nid, in generic_hdmi_playback_pcm_prepare()
2147 mutex_unlock(&spec->pcm_lock); in generic_hdmi_playback_pcm_prepare()
2163 struct hdmi_spec *spec = codec->spec; in hdmi_pcm_close() local
2170 mutex_lock(&spec->pcm_lock); in hdmi_pcm_close()
2182 per_cvt = get_cvt(spec, cvt_idx); in hdmi_pcm_close()
2189 clear_bit(pcm_idx, &spec->pcm_in_use); in hdmi_pcm_close()
2198 per_pin = get_pin(spec, pin_idx); in hdmi_pcm_close()
2200 if (spec->dyn_pin_out) { in hdmi_pcm_close()
2220 mutex_unlock(&spec->pcm_lock); in hdmi_pcm_close()
2235 struct hdmi_spec *spec = codec->spec; in hdmi_get_spk_alloc() local
2236 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx); in hdmi_get_spk_alloc()
2248 struct hdmi_spec *spec = codec->spec; in hdmi_get_chmap() local
2249 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx); in hdmi_get_chmap()
2262 struct hdmi_spec *spec = codec->spec; in hdmi_set_chmap() local
2263 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx); in hdmi_set_chmap()
2278 struct hdmi_spec *spec = codec->spec; in is_hdmi_pcm_attached() local
2279 struct hdmi_spec_per_pin *per_pin = pcm_idx_to_pin(spec, pcm_idx); in is_hdmi_pcm_attached()
2286 struct hdmi_spec *spec = codec->spec; in generic_hdmi_build_pcms() local
2290 pcm_num = min(spec->num_cvts, spec->num_pins); in generic_hdmi_build_pcms()
2301 spec->pcm_rec[idx].pcm = info; in generic_hdmi_build_pcms()
2302 spec->pcm_used++; in generic_hdmi_build_pcms()
2310 if (spec->pcm_used >= ARRAY_SIZE(spec->pcm_rec)) in generic_hdmi_build_pcms()
2328 struct hdmi_spec *spec = codec->spec; in generic_hdmi_build_jack() local
2330 int pcmdev = get_pcm_rec(spec, pcm_idx)->device; in generic_hdmi_build_jack()
2341 spec->pcm_rec[pcm_idx].jack = jack; in generic_hdmi_build_jack()
2342 jack->private_data = &spec->pcm_rec[pcm_idx]; in generic_hdmi_build_jack()
2349 struct hdmi_spec *spec = codec->spec; in generic_hdmi_build_controls() local
2353 for (pcm_idx = 0; pcm_idx < spec->pcm_used; pcm_idx++) { in generic_hdmi_build_controls()
2354 if (!get_pcm_rec(spec, pcm_idx)->pcm) { in generic_hdmi_build_controls()
2356 set_bit(pcm_idx, &spec->pcm_bitmap); in generic_hdmi_build_controls()
2368 0, spec->cvt_nids[0], in generic_hdmi_build_controls()
2374 dev = get_pcm_rec(spec, pcm_idx)->device; in generic_hdmi_build_controls()
2383 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in generic_hdmi_build_controls()
2384 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in generic_hdmi_build_controls()
2387 if (spec->static_pcm_mapping) { in generic_hdmi_build_controls()
2388 hdmi_attach_hda_pcm(spec, per_pin); in generic_hdmi_build_controls()
2389 hdmi_pcm_setup_pin(spec, per_pin); in generic_hdmi_build_controls()
2397 for (pcm_idx = 0; pcm_idx < spec->pcm_used; pcm_idx++) { in generic_hdmi_build_controls()
2400 pcm = get_pcm_rec(spec, pcm_idx); in generic_hdmi_build_controls()
2403 err = snd_hdac_add_chmap_ctls(pcm->pcm, pcm_idx, &spec->chmap); in generic_hdmi_build_controls()
2413 struct hdmi_spec *spec = codec->spec; in generic_hdmi_init_per_pins() local
2416 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in generic_hdmi_init_per_pins()
2417 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in generic_hdmi_init_per_pins()
2429 struct hdmi_spec *spec = codec->spec; in generic_hdmi_init() local
2432 mutex_lock(&spec->bind_lock); in generic_hdmi_init()
2433 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in generic_hdmi_init()
2434 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in generic_hdmi_init()
2445 mutex_unlock(&spec->bind_lock); in generic_hdmi_init()
2449 static void hdmi_array_init(struct hdmi_spec *spec, int nums) in hdmi_array_init() argument
2451 snd_array_init(&spec->pins, sizeof(struct hdmi_spec_per_pin), nums); in hdmi_array_init()
2452 snd_array_init(&spec->cvts, sizeof(struct hdmi_spec_per_cvt), nums); in hdmi_array_init()
2455 static void hdmi_array_free(struct hdmi_spec *spec) in hdmi_array_free() argument
2457 snd_array_free(&spec->pins); in hdmi_array_free()
2458 snd_array_free(&spec->cvts); in hdmi_array_free()
2463 struct hdmi_spec *spec = codec->spec; in generic_spec_free() local
2465 if (spec) { in generic_spec_free()
2466 hdmi_array_free(spec); in generic_spec_free()
2467 kfree(spec); in generic_spec_free()
2468 codec->spec = NULL; in generic_spec_free()
2475 struct hdmi_spec *spec = codec->spec; in generic_hdmi_free() local
2478 if (spec->acomp_registered) { in generic_hdmi_free()
2485 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in generic_hdmi_free()
2486 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in generic_hdmi_free()
2491 for (pcm_idx = 0; pcm_idx < spec->pcm_used; pcm_idx++) { in generic_hdmi_free()
2492 if (spec->pcm_rec[pcm_idx].jack == NULL) in generic_hdmi_free()
2494 snd_device_free(codec->card, spec->pcm_rec[pcm_idx].jack); in generic_hdmi_free()
2503 struct hdmi_spec *spec = codec->spec; in generic_hdmi_suspend() local
2506 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in generic_hdmi_suspend()
2507 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in generic_hdmi_suspend()
2515 struct hdmi_spec *spec = codec->spec; in generic_hdmi_resume() local
2521 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in generic_hdmi_resume()
2522 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in generic_hdmi_resume()
2551 struct hdmi_spec *spec; in alloc_generic_hdmi() local
2553 spec = kzalloc(sizeof(*spec), GFP_KERNEL); in alloc_generic_hdmi()
2554 if (!spec) in alloc_generic_hdmi()
2557 spec->codec = codec; in alloc_generic_hdmi()
2558 spec->ops = generic_standard_hdmi_ops; in alloc_generic_hdmi()
2559 spec->dev_num = 1; /* initialize to 1 */ in alloc_generic_hdmi()
2560 mutex_init(&spec->pcm_lock); in alloc_generic_hdmi()
2561 mutex_init(&spec->bind_lock); in alloc_generic_hdmi()
2562 snd_hdac_register_chmap_ops(&codec->core, &spec->chmap); in alloc_generic_hdmi()
2564 spec->chmap.ops.get_chmap = hdmi_get_chmap; in alloc_generic_hdmi()
2565 spec->chmap.ops.set_chmap = hdmi_set_chmap; in alloc_generic_hdmi()
2566 spec->chmap.ops.is_pcm_attached = is_hdmi_pcm_attached; in alloc_generic_hdmi()
2567 spec->chmap.ops.get_spk_alloc = hdmi_get_spk_alloc; in alloc_generic_hdmi()
2569 codec->spec = spec; in alloc_generic_hdmi()
2570 hdmi_array_init(spec, 4); in alloc_generic_hdmi()
2621 struct hdmi_spec *spec; in generic_acomp_notifier_set() local
2624 spec = container_of(acomp->audio_ops, struct hdmi_spec, drm_audio_ops); in generic_acomp_notifier_set()
2625 mutex_lock(&spec->bind_lock); in generic_acomp_notifier_set()
2626 spec->use_acomp_notifier = use_acomp; in generic_acomp_notifier_set()
2627 spec->codec->relaxed_resume = use_acomp; in generic_acomp_notifier_set()
2628 spec->codec->bus->keep_power = 0; in generic_acomp_notifier_set()
2630 for (i = 0; i < spec->num_pins; i++) in generic_acomp_notifier_set()
2631 reprogram_jack_detect(spec->codec, in generic_acomp_notifier_set()
2632 get_pin(spec, i)->pin_nid, in generic_acomp_notifier_set()
2633 get_pin(spec, i)->dev_id, in generic_acomp_notifier_set()
2635 mutex_unlock(&spec->bind_lock); in generic_acomp_notifier_set()
2669 struct hdmi_spec *spec = codec->spec; in generic_acomp_pin_eld_notify() local
2670 hda_nid_t pin_nid = spec->port2pin(codec, port); in generic_acomp_pin_eld_notify()
2689 struct hdmi_spec *spec = codec->spec; in setup_drm_audio_ops() local
2691 spec->drm_audio_ops.audio_ptr = codec; in setup_drm_audio_ops()
2697 spec->drm_audio_ops.pin2port = ops->pin2port; in setup_drm_audio_ops()
2698 spec->drm_audio_ops.pin_eld_notify = ops->pin_eld_notify; in setup_drm_audio_ops()
2699 spec->drm_audio_ops.master_bind = ops->master_bind; in setup_drm_audio_ops()
2700 spec->drm_audio_ops.master_unbind = ops->master_unbind; in setup_drm_audio_ops()
2708 struct hdmi_spec *spec = codec->spec; in generic_acomp_init() local
2715 spec->port2pin = port2pin; in generic_acomp_init()
2717 if (!snd_hdac_acomp_init(&codec->bus->core, &spec->drm_audio_ops, in generic_acomp_init()
2719 spec->acomp_registered = true; in generic_acomp_init()
2736 struct hdmi_spec *spec = codec->spec; in intel_haswell_enable_all_pins() local
2738 vendor_param = snd_hda_codec_read(codec, spec->vendor_nid, 0, in intel_haswell_enable_all_pins()
2744 vendor_param = snd_hda_codec_read(codec, spec->vendor_nid, 0, in intel_haswell_enable_all_pins()
2756 struct hdmi_spec *spec = codec->spec; in intel_haswell_fixup_enable_dp12() local
2758 vendor_param = snd_hda_codec_read(codec, spec->vendor_nid, 0, in intel_haswell_fixup_enable_dp12()
2766 snd_hda_codec_write_cache(codec, spec->vendor_nid, 0, in intel_haswell_fixup_enable_dp12()
2811 struct hdmi_spec *spec = codec->spec; in intel_pin2port() local
2814 if (!spec->port_num) { in intel_pin2port()
2825 for (i = 0; i < spec->port_num; i++) { in intel_pin2port()
2826 if (pin_nid == spec->port_map[i]) in intel_pin2port()
2836 struct hdmi_spec *spec = codec->spec; in intel_port2pin() local
2838 if (!spec->port_num) { in intel_port2pin()
2845 if (port < 0 || port >= spec->port_num) in intel_port2pin()
2847 return spec->port_map[port]; in intel_port2pin()
2877 struct hdmi_spec *spec = codec->spec; in register_i915_notifier() local
2879 spec->use_acomp_notifier = true; in register_i915_notifier()
2880 spec->port2pin = intel_port2pin; in register_i915_notifier()
2883 &spec->drm_audio_ops); in register_i915_notifier()
2893 struct hdmi_spec *spec = codec->spec; in i915_hsw_setup_stream() local
2901 per_pin = get_pin(spec, pin_idx); in i915_hsw_setup_stream()
2905 if (spec->silent_stream_type == SILENT_STREAM_KAE && per_pin && per_pin->silent_stream) { in i915_hsw_setup_stream()
2914 if (spec->silent_stream_type == SILENT_STREAM_KAE && per_pin && per_pin->silent_stream) { in i915_hsw_setup_stream()
2942 struct hdmi_spec *spec = codec->spec; in i915_adlp_hdmi_suspend() local
2948 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in i915_adlp_hdmi_suspend()
2949 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in i915_adlp_hdmi_suspend()
2957 if (silent_streams && spec->silent_stream_type == SILENT_STREAM_KAE) { in i915_adlp_hdmi_suspend()
2981 struct hdmi_spec *spec = codec->spec; in i915_adlp_hdmi_resume() local
2990 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in i915_adlp_hdmi_resume()
2991 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in i915_adlp_hdmi_resume()
3066 struct hdmi_spec *spec; in intel_hsw_common_init() local
3072 spec = codec->spec; in intel_hsw_common_init()
3074 spec->vendor_nid = vendor_nid; in intel_hsw_common_init()
3075 spec->port_map = port_map; in intel_hsw_common_init()
3076 spec->port_num = port_num; in intel_hsw_common_init()
3077 spec->intel_hsw_fixup = true; in intel_hsw_common_init()
3078 spec->dev_num = dev_num; in intel_hsw_common_init()
3089 spec->ops.setup_stream = i915_hsw_setup_stream; in intel_hsw_common_init()
3090 spec->ops.pin_cvt_fixup = i915_pin_cvt_fixup; in intel_hsw_common_init()
3097 spec->silent_stream_type = SILENT_STREAM_I915; in intel_hsw_common_init()
3144 struct hdmi_spec *spec; in patch_i915_adlp_hdmi() local
3149 spec = codec->spec; in patch_i915_adlp_hdmi()
3151 if (spec->silent_stream_type) { in patch_i915_adlp_hdmi()
3152 spec->silent_stream_type = SILENT_STREAM_KAE; in patch_i915_adlp_hdmi()
3167 struct hdmi_spec *spec; in patch_i915_byt_hdmi() local
3173 spec = codec->spec; in patch_i915_byt_hdmi()
3183 spec->ops.pin_cvt_fixup = i915_pin_cvt_fixup; in patch_i915_byt_hdmi()
3205 struct hdmi_spec *spec = codec->spec; in simple_playback_build_pcms() local
3211 per_cvt = get_cvt(spec, 0); in simple_playback_build_pcms()
3218 spec->pcm_rec[0].pcm = info; in simple_playback_build_pcms()
3221 *pstr = spec->pcm_playback; in simple_playback_build_pcms()
3244 struct hdmi_spec *spec = codec->spec; in simple_playback_build_controls() local
3248 per_cvt = get_cvt(spec, 0); in simple_playback_build_controls()
3259 struct hdmi_spec *spec = codec->spec; in simple_playback_init() local
3260 struct hdmi_spec_per_pin *per_pin = get_pin(spec, 0); in simple_playback_init()
3275 struct hdmi_spec *spec = codec->spec; in simple_playback_free() local
3277 hdmi_array_free(spec); in simple_playback_free()
3278 kfree(spec); in simple_playback_free()
3370 struct hdmi_spec *spec = codec->spec; in simple_playback_pcm_open() local
3396 return snd_hda_multi_out_dig_open(codec, &spec->multiout); in simple_playback_pcm_open()
3403 struct hdmi_spec *spec = codec->spec; in simple_playback_pcm_close() local
3404 return snd_hda_multi_out_dig_close(codec, &spec->multiout); in simple_playback_pcm_close()
3413 struct hdmi_spec *spec = codec->spec; in simple_playback_pcm_prepare() local
3414 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout, in simple_playback_pcm_prepare()
3440 struct hdmi_spec *spec; in patch_simple_hdmi() local
3444 spec = kzalloc(sizeof(*spec), GFP_KERNEL); in patch_simple_hdmi()
3445 if (!spec) in patch_simple_hdmi()
3448 spec->codec = codec; in patch_simple_hdmi()
3449 codec->spec = spec; in patch_simple_hdmi()
3450 hdmi_array_init(spec, 1); in patch_simple_hdmi()
3452 spec->multiout.num_dacs = 0; /* no analog */ in patch_simple_hdmi()
3453 spec->multiout.max_channels = 2; in patch_simple_hdmi()
3454 spec->multiout.dig_out_nid = cvt_nid; in patch_simple_hdmi()
3455 spec->num_cvts = 1; in patch_simple_hdmi()
3456 spec->num_pins = 1; in patch_simple_hdmi()
3457 per_pin = snd_array_new(&spec->pins); in patch_simple_hdmi()
3458 per_cvt = snd_array_new(&spec->cvts); in patch_simple_hdmi()
3465 spec->pcm_playback = simple_pcm_playback; in patch_simple_hdmi()
3509 struct hdmi_spec *spec = codec->spec; in nvhdmi_8ch_7x_pcm_close() local
3527 return snd_hda_multi_out_dig_close(codec, &spec->multiout); in nvhdmi_8ch_7x_pcm_close()
3539 struct hdmi_spec *spec = codec->spec; in nvhdmi_8ch_7x_pcm_prepare() local
3544 per_cvt = get_cvt(spec, 0); in nvhdmi_8ch_7x_pcm_prepare()
3648 struct hdmi_spec *spec; in patch_nvhdmi_2ch() local
3656 spec = codec->spec; in patch_nvhdmi_2ch()
3657 spec->pcm_playback.rates = SUPPORTED_RATES; in patch_nvhdmi_2ch()
3658 spec->pcm_playback.maxbps = SUPPORTED_MAXBPS; in patch_nvhdmi_2ch()
3659 spec->pcm_playback.formats = SUPPORTED_FORMATS; in patch_nvhdmi_2ch()
3660 spec->nv_dp_workaround = true; in patch_nvhdmi_2ch()
3666 struct hdmi_spec *spec = codec->spec; in nvhdmi_7x_8ch_build_pcms() local
3669 struct hda_pcm *info = get_pcm_rec(spec, 0); in nvhdmi_7x_8ch_build_pcms()
3677 struct hdmi_spec *spec = codec->spec; in nvhdmi_7x_8ch_build_controls() local
3687 info = get_pcm_rec(spec, 0); in nvhdmi_7x_8ch_build_controls()
3708 struct hdmi_spec *spec; in patch_nvhdmi_8ch_7x() local
3712 spec = codec->spec; in patch_nvhdmi_8ch_7x()
3713 spec->multiout.max_channels = 8; in patch_nvhdmi_8ch_7x()
3714 spec->pcm_playback = nvhdmi_pcm_playback_8ch_7x; in patch_nvhdmi_8ch_7x()
3776 struct hdmi_spec *spec; in patch_nvhdmi() local
3784 spec = codec->spec; in patch_nvhdmi()
3794 spec->dyn_pin_out = true; in patch_nvhdmi()
3796 spec->chmap.ops.chmap_cea_alloc_validate_get_type = in patch_nvhdmi()
3798 spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; in patch_nvhdmi()
3799 spec->nv_dp_workaround = true; in patch_nvhdmi()
3810 struct hdmi_spec *spec; in patch_nvhdmi_legacy() local
3817 spec = codec->spec; in patch_nvhdmi_legacy()
3818 spec->dyn_pin_out = true; in patch_nvhdmi_legacy()
3820 spec->chmap.ops.chmap_cea_alloc_validate_get_type = in patch_nvhdmi_legacy()
3822 spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; in patch_nvhdmi_legacy()
3823 spec->nv_dp_workaround = true; in patch_nvhdmi_legacy()
3881 struct hdmi_spec *spec = codec->spec; in tegra_hdmi_set_format() local
3918 if (spec->hdmi_intr_trig_ctrl) { in tegra_hdmi_set_format()
3973 struct hdmi_spec *spec = codec->spec; in hda_find_pcm_by_type() local
3976 for (i = 0; i < spec->num_pins; i++) { in hda_find_pcm_by_type()
3977 struct hda_pcm *pcm = get_pcm_rec(spec, i); in hda_find_pcm_by_type()
4013 struct hdmi_spec *spec = codec->spec; in tegra_hdmi_init() local
4022 for (i = 0; i < spec->num_cvts; i++) in tegra_hdmi_init()
4023 snd_hda_codec_write(codec, spec->cvt_nids[i], 0, in tegra_hdmi_init()
4031 spec->chmap.ops.chmap_cea_alloc_validate_get_type = in tegra_hdmi_init()
4033 spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; in tegra_hdmi_init()
4035 spec->chmap.ops.chmap_cea_alloc_validate_get_type = in tegra_hdmi_init()
4037 spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; in tegra_hdmi_init()
4038 spec->nv_dp_workaround = true; in tegra_hdmi_init()
4056 struct hdmi_spec *spec; in patch_tegra234_hdmi() local
4064 spec = codec->spec; in patch_tegra234_hdmi()
4065 spec->dyn_pin_out = true; in patch_tegra234_hdmi()
4066 spec->hdmi_intr_trig_ctrl = true; in patch_tegra234_hdmi()
4372 struct hdmi_spec *spec = codec->spec; in atihdmi_init() local
4380 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { in atihdmi_init()
4381 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); in atihdmi_init()
4419 struct hdmi_spec *spec; in patch_atihdmi() local
4430 spec = codec->spec; in patch_atihdmi()
4432 spec->static_pcm_mapping = true; in patch_atihdmi()
4434 spec->ops.pin_get_eld = atihdmi_pin_get_eld; in patch_atihdmi()
4435 spec->ops.pin_setup_infoframe = atihdmi_pin_setup_infoframe; in patch_atihdmi()
4436 spec->ops.pin_hbr_setup = atihdmi_pin_hbr_setup; in patch_atihdmi()
4437 spec->ops.setup_stream = atihdmi_setup_stream; in patch_atihdmi()
4439 spec->chmap.ops.pin_get_slot_channel = atihdmi_pin_get_slot_channel; in patch_atihdmi()
4440 spec->chmap.ops.pin_set_slot_channel = atihdmi_pin_set_slot_channel; in patch_atihdmi()
4444 spec->chmap.ops.chmap_cea_alloc_validate_get_type = in patch_atihdmi()
4446 spec->chmap.ops.cea_alloc_to_tlv_chmap = in patch_atihdmi()
4448 spec->chmap.ops.chmap_validate = atihdmi_paired_chmap_validate; in patch_atihdmi()
4452 for (cvt_idx = 0; cvt_idx < spec->num_cvts; cvt_idx++) { in patch_atihdmi()
4453 per_cvt = get_cvt(spec, cvt_idx); in patch_atihdmi()
4460 spec->chmap.channels_max = max(spec->chmap.channels_max, 8u); in patch_atihdmi()