diff options
Diffstat (limited to 'drivers/gpu/drm/drm_atomic_helper.c')
-rw-r--r-- | drivers/gpu/drm/drm_atomic_helper.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 52dbeedcdcc8..d432348837a5 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c | |||
@@ -196,7 +196,12 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx) | |||
196 | } | 196 | } |
197 | 197 | ||
198 | funcs = connector->helper_private; | 198 | funcs = connector->helper_private; |
199 | new_encoder = funcs->best_encoder(connector); | 199 | |
200 | if (funcs->atomic_best_encoder) | ||
201 | new_encoder = funcs->atomic_best_encoder(connector, | ||
202 | connector_state); | ||
203 | else | ||
204 | new_encoder = funcs->best_encoder(connector); | ||
200 | 205 | ||
201 | if (!new_encoder) { | 206 | if (!new_encoder) { |
202 | DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n", | 207 | DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n", |
@@ -229,6 +234,9 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx) | |||
229 | } | 234 | } |
230 | } | 235 | } |
231 | 236 | ||
237 | if (WARN_ON(!connector_state->crtc)) | ||
238 | return -EINVAL; | ||
239 | |||
232 | connector_state->best_encoder = new_encoder; | 240 | connector_state->best_encoder = new_encoder; |
233 | idx = drm_crtc_index(connector_state->crtc); | 241 | idx = drm_crtc_index(connector_state->crtc); |
234 | 242 | ||