Lines Matching refs:outp
315 struct nouveau_encoder *outp) in nv50_outp_dump_caps() argument
318 outp->base.base.name, outp->caps.dp_interlace); in nv50_outp_dump_caps()
436 nv50_outp_get_new_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp) in nv50_outp_get_new_connector() argument
440 struct drm_encoder *encoder = to_drm_encoder(outp); in nv50_outp_get_new_connector()
452 nv50_outp_get_old_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp) in nv50_outp_get_old_connector() argument
456 struct drm_encoder *encoder = to_drm_encoder(outp); in nv50_outp_get_old_connector()
468 nv50_outp_get_new_crtc(const struct drm_atomic_state *state, const struct nouveau_encoder *outp) in nv50_outp_get_new_crtc() argument
472 const u32 mask = drm_encoder_mask(&outp->base.base); in nv50_outp_get_new_crtc()
949 return msto->mstc->mstm->outp; in nv50_real_outp()
966 mstm->outp->base.base.name, i, payload->vcpi, in nv50_msto_payload()
1009 .base.hasht = mstm->outp->dcb->hasht, in nv50_msto_prepare()
1010 .base.hashm = (0xf0ff & mstm->outp->dcb->hashm) | in nv50_msto_prepare()
1123 nv50_outp_acquire(mstm->outp, false /*XXX: MST audio.*/); in nv50_msto_atomic_enable()
1125 if (mstm->outp->link & 1) in nv50_msto_atomic_enable()
1130 mstm->outp->update(mstm->outp, head->base.index, asyh, proto, in nv50_msto_atomic_enable()
1146 mstm->outp->update(mstm->outp, msto->head->base.index, NULL, 0, 0); in nv50_msto_atomic_disable()
1205 if (!(mstc->mstm->outp->dcb->heads & drm_crtc_mask(crtc))) in nv50_mstc_atomic_best_encoder()
1216 struct nouveau_encoder *outp = mstc->mstm->outp; in nv50_mstc_mode_valid() local
1222 return nv50_dp_mode_valid(connector, outp, mode, NULL); in nv50_mstc_mode_valid()
1347 struct drm_device *dev = mstm->outp->base.base.dev; in nv50_mstc_new()
1371 if (!(mstm->outp->dcb->heads & drm_crtc_mask(crtc))) in nv50_mstc_new()
1388 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev); in nv50_mstm_cleanup()
1392 NV_ATOMIC(drm, "%s: mstm cleanup\n", mstm->outp->base.base.name); in nv50_mstm_cleanup()
1397 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { in nv50_mstm_cleanup()
1412 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev); in nv50_mstm_prepare()
1416 NV_ATOMIC(drm, "%s: mstm prepare\n", mstm->outp->base.base.name); in nv50_mstm_prepare()
1419 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) { in nv50_mstm_prepare()
1430 nv50_outp_release(mstm->outp); in nv50_mstm_prepare()
1501 struct nouveau_encoder *outp = mstm->outp; in nv50_mstm_enable() local
1508 .base.hasht = outp->dcb->hasht, in nv50_mstm_enable()
1509 .base.hashm = outp->dcb->hashm, in nv50_mstm_enable()
1512 struct nouveau_drm *drm = nouveau_drm(outp->base.base.dev); in nv50_mstm_enable()
1519 nv50_mstm_detect(struct nouveau_encoder *outp) in nv50_mstm_detect() argument
1521 struct nv50_mstm *mstm = outp->dp.mstm; in nv50_mstm_detect()
1553 nv50_mstm_fini(struct nouveau_encoder *outp) in nv50_mstm_fini() argument
1555 struct nv50_mstm *mstm = outp->dp.mstm; in nv50_mstm_fini()
1564 mutex_lock(&outp->dp.hpd_irq_lock); in nv50_mstm_fini()
1566 mutex_unlock(&outp->dp.hpd_irq_lock); in nv50_mstm_fini()
1573 nv50_mstm_init(struct nouveau_encoder *outp, bool runtime) in nv50_mstm_init() argument
1575 struct nv50_mstm *mstm = outp->dp.mstm; in nv50_mstm_init()
1587 mutex_lock(&outp->dp.hpd_irq_lock); in nv50_mstm_init()
1589 mutex_unlock(&outp->dp.hpd_irq_lock); in nv50_mstm_init()
1607 nv50_mstm_new(struct nouveau_encoder *outp, struct drm_dp_aux *aux, int aux_max, in nv50_mstm_new() argument
1610 const int max_payloads = hweight8(outp->dcb->heads); in nv50_mstm_new()
1611 struct drm_device *dev = outp->base.base.dev; in nv50_mstm_new()
1617 mstm->outp = outp; in nv50_mstm_new()
1621 max_payloads, outp->dcb->dpconf.link_nr, in nv50_mstm_new()
1622 drm_dp_bw_code_to_link_rate(outp->dcb->dpconf.link_bw), in nv50_mstm_new()
2127 struct nv50_outp_atom *outp, *outt; in nv50_disp_atomic_commit_tail() local
2175 list_for_each_entry(outp, &atom->outp, head) { in nv50_disp_atomic_commit_tail()
2179 encoder = outp->encoder; in nv50_disp_atomic_commit_tail()
2183 outp->clr.mask, outp->set.mask); in nv50_disp_atomic_commit_tail()
2185 if (outp->clr.mask) { in nv50_disp_atomic_commit_tail()
2188 if (outp->flush_disable) { in nv50_disp_atomic_commit_tail()
2214 list_for_each_entry_safe(outp, outt, &atom->outp, head) { in nv50_disp_atomic_commit_tail()
2218 encoder = outp->encoder; in nv50_disp_atomic_commit_tail()
2222 outp->set.mask, outp->clr.mask); in nv50_disp_atomic_commit_tail()
2224 if (outp->set.mask) { in nv50_disp_atomic_commit_tail()
2229 list_del(&outp->head); in nv50_disp_atomic_commit_tail()
2230 kfree(outp); in nv50_disp_atomic_commit_tail()
2441 struct nv50_outp_atom *outp; in nv50_disp_outp_atomic_add() local
2443 list_for_each_entry(outp, &atom->outp, head) { in nv50_disp_outp_atomic_add()
2444 if (outp->encoder == encoder) in nv50_disp_outp_atomic_add()
2445 return outp; in nv50_disp_outp_atomic_add()
2448 outp = kzalloc(sizeof(*outp), GFP_KERNEL); in nv50_disp_outp_atomic_add()
2449 if (!outp) in nv50_disp_outp_atomic_add()
2452 list_add(&outp->head, &atom->outp); in nv50_disp_outp_atomic_add()
2453 outp->encoder = encoder; in nv50_disp_outp_atomic_add()
2454 return outp; in nv50_disp_outp_atomic_add()
2464 struct nv50_outp_atom *outp; in nv50_disp_outp_atomic_check_clr() local
2472 outp = nv50_disp_outp_atomic_add(atom, encoder); in nv50_disp_outp_atomic_check_clr()
2473 if (IS_ERR(outp)) in nv50_disp_outp_atomic_check_clr()
2474 return PTR_ERR(outp); in nv50_disp_outp_atomic_check_clr()
2476 if (outp->encoder->encoder_type == DRM_MODE_ENCODER_DPMST) { in nv50_disp_outp_atomic_check_clr()
2477 outp->flush_disable = true; in nv50_disp_outp_atomic_check_clr()
2480 outp->clr.ctrl = true; in nv50_disp_outp_atomic_check_clr()
2494 struct nv50_outp_atom *outp; in nv50_disp_outp_atomic_check_set() local
2501 outp = nv50_disp_outp_atomic_add(atom, encoder); in nv50_disp_outp_atomic_check_set()
2502 if (IS_ERR(outp)) in nv50_disp_outp_atomic_check_set()
2503 return PTR_ERR(outp); in nv50_disp_outp_atomic_check_set()
2505 outp->set.ctrl = true; in nv50_disp_outp_atomic_check_set()
2574 struct nv50_outp_atom *outp, *outt; in nv50_disp_atomic_state_clear() local
2576 list_for_each_entry_safe(outp, outt, &atom->outp, head) { in nv50_disp_atomic_state_clear()
2577 list_del(&outp->head); in nv50_disp_atomic_state_clear()
2578 kfree(outp); in nv50_disp_atomic_state_clear()
2601 INIT_LIST_HEAD(&atom->outp); in nv50_disp_atomic_state_alloc()