static int intel_conn_to_vcpi(struct intel_atomic_state *state,
struct intel_connector *connector)
{
+ struct intel_display *display = to_intel_display(state);
struct drm_dp_mst_topology_mgr *mgr;
struct drm_dp_mst_atomic_payload *payload;
struct drm_dp_mst_topology_state *mst_state;
mgr = connector->mst.port->mgr;
drm_modeset_lock(&mgr->base.lock, state->base.acquire_ctx);
- mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
+ mst_state = drm_atomic_get_new_mst_topology_state(&state->base, mgr);
+ if (!mst_state) {
+ drm_dbg_kms(display->drm, "MST topology still not created\n");
+ return 0;
+ }
+
payload = drm_atomic_get_mst_payload_state(mst_state, connector->mst.port);
- if (drm_WARN_ON(mgr->dev, !payload))
+ if (!payload) {
+ drm_dbg_kms(display->drm, "MST Payload not present\n");
return 0;
+ }
return payload->vcpi;
}