From 7fc20e2dfe428cdddd170187802bab075144e473 Mon Sep 17 00:00:00 2001 From: Zhang Yubing Date: Tue, 7 May 2024 11:32:19 +0800 Subject: [PATCH] drm/rockchip: dw-dp: support fix virtual channel payload id For simulation aux client, the virtual channel pyaload id can't send by sideband MSG. In this case, the MST device often config a fix payload id. It need DPTX also config fix payload id to match the MST device. Change-Id: I49148e92a80091a50a5b1f44496430f39d9c1aee Signed-off-by: Zhang Yubing --- drivers/gpu/drm/rockchip/dw-dp.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/rockchip/dw-dp.c b/drivers/gpu/drm/rockchip/dw-dp.c index c8ab7ce2a657..296387d22397 100644 --- a/drivers/gpu/drm/rockchip/dw-dp.c +++ b/drivers/gpu/drm/rockchip/dw-dp.c @@ -3858,6 +3858,7 @@ static int dw_dp_mst_encoder_atomic_check(struct drm_encoder *encoder, struct dw_dp_mst_conn *mst_conn = container_of(connector, struct dw_dp_mst_conn, connector); struct drm_dp_mst_topology_state *mst_state; + struct drm_dp_mst_atomic_payload *payload; int pbn, slot; mst_state = drm_atomic_get_mst_topology_state(crtc_state->state, &dp->mst_mgr); @@ -3918,6 +3919,14 @@ static int dw_dp_mst_encoder_atomic_check(struct drm_encoder *encoder, drm_dp_mst_update_slots(mst_state, DP_CAP_ANSI_8B10B); + payload = drm_atomic_get_mst_payload_state(mst_state, mst_conn->port); + if (dp->aux_client && !payload->vcpi) { + payload->vcpi = mst_enc->stream_id + 1; + dev_info(dp->dev, "[MST PORT:%p] assigned VCPI #%d\n", + payload->port, payload->vcpi); + mst_state->payload_mask |= BIT(payload->vcpi - 1); + } + return 0; }