Lines Matching defs:outp

324 		    struct nouveau_encoder *outp)
327 outp->base.base.name, outp->caps.dp_interlace);
431 nv50_outp_get_new_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp)
435 struct drm_encoder *encoder = to_drm_encoder(outp);
447 nv50_outp_get_old_connector(struct drm_atomic_state *state, struct nouveau_encoder *outp)
451 struct drm_encoder *encoder = to_drm_encoder(outp);
463 nv50_outp_get_new_crtc(const struct drm_atomic_state *state, const struct nouveau_encoder *outp)
467 const u32 mask = drm_encoder_mask(&outp->base.base);
488 core->func->dac->ctrl(core, nv_encoder->outp.or.id, ctrl, NULL);
514 if (!nvif_outp_acquired(&nv_encoder->outp))
515 nvif_outp_acquire_dac(&nv_encoder->outp);
517 core->func->dac->ctrl(core, nv_encoder->outp.or.id, ctrl, asyh);
534 ret = nvif_outp_load_detect(&nv_encoder->outp, loadval);
554 nvif_outp_dtor(&nv_encoder->outp);
625 if (!nv_crtc || nv_encoder->outp.or.id != port || nv_crtc->index != dev_id)
736 struct nvif_outp *outp = &nv_encoder->outp;
744 nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, NULL, 0);
748 nv50_audio_component_eld_notify(drm->audio.component, outp->or.id, nv_crtc->index);
758 struct nvif_outp *outp = &nv_encoder->outp;
765 nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, nv_connector->base.eld,
771 nv50_audio_component_eld_notify(drm->audio.component, outp->or.id, nv_crtc->index);
819 ret = nvif_outp_hdmi(&nv_encoder->outp, nv_crtc->index, true, max_ac_packet, rekey,
838 nvif_outp_infoframe(&nv_encoder->outp, NVIF_OUTP_INFOFRAME_V0_AVI, args, size);
848 nvif_outp_infoframe(&nv_encoder->outp, NVIF_OUTP_INFOFRAME_V0_VSI, args, size);
891 return msto->mstc->mstm->outp;
914 nvif_outp_dp_mst_id_put(&mstm->outp->outp, msto->display_id);
945 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, 0, 0, 0, 0);
953 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index,
958 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, 0, 0, 0, 0);
1001 struct nouveau_encoder *outp = mstc->mstm->outp;
1003 mst_state->pbn_div = drm_dp_get_vc_payload_bw(outp->dp.link_bw, outp->dp.link_nr);
1053 nvif_outp_acquire_sor(&mstm->outp->outp, false /*TODO: MST audio... */);
1054 nouveau_dp_train(mstm->outp, true, 0, 0);
1058 if (!WARN_ON(nvif_outp_dp_mst_id_get(&mstm->outp->outp, &msto->display_id)))
1062 if (mstm->outp->outp.or.link & 1)
1067 mstm->outp->update(mstm->outp, head->base.index, asyh, proto,
1085 mstm->outp->update(mstm->outp, msto->head->base.index, NULL, 0, 0);
1144 if (!(mstc->mstm->outp->dcb->heads & drm_crtc_mask(crtc)))
1155 struct nouveau_encoder *outp = mstc->mstm->outp;
1161 return nv50_dp_mode_valid(outp, mode, NULL);
1265 struct drm_device *dev = mstm->outp->base.base.dev;
1289 if (!(mstm->outp->dcb->heads & drm_crtc_mask(crtc)))
1308 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev);
1311 NV_ATOMIC(drm, "%s: mstm cleanup\n", mstm->outp->base.base.name);
1314 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1324 nouveau_dp_power_down(mstm->outp);
1325 nvif_outp_release(&mstm->outp->outp);
1337 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev);
1340 NV_ATOMIC(drm, "%s: mstm prepare\n", mstm->outp->base.base.name);
1343 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1355 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1433 nv50_mstm_detect(struct nouveau_encoder *outp)
1435 struct nv50_mstm *mstm = outp->dp.mstm;
1461 nv50_mstm_fini(struct nouveau_encoder *outp)
1463 struct nv50_mstm *mstm = outp->dp.mstm;
1472 mutex_lock(&outp->dp.hpd_irq_lock);
1474 mutex_unlock(&outp->dp.hpd_irq_lock);
1481 nv50_mstm_init(struct nouveau_encoder *outp, bool runtime)
1483 struct nv50_mstm *mstm = outp->dp.mstm;
1495 mutex_lock(&outp->dp.hpd_irq_lock);
1497 mutex_unlock(&outp->dp.hpd_irq_lock);
1515 nv50_mstm_new(struct nouveau_encoder *outp, struct drm_dp_aux *aux, int aux_max,
1518 const int max_payloads = hweight8(outp->dcb->heads);
1519 struct drm_device *dev = outp->base.base.dev;
1525 mstm->outp = outp;
1556 core->func->sor->ctrl(core, nv_encoder->outp.or.id, nv_encoder->ctrl, asyh);
1585 nvif_outp_hdmi(&nv_encoder->outp, head->base.index,
1608 nv50_sor_dp_watermark_sst(struct nouveau_encoder *outp,
1611 bool enhancedFraming = outp->dp.dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP;
1612 u64 minRate = outp->dp.link_bw * 1000;
1630 u32 numLanesPerLink = outp->dp.link_nr;
1638 if (outp->outp.info.dp.increased_wm) {
1643 if ((pixelClockHz * depth) >= (8 * minRate * outp->dp.link_nr * DSC_FACTOR))
1653 ((pixelClockHz * depth) < div_u64(8 * minRate * outp->dp.link_nr * DSC_FACTOR, 64)))
1665 ratioF = div_u64(ratioF, 8 * (u64) minRate * outp->dp.link_nr);
1676 numSymbolsPerLine = div_u64(surfaceWidth * depth, 8 * outp->dp.link_nr * DSC_FACTOR);
1740 return nvif_outp_dp_sst(&outp->outp, head->base.index, waterMark, hBlankSym, vBlankSym);
1753 struct nvif_outp *outp = &nv_encoder->outp;
1774 if (!nvif_outp_acquired(outp))
1775 nvif_outp_acquire_sor(outp, hda);
1783 if (nv_encoder->outp.or.link & 1) {
1826 nvif_outp_lvds(&nv_encoder->outp, lvds_dual, lvds_8bpc);
1833 if (nv_encoder->outp.or.link & 1)
1852 head->func->display_id(head, BIT(nv_encoder->outp.id));
1875 nvif_outp_dtor(&nv_encoder->outp);
1936 if (nv_connector->type != DCB_CONNECTOR_eDP && nv_encoder->outp.info.dp.mst) {
1944 if (nv_encoder->outp.info.ddc != NVIF_OUTP_DDC_INVALID) {
1976 core->func->pior->ctrl(core, nv_encoder->outp.or.id, ctrl, NULL);
2005 if (!nvif_outp_acquired(&nv_encoder->outp))
2006 nvif_outp_acquire_pior(&nv_encoder->outp);
2021 core->func->pior->ctrl(core, nv_encoder->outp.or.id, ctrl, asyh);
2037 nvif_outp_dtor(&nv_encoder->outp);
2067 bus = nvkm_i2c_bus_find(i2c, nv_encoder->outp.info.ddc);
2072 aux = nvkm_i2c_aux_find(i2c, nv_encoder->outp.info.dp.aux);
2110 struct nv50_outp_atom *outp;
2134 list_for_each_entry(outp, &atom->outp, head) {
2135 if (outp->encoder->encoder_type != DRM_MODE_ENCODER_DPMST) {
2136 struct nouveau_encoder *nv_encoder = nouveau_encoder(outp->encoder);
2138 if (outp->enabled) {
2139 nv50_audio_enable(outp->encoder, nouveau_crtc(nv_encoder->crtc),
2141 outp->enabled = outp->disabled = false;
2143 if (outp->disabled) {
2144 nvif_outp_release(&nv_encoder->outp);
2145 outp->disabled = false;
2180 struct nv50_outp_atom *outp, *outt;
2229 list_for_each_entry(outp, &atom->outp, head) {
2233 encoder = outp->encoder;
2237 outp->clr.mask, outp->set.mask);
2239 if (outp->clr.mask) {
2241 outp->disabled = true;
2262 list_for_each_entry(outp, &atom->outp, head) {
2266 encoder = outp->encoder;
2270 outp->set.mask, outp->clr.mask);
2272 if (outp->set.mask) {
2274 outp->enabled = true;
2374 list_for_each_entry_safe(outp, outt, &atom->outp, head) {
2375 list_del(&outp->head);
2376 kfree(outp);
2492 struct nv50_outp_atom *outp;
2494 list_for_each_entry(outp, &atom->outp, head) {
2495 if (outp->encoder == encoder)
2496 return outp;
2499 outp = kzalloc(sizeof(*outp), GFP_KERNEL);
2500 if (!outp)
2503 list_add(&outp->head, &atom->outp);
2504 outp->encoder = encoder;
2505 return outp;
2515 struct nv50_outp_atom *outp;
2523 outp = nv50_disp_outp_atomic_add(atom, encoder);
2524 if (IS_ERR(outp))
2525 return PTR_ERR(outp);
2527 if (outp->encoder->encoder_type == DRM_MODE_ENCODER_DPMST ||
2528 nouveau_encoder(outp->encoder)->dcb->type == DCB_OUTPUT_DP)
2530 outp->clr.ctrl = true;
2544 struct nv50_outp_atom *outp;
2551 outp = nv50_disp_outp_atomic_add(atom, encoder);
2552 if (IS_ERR(outp))
2553 return PTR_ERR(outp);
2555 outp->set.ctrl = true;
2624 struct nv50_outp_atom *outp, *outt;
2626 list_for_each_entry_safe(outp, outt, &atom->outp, head) {
2627 list_del(&outp->head);
2628 kfree(outp);
2651 INIT_LIST_HEAD(&atom->outp);
2691 struct nouveau_encoder *outp)
2697 const u32 encoder_mask = drm_encoder_mask(&outp->base.base);
2703 switch (outp->dcb->type) {
2705 ret = nvif_outp_inherit_tmds(&outp->outp, &proto);
2708 ret = nvif_outp_inherit_dp(&outp->outp, &proto);
2711 ret = nvif_outp_inherit_lvds(&outp->outp, &proto);
2714 ret = nvif_outp_inherit_rgb_crt(&outp->outp, &proto);
2718 outp->base.base.name);
2742 if (nouveau_connector(conn)->index == outp->dcb->connector) {
2757 outp->crtc = crtc;
2758 outp->ctrl = NVVAL(NV507D, SOR_SET_CONTROL, PROTOCOL, proto) | BIT(crtc->index);
2762 conn->state->best_encoder = &outp->base.base;
2899 struct nouveau_encoder *outp;
2901 outp = kzalloc(sizeof(*outp), GFP_KERNEL);
2902 if (!outp)
2905 ret = nvif_outp_ctor(disp->disp, "kmsOutp", i, &outp->outp);
2907 kfree(outp);
2911 connector = nouveau_connector_create(dev, outp->outp.info.conn);
2913 nvif_outp_dtor(&outp->outp);
2914 kfree(outp);
2918 outp->base.base.possible_crtcs = outp->outp.info.heads;
2919 outp->base.base.possible_clones = 0;
2920 outp->conn = nouveau_connector(connector);
2922 outp->dcb = kzalloc(sizeof(*outp->dcb), GFP_KERNEL);
2923 if (!outp->dcb)
2926 switch (outp->outp.info.proto) {
2928 outp->dcb->type = DCB_OUTPUT_ANALOG;
2929 outp->dcb->crtconf.maxfreq = outp->outp.info.rgb_crt.freq_max;
2932 outp->dcb->type = DCB_OUTPUT_TMDS;
2933 outp->dcb->duallink_possible = outp->outp.info.tmds.dual;
2936 outp->dcb->type = DCB_OUTPUT_LVDS;
2937 outp->dcb->lvdsconf.use_acpi_for_edid = outp->outp.info.lvds.acpi_edid;
2940 outp->dcb->type = DCB_OUTPUT_DP;
2941 outp->dcb->dpconf.link_nr = outp->outp.info.dp.link_nr;
2942 outp->dcb->dpconf.link_bw = outp->outp.info.dp.link_bw;
2943 if (outp->outp.info.dp.mst)
2951 outp->dcb->heads = outp->outp.info.heads;
2952 outp->dcb->connector = outp->outp.info.conn;
2953 outp->dcb->i2c_index = outp->outp.info.ddc;
2955 switch (outp->outp.info.type) {
2956 case NVIF_OUTP_DAC : ret = nv50_dac_create(outp); break;
2957 case NVIF_OUTP_SOR : ret = nv50_sor_create(outp); break;
2958 case NVIF_OUTP_PIOR: ret = nv50_pior_create(outp); break;
2966 i, outp->outp.info.type, outp->outp.info.proto, ret);