aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dp_mst.c
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2016-08-09 11:04:04 -0400
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2016-08-23 05:06:50 -0400
commitfd6bbda9c7a46bec6462878787335d2ac6294040 (patch)
treec717e51b7000f4c13477b8b1256ab66429a43657 /drivers/gpu/drm/i915/intel_dp_mst.c
parentfb1c98b181ae139412eca6b7ef727b655b6125da (diff)
drm/i915: Pass crtc_state and connector_state to encoder functions
This is mostly code churn, with exception of a few places: - intel_display.c has changes in intel_sanitize_encoder - intel_ddi.c has intel_ddi_fdi_disable calling intel_ddi_post_disable, and required a function change. Also affects intel_display.c - intel_dp_mst.c passes a NULL crtc_state and conn_state to intel_ddi_post_disable for shutting down the real encoder. If we would pass conn_state, then conn_state->connector != intel_dig_port->connector and conn_state->best_encoder != to_intel_encoder(intel_dig_port). We also shouldn't pass crtc_state, because in that case the disabling sequence may potentially be different depending on which crtc is disabled last. Nice way to introduce bugs. No other functional changes are done, diff stat is already huge. Each encoder type will need to be fixed to use the atomic states separately. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1470755054-32699-6-git-send-email-maarten.lankhorst@linux.intel.com Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp_mst.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dp_mst.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index 629337dbca3d..8f7594ef39a9 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -92,7 +92,9 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
92 92
93} 93}
94 94
95static void intel_mst_disable_dp(struct intel_encoder *encoder) 95static void intel_mst_disable_dp(struct intel_encoder *encoder,
96 struct intel_crtc_state *old_crtc_state,
97 struct drm_connector_state *old_conn_state)
96{ 98{
97 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); 99 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base);
98 struct intel_digital_port *intel_dig_port = intel_mst->primary; 100 struct intel_digital_port *intel_dig_port = intel_mst->primary;
@@ -109,7 +111,9 @@ static void intel_mst_disable_dp(struct intel_encoder *encoder)
109 } 111 }
110} 112}
111 113
112static void intel_mst_post_disable_dp(struct intel_encoder *encoder) 114static void intel_mst_post_disable_dp(struct intel_encoder *encoder,
115 struct intel_crtc_state *old_crtc_state,
116 struct drm_connector_state *old_conn_state)
113{ 117{
114 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); 118 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base);
115 struct intel_digital_port *intel_dig_port = intel_mst->primary; 119 struct intel_digital_port *intel_dig_port = intel_mst->primary;
@@ -128,12 +132,16 @@ static void intel_mst_post_disable_dp(struct intel_encoder *encoder)
128 132
129 intel_mst->connector = NULL; 133 intel_mst->connector = NULL;
130 if (intel_dp->active_mst_links == 0) { 134 if (intel_dp->active_mst_links == 0) {
131 intel_dig_port->base.post_disable(&intel_dig_port->base); 135 intel_dig_port->base.post_disable(&intel_dig_port->base,
136 NULL, NULL);
137
132 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); 138 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
133 } 139 }
134} 140}
135 141
136static void intel_mst_pre_enable_dp(struct intel_encoder *encoder) 142static void intel_mst_pre_enable_dp(struct intel_encoder *encoder,
143 struct intel_crtc_state *pipe_config,
144 struct drm_connector_state *conn_state)
137{ 145{
138 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); 146 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base);
139 struct intel_digital_port *intel_dig_port = intel_mst->primary; 147 struct intel_digital_port *intel_dig_port = intel_mst->primary;
@@ -200,7 +208,9 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder)
200 ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); 208 ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr);
201} 209}
202 210
203static void intel_mst_enable_dp(struct intel_encoder *encoder) 211static void intel_mst_enable_dp(struct intel_encoder *encoder,
212 struct intel_crtc_state *pipe_config,
213 struct drm_connector_state *conn_state)
204{ 214{
205 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); 215 struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base);
206 struct intel_digital_port *intel_dig_port = intel_mst->primary; 216 struct intel_digital_port *intel_dig_port = intel_mst->primary;