aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_dp_mst_topology.c12
-rw-r--r--drivers/gpu/drm/i915/intel_dp_mst.c17
-rw-r--r--drivers/gpu/drm/nouveau/dispnv50/disp.c3
3 files changed, 9 insertions, 23 deletions
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index db0fdc513b9c..dc7ac0c60547 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -3117,10 +3117,6 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
3117 if (IS_ERR(topology_state)) 3117 if (IS_ERR(topology_state))
3118 return PTR_ERR(topology_state); 3118 return PTR_ERR(topology_state);
3119 3119
3120 port = drm_dp_mst_topology_get_port_validated(mgr, port);
3121 if (port == NULL)
3122 return -EINVAL;
3123
3124 /* Find the current allocation for this port, if any */ 3120 /* Find the current allocation for this port, if any */
3125 list_for_each_entry(pos, &topology_state->vcpis, next) { 3121 list_for_each_entry(pos, &topology_state->vcpis, next) {
3126 if (pos->port == port) { 3122 if (pos->port == port) {
@@ -3153,10 +3149,8 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
3153 /* Add the new allocation to the state */ 3149 /* Add the new allocation to the state */
3154 if (!vcpi) { 3150 if (!vcpi) {
3155 vcpi = kzalloc(sizeof(*vcpi), GFP_KERNEL); 3151 vcpi = kzalloc(sizeof(*vcpi), GFP_KERNEL);
3156 if (!vcpi) { 3152 if (!vcpi)
3157 ret = -ENOMEM; 3153 return -ENOMEM;
3158 goto out;
3159 }
3160 3154
3161 drm_dp_mst_get_port_malloc(port); 3155 drm_dp_mst_get_port_malloc(port);
3162 vcpi->port = port; 3156 vcpi->port = port;
@@ -3165,8 +3159,6 @@ int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
3165 vcpi->vcpi = req_slots; 3159 vcpi->vcpi = req_slots;
3166 3160
3167 ret = req_slots; 3161 ret = req_slots;
3168out:
3169 drm_dp_mst_topology_put_port(port);
3170 return ret; 3162 return ret;
3171} 3163}
3172EXPORT_SYMBOL(drm_dp_atomic_find_vcpi_slots); 3164EXPORT_SYMBOL(drm_dp_atomic_find_vcpi_slots);
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index b61e291367b4..5d8471f080d9 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -80,17 +80,12 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
80 mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp); 80 mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
81 pipe_config->pbn = mst_pbn; 81 pipe_config->pbn = mst_pbn;
82 82
83 /* Zombie connectors can't have VCPI slots */ 83 slots = drm_dp_atomic_find_vcpi_slots(state, &intel_dp->mst_mgr, port,
84 if (!drm_connector_is_unregistered(connector)) { 84 mst_pbn);
85 slots = drm_dp_atomic_find_vcpi_slots(state, 85 if (slots < 0) {
86 &intel_dp->mst_mgr, 86 DRM_DEBUG_KMS("failed finding vcpi slots:%d\n",
87 port, 87 slots);
88 mst_pbn); 88 return slots;
89 if (slots < 0) {
90 DRM_DEBUG_KMS("failed finding vcpi slots:%d\n",
91 slots);
92 return slots;
93 }
94 } 89 }
95 90
96 intel_link_compute_m_n(bpp, lane_count, 91 intel_link_compute_m_n(bpp, lane_count,
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 2e8a5fd9b262..60d858c2f2ce 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -771,8 +771,7 @@ nv50_msto_atomic_check(struct drm_encoder *encoder,
771 mstc->pbn = drm_dp_calc_pbn_mode(crtc_state->adjusted_mode.clock, 771 mstc->pbn = drm_dp_calc_pbn_mode(crtc_state->adjusted_mode.clock,
772 bpp); 772 bpp);
773 773
774 if (drm_atomic_crtc_needs_modeset(crtc_state) && 774 if (drm_atomic_crtc_needs_modeset(crtc_state)) {
775 !drm_connector_is_unregistered(connector)) {
776 slots = drm_dp_atomic_find_vcpi_slots(state, &mstm->mgr, 775 slots = drm_dp_atomic_find_vcpi_slots(state, &mstm->mgr,
777 mstc->port, mstc->pbn); 776 mstc->port, mstc->pbn);
778 if (slots < 0) 777 if (slots < 0)