Lines Matching full:outp
314 struct nouveau_encoder *outp) in nv50_outp_dump_caps() argument
317 outp->base.base.name, outp->caps.dp_interlace); in nv50_outp_dump_caps()
421 nv50_outp_get_new_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp) in nv50_outp_get_new_connector() argument
425 struct drm_encoder *encoder = to_drm_encoder(outp); in nv50_outp_get_new_connector()
437 nv50_outp_get_old_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp) in nv50_outp_get_old_connector() argument
441 struct drm_encoder *encoder = to_drm_encoder(outp); in nv50_outp_get_old_connector()
453 nv50_outp_get_new_crtc(const struct drm_atomic_state *state, const struct nouveau_encoder *outp) in nv50_outp_get_new_crtc() argument
457 const u32 mask = drm_encoder_mask(&outp->base.base); in nv50_outp_get_new_crtc()
478 core->func->dac->ctrl(core, nv_encoder->outp.or.id, ctrl, NULL); in nv50_dac_atomic_disable()
480 nvif_outp_release(&nv_encoder->outp); in nv50_dac_atomic_disable()
505 nvif_outp_acquire_rgb_crt(&nv_encoder->outp); in nv50_dac_atomic_enable()
507 core->func->dac->ctrl(core, nv_encoder->outp.or.id, ctrl, asyh); in nv50_dac_atomic_enable()
524 ret = nvif_outp_load_detect(&nv_encoder->outp, loadval); in nv50_dac_detect()
544 nvif_outp_dtor(&nv_encoder->outp); in nv50_dac_destroy()
583 return nvif_outp_ctor(disp->disp, nv_encoder->base.base.name, dcbe->id, &nv_encoder->outp); in nv50_dac_create()
623 if (!nv_crtc || nv_encoder->outp.or.id != port || nv_crtc->index != dev_id) in nv50_audio_component_get_eld()
724 struct nvif_outp *outp = &nv_encoder->outp; in nv50_audio_disable() local
733 nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, NULL, 0); in nv50_audio_disable()
737 nv50_audio_component_eld_notify(drm->audio.component, outp->or.id, nv_crtc->index); in nv50_audio_disable()
747 struct nvif_outp *outp = &nv_encoder->outp; in nv50_audio_enable() local
754 nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, nv_connector->base.eld, in nv50_audio_enable()
761 nv50_audio_component_eld_notify(drm->audio.component, outp->or.id, nv_crtc->index); in nv50_audio_enable()
811 ret = nvif_outp_acquire_tmds(&nv_encoder->outp, nv_crtc->index, true, in nv50_hdmi_enable()
829 nvif_outp_infoframe(&nv_encoder->outp, NVIF_OUTP_INFOFRAME_V0_AVI, &args.infoframe, size); in nv50_hdmi_enable()
839 nvif_outp_infoframe(&nv_encoder->outp, NVIF_OUTP_INFOFRAME_V0_VSI, &args.infoframe, size); in nv50_hdmi_enable()
880 return msto->mstc->mstm->outp; in nv50_real_outp()
927 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, 0, 0, 0, 0); in nv50_msto_prepare()
932 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, in nv50_msto_prepare()
977 struct nouveau_encoder *outp = mstc->mstm->outp; in nv50_msto_atomic_check() local
980 outp->dp.link_bw, outp->dp.link_nr); in nv50_msto_atomic_check()
1031 nvif_outp_acquire_dp(&mstm->outp->outp, mstm->outp->dp.dpcd, 0, 0, false, true); in nv50_msto_atomic_enable()
1034 if (mstm->outp->outp.or.link & 1) in nv50_msto_atomic_enable()
1039 mstm->outp->update(mstm->outp, head->base.index, asyh, proto, in nv50_msto_atomic_enable()
1054 mstm->outp->update(mstm->outp, msto->head->base.index, NULL, 0, 0); in nv50_msto_atomic_disable()
1113 if (!(mstc->mstm->outp->dcb->heads & drm_crtc_mask(crtc))) in nv50_mstc_atomic_best_encoder()
1124 struct nouveau_encoder *outp = mstc->mstm->outp; in nv50_mstc_mode_valid() local
1130 return nv50_dp_mode_valid(outp, mode, NULL); in nv50_mstc_mode_valid()
1234 struct drm_device *dev = mstm->outp->base.base.dev; in nv50_mstc_new()
1258 if (!(mstm->outp->dcb->heads & drm_crtc_mask(crtc))) in nv50_mstc_new()
1277 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev); in nv50_mstm_cleanup()
1280 NV_ATOMIC(drm, "%s: mstm cleanup\n", mstm->outp->base.base.name); in nv50_mstm_cleanup()
1283 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { in nv50_mstm_cleanup()
1300 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev); in nv50_mstm_prepare()
1303 NV_ATOMIC(drm, "%s: mstm prepare\n", mstm->outp->base.base.name); in nv50_mstm_prepare()
1306 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { in nv50_mstm_prepare()
1318 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { in nv50_mstm_prepare()
1329 nvif_outp_release(&mstm->outp->outp); in nv50_mstm_prepare()
1402 nv50_mstm_detect(struct nouveau_encoder *outp) in nv50_mstm_detect() argument
1404 struct nv50_mstm *mstm = outp->dp.mstm; in nv50_mstm_detect()
1430 nv50_mstm_fini(struct nouveau_encoder *outp) in nv50_mstm_fini() argument
1432 struct nv50_mstm *mstm = outp->dp.mstm; in nv50_mstm_fini()
1441 mutex_lock(&outp->dp.hpd_irq_lock); in nv50_mstm_fini()
1443 mutex_unlock(&outp->dp.hpd_irq_lock); in nv50_mstm_fini()
1450 nv50_mstm_init(struct nouveau_encoder *outp, bool runtime) in nv50_mstm_init() argument
1452 struct nv50_mstm *mstm = outp->dp.mstm; in nv50_mstm_init()
1464 mutex_lock(&outp->dp.hpd_irq_lock); in nv50_mstm_init()
1466 mutex_unlock(&outp->dp.hpd_irq_lock); in nv50_mstm_init()
1484 nv50_mstm_new(struct nouveau_encoder *outp, struct drm_dp_aux *aux, int aux_max, in nv50_mstm_new() argument
1487 const int max_payloads = hweight8(outp->dcb->heads); in nv50_mstm_new()
1488 struct drm_device *dev = outp->base.base.dev; in nv50_mstm_new()
1494 mstm->outp = outp; in nv50_mstm_new()
1525 core->func->sor->ctrl(core, nv_encoder->outp.or.id, nv_encoder->ctrl, asyh); in nv50_sor_update()
1568 nvif_outp_release(&nv_encoder->outp); in nv50_sor_atomic_disable()
1581 struct nvif_outp *outp = &nv_encoder->outp; in nv50_sor_atomic_enable() local
1605 nvif_outp_acquire_tmds(outp, nv_crtc->index, false, 0, 0, 0, false); in nv50_sor_atomic_enable()
1609 if (nv_encoder->outp.or.link & 1) { in nv50_sor_atomic_enable()
1652 nvif_outp_acquire_lvds(&nv_encoder->outp, lvds_dual, lvds_8bpc); in nv50_sor_atomic_enable()
1655 nvif_outp_acquire_dp(&nv_encoder->outp, nv_encoder->dp.dpcd, 0, 0, hda, false); in nv50_sor_atomic_enable()
1658 if (nv_encoder->outp.or.link & 1) in nv50_sor_atomic_enable()
1693 nvif_outp_dtor(&nv_encoder->outp); in nv50_sor_destroy()
1791 return nvif_outp_ctor(disp->disp, nv_encoder->base.base.name, dcbe->id, &nv_encoder->outp); in nv50_sor_create()
1816 core->func->pior->ctrl(core, nv_encoder->outp.or.id, ctrl, NULL); in nv50_pior_atomic_disable()
1818 nvif_outp_release(&nv_encoder->outp); in nv50_pior_atomic_disable()
1849 nvif_outp_acquire_tmds(&nv_encoder->outp, false, false, 0, 0, 0, false); in nv50_pior_atomic_enable()
1853 nvif_outp_acquire_dp(&nv_encoder->outp, nv_encoder->dp.dpcd, 0, 0, false, false); in nv50_pior_atomic_enable()
1860 core->func->pior->ctrl(core, nv_encoder->outp.or.id, ctrl, asyh); in nv50_pior_atomic_enable()
1876 nvif_outp_dtor(&nv_encoder->outp); in nv50_pior_destroy()
1939 return nvif_outp_ctor(disp->disp, nv_encoder->base.base.name, dcbe->id, &nv_encoder->outp); in nv50_pior_create()
2006 struct nv50_outp_atom *outp, *outt; in nv50_disp_atomic_commit_tail() local
2055 list_for_each_entry(outp, &atom->outp, head) { in nv50_disp_atomic_commit_tail()
2059 encoder = outp->encoder; in nv50_disp_atomic_commit_tail()
2063 outp->clr.mask, outp->set.mask); in nv50_disp_atomic_commit_tail()
2065 if (outp->clr.mask) { in nv50_disp_atomic_commit_tail()
2068 if (outp->flush_disable) { in nv50_disp_atomic_commit_tail()
2094 list_for_each_entry_safe(outp, outt, &atom->outp, head) { in nv50_disp_atomic_commit_tail()
2098 encoder = outp->encoder; in nv50_disp_atomic_commit_tail()
2102 outp->set.mask, outp->clr.mask); in nv50_disp_atomic_commit_tail()
2104 if (outp->set.mask) { in nv50_disp_atomic_commit_tail()
2109 list_del(&outp->head); in nv50_disp_atomic_commit_tail()
2110 kfree(outp); in nv50_disp_atomic_commit_tail()
2321 struct nv50_outp_atom *outp; in nv50_disp_outp_atomic_add() local
2323 list_for_each_entry(outp, &atom->outp, head) { in nv50_disp_outp_atomic_add()
2324 if (outp->encoder == encoder) in nv50_disp_outp_atomic_add()
2325 return outp; in nv50_disp_outp_atomic_add()
2328 outp = kzalloc(sizeof(*outp), GFP_KERNEL); in nv50_disp_outp_atomic_add()
2329 if (!outp) in nv50_disp_outp_atomic_add()
2332 list_add(&outp->head, &atom->outp); in nv50_disp_outp_atomic_add()
2333 outp->encoder = encoder; in nv50_disp_outp_atomic_add()
2334 return outp; in nv50_disp_outp_atomic_add()
2344 struct nv50_outp_atom *outp; in nv50_disp_outp_atomic_check_clr() local
2352 outp = nv50_disp_outp_atomic_add(atom, encoder); in nv50_disp_outp_atomic_check_clr()
2353 if (IS_ERR(outp)) in nv50_disp_outp_atomic_check_clr()
2354 return PTR_ERR(outp); in nv50_disp_outp_atomic_check_clr()
2356 if (outp->encoder->encoder_type == DRM_MODE_ENCODER_DPMST) { in nv50_disp_outp_atomic_check_clr()
2357 outp->flush_disable = true; in nv50_disp_outp_atomic_check_clr()
2360 outp->clr.ctrl = true; in nv50_disp_outp_atomic_check_clr()
2374 struct nv50_outp_atom *outp; in nv50_disp_outp_atomic_check_set() local
2381 outp = nv50_disp_outp_atomic_add(atom, encoder); in nv50_disp_outp_atomic_check_set()
2382 if (IS_ERR(outp)) in nv50_disp_outp_atomic_check_set()
2383 return PTR_ERR(outp); in nv50_disp_outp_atomic_check_set()
2385 outp->set.ctrl = true; in nv50_disp_outp_atomic_check_set()
2454 struct nv50_outp_atom *outp, *outt; in nv50_disp_atomic_state_clear() local
2456 list_for_each_entry_safe(outp, outt, &atom->outp, head) { in nv50_disp_atomic_state_clear()
2457 list_del(&outp->head); in nv50_disp_atomic_state_clear()
2458 kfree(outp); in nv50_disp_atomic_state_clear()
2481 INIT_LIST_HEAD(&atom->outp); in nv50_disp_atomic_state_alloc()