Lines Matching refs:outp

315 		    struct nouveau_encoder *outp)
318 outp->base.base.name, outp->caps.dp_interlace);
422 nv50_outp_get_new_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp)
426 struct drm_encoder *encoder = to_drm_encoder(outp);
438 nv50_outp_get_old_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp)
442 struct drm_encoder *encoder = to_drm_encoder(outp);
454 nv50_outp_get_new_crtc(const struct drm_atomic_state *state, const struct nouveau_encoder *outp)
458 const u32 mask = drm_encoder_mask(&outp->base.base);
479 core->func->dac->ctrl(core, nv_encoder->outp.or.id, ctrl, NULL);
505 if (!nvif_outp_acquired(&nv_encoder->outp))
506 nvif_outp_acquire_dac(&nv_encoder->outp);
508 core->func->dac->ctrl(core, nv_encoder->outp.or.id, ctrl, asyh);
525 ret = nvif_outp_load_detect(&nv_encoder->outp, loadval);
545 nvif_outp_dtor(&nv_encoder->outp);
617 if (!nv_crtc || nv_encoder->outp.or.id != port || nv_crtc->index != dev_id)
730 struct nvif_outp *outp = &nv_encoder->outp;
738 nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, NULL, 0);
742 nv50_audio_component_eld_notify(drm->audio.component, outp->or.id, nv_crtc->index);
752 struct nvif_outp *outp = &nv_encoder->outp;
759 nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, nv_connector->base.eld,
765 nv50_audio_component_eld_notify(drm->audio.component, outp->or.id, nv_crtc->index);
815 ret = nvif_outp_hdmi(&nv_encoder->outp, nv_crtc->index, true, max_ac_packet, rekey,
834 nvif_outp_infoframe(&nv_encoder->outp, NVIF_OUTP_INFOFRAME_V0_AVI, &args.infoframe, size);
844 nvif_outp_infoframe(&nv_encoder->outp, NVIF_OUTP_INFOFRAME_V0_VSI, &args.infoframe, size);
887 return msto->mstc->mstm->outp;
910 nvif_outp_dp_mst_id_put(&mstm->outp->outp, msto->display_id);
941 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, 0, 0, 0, 0);
949 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index,
954 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, 0, 0, 0, 0);
997 struct nouveau_encoder *outp = mstc->mstm->outp;
1000 outp->dp.link_bw, outp->dp.link_nr);
1050 nvif_outp_acquire_sor(&mstm->outp->outp, false /*TODO: MST audio... */);
1051 nouveau_dp_train(mstm->outp, true, 0, 0);
1055 if (!WARN_ON(nvif_outp_dp_mst_id_get(&mstm->outp->outp, &msto->display_id)))
1059 if (mstm->outp->outp.or.link & 1)
1064 mstm->outp->update(mstm->outp, head->base.index, asyh, proto,
1082 mstm->outp->update(mstm->outp, msto->head->base.index, NULL, 0, 0);
1141 if (!(mstc->mstm->outp->dcb->heads & drm_crtc_mask(crtc)))
1152 struct nouveau_encoder *outp = mstc->mstm->outp;
1158 return nv50_dp_mode_valid(outp, mode, NULL);
1262 struct drm_device *dev = mstm->outp->base.base.dev;
1286 if (!(mstm->outp->dcb->heads & drm_crtc_mask(crtc)))
1305 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev);
1308 NV_ATOMIC(drm, "%s: mstm cleanup\n", mstm->outp->base.base.name);
1311 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1321 nouveau_dp_power_down(mstm->outp);
1322 nvif_outp_release(&mstm->outp->outp);
1334 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev);
1337 NV_ATOMIC(drm, "%s: mstm prepare\n", mstm->outp->base.base.name);
1340 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1352 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1430 nv50_mstm_detect(struct nouveau_encoder *outp)
1432 struct nv50_mstm *mstm = outp->dp.mstm;
1458 nv50_mstm_fini(struct nouveau_encoder *outp)
1460 struct nv50_mstm *mstm = outp->dp.mstm;
1469 mutex_lock(&outp->dp.hpd_irq_lock);
1471 mutex_unlock(&outp->dp.hpd_irq_lock);
1478 nv50_mstm_init(struct nouveau_encoder *outp, bool runtime)
1480 struct nv50_mstm *mstm = outp->dp.mstm;
1492 mutex_lock(&outp->dp.hpd_irq_lock);
1494 mutex_unlock(&outp->dp.hpd_irq_lock);
1512 nv50_mstm_new(struct nouveau_encoder *outp, struct drm_dp_aux *aux, int aux_max,
1515 const int max_payloads = hweight8(outp->dcb->heads);
1516 struct drm_device *dev = outp->base.base.dev;
1522 mstm->outp = outp;
1553 core->func->sor->ctrl(core, nv_encoder->outp.or.id, nv_encoder->ctrl, asyh);
1582 nvif_outp_hdmi(&nv_encoder->outp, head->base.index,
1605 nv50_sor_dp_watermark_sst(struct nouveau_encoder *outp,
1608 bool enhancedFraming = outp->dp.dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP;
1609 u64 minRate = outp->dp.link_bw * 1000;
1627 u32 numLanesPerLink = outp->dp.link_nr;
1635 if (outp->outp.info.dp.increased_wm) {
1640 if ((pixelClockHz * depth) >= (8 * minRate * outp->dp.link_nr * DSC_FACTOR))
1650 ((pixelClockHz * depth) < div_u64(8 * minRate * outp->dp.link_nr * DSC_FACTOR, 64)))
1662 ratioF = div_u64(ratioF, 8 * (u64) minRate * outp->dp.link_nr);
1673 numSymbolsPerLine = div_u64(surfaceWidth * depth, 8 * outp->dp.link_nr * DSC_FACTOR);
1737 return nvif_outp_dp_sst(&outp->outp, head->base.index, waterMark, hBlankSym, vBlankSym);
1750 struct nvif_outp *outp = &nv_encoder->outp;
1771 if (!nvif_outp_acquired(outp))
1772 nvif_outp_acquire_sor(outp, hda);
1780 if (nv_encoder->outp.or.link & 1) {
1823 nvif_outp_lvds(&nv_encoder->outp, lvds_dual, lvds_8bpc);
1830 if (nv_encoder->outp.or.link & 1)
1849 head->func->display_id(head, BIT(nv_encoder->outp.id));
1872 nvif_outp_dtor(&nv_encoder->outp);
1933 if (nv_connector->type != DCB_CONNECTOR_eDP && nv_encoder->outp.info.dp.mst) {
1941 if (nv_encoder->outp.info.ddc != NVIF_OUTP_DDC_INVALID) {
1973 core->func->pior->ctrl(core, nv_encoder->outp.or.id, ctrl, NULL);
2002 if (!nvif_outp_acquired(&nv_encoder->outp))
2003 nvif_outp_acquire_pior(&nv_encoder->outp);
2018 core->func->pior->ctrl(core, nv_encoder->outp.or.id, ctrl, asyh);
2034 nvif_outp_dtor(&nv_encoder->outp);
2064 bus = nvkm_i2c_bus_find(i2c, nv_encoder->outp.info.ddc);
2069 aux = nvkm_i2c_aux_find(i2c, nv_encoder->outp.info.dp.aux);
2107 struct nv50_outp_atom *outp;
2131 list_for_each_entry(outp, &atom->outp, head) {
2132 if (outp->encoder->encoder_type != DRM_MODE_ENCODER_DPMST) {
2133 struct nouveau_encoder *nv_encoder = nouveau_encoder(outp->encoder);
2135 if (outp->enabled) {
2136 nv50_audio_enable(outp->encoder, nouveau_crtc(nv_encoder->crtc),
2138 outp->enabled = outp->disabled = false;
2140 if (outp->disabled) {
2141 nvif_outp_release(&nv_encoder->outp);
2142 outp->disabled = false;
2177 struct nv50_outp_atom *outp, *outt;
2226 list_for_each_entry(outp, &atom->outp, head) {
2230 encoder = outp->encoder;
2234 outp->clr.mask, outp->set.mask);
2236 if (outp->clr.mask) {
2238 outp->disabled = true;
2259 list_for_each_entry(outp, &atom->outp, head) {
2263 encoder = outp->encoder;
2267 outp->set.mask, outp->clr.mask);
2269 if (outp->set.mask) {
2271 outp->enabled = true;
2371 list_for_each_entry_safe(outp, outt, &atom->outp, head) {
2372 list_del(&outp->head);
2373 kfree(outp);
2489 struct nv50_outp_atom *outp;
2491 list_for_each_entry(outp, &atom->outp, head) {
2492 if (outp->encoder == encoder)
2493 return outp;
2496 outp = kzalloc(sizeof(*outp), GFP_KERNEL);
2497 if (!outp)
2500 list_add(&outp->head, &atom->outp);
2501 outp->encoder = encoder;
2502 return outp;
2512 struct nv50_outp_atom *outp;
2520 outp = nv50_disp_outp_atomic_add(atom, encoder);
2521 if (IS_ERR(outp))
2522 return PTR_ERR(outp);
2524 if (outp->encoder->encoder_type == DRM_MODE_ENCODER_DPMST ||
2525 nouveau_encoder(outp->encoder)->dcb->type == DCB_OUTPUT_DP)
2527 outp->clr.ctrl = true;
2541 struct nv50_outp_atom *outp;
2548 outp = nv50_disp_outp_atomic_add(atom, encoder);
2549 if (IS_ERR(outp))
2550 return PTR_ERR(outp);
2552 outp->set.ctrl = true;
2621 struct nv50_outp_atom *outp, *outt;
2623 list_for_each_entry_safe(outp, outt, &atom->outp, head) {
2624 list_del(&outp->head);
2625 kfree(outp);
2648 INIT_LIST_HEAD(&atom->outp);
2689 struct nouveau_encoder *outp)
2695 const u32 encoder_mask = drm_encoder_mask(&outp->base.base);
2701 switch (outp->dcb->type) {
2703 ret = nvif_outp_inherit_tmds(&outp->outp, &proto);
2706 ret = nvif_outp_inherit_dp(&outp->outp, &proto);
2709 ret = nvif_outp_inherit_lvds(&outp->outp, &proto);
2712 ret = nvif_outp_inherit_rgb_crt(&outp->outp, &proto);
2716 outp->base.base.name);
2740 if (nouveau_connector(conn)->index == outp->dcb->connector) {
2755 outp->crtc = crtc;
2756 outp->ctrl = NVVAL(NV507D, SOR_SET_CONTROL, PROTOCOL, proto) | BIT(crtc->index);
2760 conn->state->best_encoder = &outp->base.base;
2913 struct nouveau_encoder *outp;
2915 outp = kzalloc(sizeof(*outp), GFP_KERNEL);
2916 if (!outp)
2919 ret = nvif_outp_ctor(disp->disp, "kmsOutp", i, &outp->outp);
2921 kfree(outp);
2925 connector = nouveau_connector_create(dev, outp->outp.info.conn);
2927 nvif_outp_dtor(&outp->outp);
2928 kfree(outp);
2932 outp->base.base.possible_crtcs = outp->outp.info.heads;
2933 outp->base.base.possible_clones = 0;
2934 outp->conn = nouveau_connector(connector);
2936 outp->dcb = kzalloc(sizeof(*outp->dcb), GFP_KERNEL);
2937 if (!outp->dcb)
2940 switch (outp->outp.info.proto) {
2942 outp->dcb->type = DCB_OUTPUT_ANALOG;
2943 outp->dcb->crtconf.maxfreq = outp->outp.info.rgb_crt.freq_max;
2946 outp->dcb->type = DCB_OUTPUT_TMDS;
2947 outp->dcb->duallink_possible = outp->outp.info.tmds.dual;
2950 outp->dcb->type = DCB_OUTPUT_LVDS;
2951 outp->dcb->lvdsconf.use_acpi_for_edid = outp->outp.info.lvds.acpi_edid;
2954 outp->dcb->type = DCB_OUTPUT_DP;
2955 outp->dcb->dpconf.link_nr = outp->outp.info.dp.link_nr;
2956 outp->dcb->dpconf.link_bw = outp->outp.info.dp.link_bw;
2957 if (outp->outp.info.dp.mst)
2965 outp->dcb->heads = outp->outp.info.heads;
2966 outp->dcb->connector = outp->outp.info.conn;
2967 outp->dcb->i2c_index = outp->outp.info.ddc;
2969 switch (outp->outp.info.type) {
2970 case NVIF_OUTP_DAC : ret = nv50_dac_create(outp); break;
2971 case NVIF_OUTP_SOR : ret = nv50_sor_create(outp); break;
2972 case NVIF_OUTP_PIOR: ret = nv50_pior_create(outp); break;
2980 i, outp->outp.info.type, outp->outp.info.proto, ret);