Lines Matching defs:mstm

852 	struct nv50_mstm *mstm;
880 return msto->mstc->mstm->outp;
912 struct nv50_mstm *mstm = mstc->mstm;
927 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index, 0, 0, 0, 0);
932 nvif_outp_dp_mst_vcpi(&mstm->outp->outp, msto->head->base.index,
947 struct nv50_mstm *mstm = mstc->mstm;
972 mst_state = drm_atomic_get_mst_topology_state(state, &mstm->mgr);
977 struct nouveau_encoder *outp = mstc->mstm->outp;
979 mst_state->pbn_div = drm_dp_get_vc_payload_bw(&mstm->mgr,
983 slots = drm_dp_atomic_find_time_slots(state, &mstm->mgr, mstc->port, asyh->dp.pbn);
1011 struct nv50_mstm *mstm = NULL;
1020 mstm = mstc->mstm;
1029 if (!mstm->links++) {
1031 nvif_outp_acquire_dp(&mstm->outp->outp, mstm->outp->dp.dpcd, 0, 0, false, true);
1034 if (mstm->outp->outp.or.link & 1)
1039 mstm->outp->update(mstm->outp, head->base.index, asyh, proto,
1044 mstm->modified = true;
1052 struct nv50_mstm *mstm = mstc->mstm;
1054 mstm->outp->update(mstm->outp, msto->head->base.index, NULL, 0, 0);
1055 mstm->modified = true;
1056 if (!--mstm->links)
1057 mstm->disabled = true;
1113 if (!(mstc->mstm->outp->dcb->heads & drm_crtc_mask(crtc)))
1124 struct nouveau_encoder *outp = mstc->mstm->outp;
1167 struct drm_dp_mst_topology_mgr *mgr = &mstc->mstm->mgr;
1231 nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
1234 struct drm_device *dev = mstm->outp->base.base.dev;
1241 mstc->mstm = mstm;
1258 if (!(mstm->outp->dcb->heads & drm_crtc_mask(crtc)))
1275 struct nv50_mstm *mstm)
1277 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev);
1280 NV_ATOMIC(drm, "%s: mstm cleanup\n", mstm->outp->base.base.name);
1281 drm_dp_check_act_status(&mstm->mgr);
1283 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1287 if (mstc && mstc->mstm == mstm)
1288 nv50_msto_cleanup(state, mst_state, &mstm->mgr, msto);
1292 mstm->modified = false;
1298 struct nv50_mstm *mstm)
1300 struct nouveau_drm *drm = nouveau_drm(mstm->outp->base.base.dev);
1303 NV_ATOMIC(drm, "%s: mstm prepare\n", mstm->outp->base.base.name);
1306 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1310 if (mstc && mstc->mstm == mstm && msto->disabled)
1311 nv50_msto_prepare(state, mst_state, &mstm->mgr, msto);
1318 drm_for_each_encoder(encoder, mstm->outp->base.base.dev) {
1322 if (mstc && mstc->mstm == mstm && !msto->disabled)
1323 nv50_msto_prepare(state, mst_state, &mstm->mgr, msto);
1327 if (mstm->disabled) {
1328 if (!mstm->links)
1329 nvif_outp_release(&mstm->outp->outp);
1330 mstm->disabled = false;
1338 struct nv50_mstm *mstm = nv50_mstm(mgr);
1342 ret = nv50_mstc_new(mstm, port, path, &mstc);
1357 struct nv50_mstm *mstm)
1373 drm_dp_mst_hpd_irq_handle_event(&mstm->mgr, esi, ack, &handled);
1384 drm_dp_mst_hpd_irq_send_new_request(&mstm->mgr);
1395 nv50_mstm_remove(struct nv50_mstm *mstm)
1397 mstm->is_mst = false;
1398 drm_dp_mst_topology_mgr_set_mst(&mstm->mgr, false);
1404 struct nv50_mstm *mstm = outp->dp.mstm;
1408 if (!mstm || !mstm->can_mst)
1411 aux = mstm->mgr.aux;
1421 ret = drm_dp_mst_topology_mgr_set_mst(&mstm->mgr, true);
1425 mstm->is_mst = true;
1432 struct nv50_mstm *mstm = outp->dp.mstm;
1434 if (!mstm)
1439 * path to protect mstm->is_mst without potentially deadlocking
1442 mstm->suspended = true;
1445 if (mstm->is_mst)
1446 drm_dp_mst_topology_mgr_suspend(&mstm->mgr);
1452 struct nv50_mstm *mstm = outp->dp.mstm;
1455 if (!mstm)
1458 if (mstm->is_mst) {
1459 ret = drm_dp_mst_topology_mgr_resume(&mstm->mgr, !runtime);
1461 nv50_mstm_remove(mstm);
1465 mstm->suspended = false;
1469 drm_kms_helper_hotplug_event(mstm->mgr.dev);
1475 struct nv50_mstm *mstm = *pmstm;
1476 if (mstm) {
1477 drm_dp_mst_topology_mgr_destroy(&mstm->mgr);
1489 struct nv50_mstm *mstm;
1492 if (!(mstm = *pmstm = kzalloc(sizeof(*mstm), GFP_KERNEL)))
1494 mstm->outp = outp;
1495 mstm->mgr.cbs = &nv50_mstm;
1497 ret = drm_dp_mst_topology_mgr_init(&mstm->mgr, dev, aux, aux_max,
1695 nv50_mstm_del(&nv_encoder->dp.mstm);
1780 &nv_encoder->dp.mstm);
1954 struct nv50_mstm *mstm;
1960 mstm = nv50_mstm(mgr);
1961 if (mstm->modified)
1962 nv50_mstm_prepare(state, mst_state, mstm);
1972 mstm = nv50_mstm(mgr);
1973 if (mstm->modified)
1974 nv50_mstm_cleanup(state, mst_state, mstm);