diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-04-19 18:10:58 -0400 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-05-10 16:19:13 -0400 |
commit | 7173188d5d5e50b95c588dbae3b3bc78fde4138e (patch) | |
tree | 2659db8e43421bdc75e0406796a446b12fd82708 /drivers/gpu | |
parent | b259f6730c09bc356df932ba9188f291de816808 (diff) |
drm/i915: Simplify return value from intel_get_load_detect_pipe
... and so remove the confusion as to whether to use the returned crtc
or intel_encoder->base.crtc with the subsequent load-detection. Even
though they were the same, the two instances of load-detection code
disagreed over which was the more correct.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 16 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_tv.c | 6 |
4 files changed, 22 insertions, 25 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index d03fc05b39c0..2eb60cd47b33 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
@@ -305,13 +305,11 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) | |||
305 | } | 305 | } |
306 | 306 | ||
307 | static enum drm_connector_status | 307 | static enum drm_connector_status |
308 | intel_crt_load_detect(struct drm_crtc *crtc, struct intel_crt *crt) | 308 | intel_crt_load_detect(struct intel_crt *crt) |
309 | { | 309 | { |
310 | struct drm_encoder *encoder = &crt->base.base; | 310 | struct drm_device *dev = crt->base.base.dev; |
311 | struct drm_device *dev = encoder->dev; | ||
312 | struct drm_i915_private *dev_priv = dev->dev_private; | 311 | struct drm_i915_private *dev_priv = dev->dev_private; |
313 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 312 | uint32_t pipe = to_intel_crtc(crt->base.base.crtc)->pipe; |
314 | uint32_t pipe = intel_crtc->pipe; | ||
315 | uint32_t save_bclrpat; | 313 | uint32_t save_bclrpat; |
316 | uint32_t save_vtotal; | 314 | uint32_t save_vtotal; |
317 | uint32_t vtotal, vactive; | 315 | uint32_t vtotal, vactive; |
@@ -454,15 +452,14 @@ intel_crt_detect(struct drm_connector *connector, bool force) | |||
454 | /* for pre-945g platforms use load detect */ | 452 | /* for pre-945g platforms use load detect */ |
455 | crtc = crt->base.base.crtc; | 453 | crtc = crt->base.base.crtc; |
456 | if (crtc && crtc->enabled) { | 454 | if (crtc && crtc->enabled) { |
457 | status = intel_crt_load_detect(crtc, crt); | 455 | status = intel_crt_load_detect(crt); |
458 | } else { | 456 | } else { |
459 | crtc = intel_get_load_detect_pipe(&crt->base, connector, | 457 | if (intel_get_load_detect_pipe(&crt->base, connector, |
460 | NULL, &dpms_mode); | 458 | NULL, &dpms_mode)) { |
461 | if (crtc) { | ||
462 | if (intel_crt_detect_ddc(connector)) | 459 | if (intel_crt_detect_ddc(connector)) |
463 | status = connector_status_connected; | 460 | status = connector_status_connected; |
464 | else | 461 | else |
465 | status = intel_crt_load_detect(crtc, crt); | 462 | status = intel_crt_load_detect(crt); |
466 | intel_release_load_detect_pipe(&crt->base, | 463 | intel_release_load_detect_pipe(&crt->base, |
467 | connector, dpms_mode); | 464 | connector, dpms_mode); |
468 | } else | 465 | } else |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 373c2a005ec1..228621d07743 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -5481,10 +5481,10 @@ static struct drm_display_mode load_detect_mode = { | |||
5481 | 704, 832, 0, 480, 489, 491, 520, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 5481 | 704, 832, 0, 480, 489, 491, 520, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
5482 | }; | 5482 | }; |
5483 | 5483 | ||
5484 | struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, | 5484 | bool intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, |
5485 | struct drm_connector *connector, | 5485 | struct drm_connector *connector, |
5486 | struct drm_display_mode *mode, | 5486 | struct drm_display_mode *mode, |
5487 | int *dpms_mode) | 5487 | int *dpms_mode) |
5488 | { | 5488 | { |
5489 | struct intel_crtc *intel_crtc; | 5489 | struct intel_crtc *intel_crtc; |
5490 | struct drm_crtc *possible_crtc; | 5490 | struct drm_crtc *possible_crtc; |
@@ -5517,7 +5517,7 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, | |||
5517 | crtc_funcs->dpms(crtc, DRM_MODE_DPMS_ON); | 5517 | crtc_funcs->dpms(crtc, DRM_MODE_DPMS_ON); |
5518 | encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON); | 5518 | encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON); |
5519 | } | 5519 | } |
5520 | return crtc; | 5520 | return true; |
5521 | } | 5521 | } |
5522 | 5522 | ||
5523 | /* Find an unused one (if possible) */ | 5523 | /* Find an unused one (if possible) */ |
@@ -5537,7 +5537,8 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, | |||
5537 | * If we didn't find an unused CRTC, don't use any. | 5537 | * If we didn't find an unused CRTC, don't use any. |
5538 | */ | 5538 | */ |
5539 | if (!crtc) { | 5539 | if (!crtc) { |
5540 | return NULL; | 5540 | DRM_DEBUG_KMS("no pipe available for load-detect\n"); |
5541 | return false; | ||
5541 | } | 5542 | } |
5542 | 5543 | ||
5543 | encoder->crtc = crtc; | 5544 | encoder->crtc = crtc; |
@@ -5561,10 +5562,11 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, | |||
5561 | encoder_funcs->mode_set(encoder, &crtc->mode, &crtc->mode); | 5562 | encoder_funcs->mode_set(encoder, &crtc->mode, &crtc->mode); |
5562 | encoder_funcs->commit(encoder); | 5563 | encoder_funcs->commit(encoder); |
5563 | } | 5564 | } |
5565 | |||
5564 | /* let the connector get through one full cycle before testing */ | 5566 | /* let the connector get through one full cycle before testing */ |
5565 | intel_wait_for_vblank(dev, intel_crtc->pipe); | 5567 | intel_wait_for_vblank(dev, intel_crtc->pipe); |
5566 | 5568 | ||
5567 | return crtc; | 5569 | return true; |
5568 | } | 5570 | } |
5569 | 5571 | ||
5570 | void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, | 5572 | void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 1d20712d527f..fa46d329a8ea 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -291,10 +291,10 @@ int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, | |||
291 | struct drm_file *file_priv); | 291 | struct drm_file *file_priv); |
292 | extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); | 292 | extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); |
293 | extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); | 293 | extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); |
294 | extern struct drm_crtc *intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, | 294 | extern bool intel_get_load_detect_pipe(struct intel_encoder *intel_encoder, |
295 | struct drm_connector *connector, | 295 | struct drm_connector *connector, |
296 | struct drm_display_mode *mode, | 296 | struct drm_display_mode *mode, |
297 | int *dpms_mode); | 297 | int *dpms_mode); |
298 | extern void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, | 298 | extern void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, |
299 | struct drm_connector *connector, | 299 | struct drm_connector *connector, |
300 | int dpms_mode); | 300 | int dpms_mode); |
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c index 6b22c1dcc015..3322582ba3ec 100644 --- a/drivers/gpu/drm/i915/intel_tv.c +++ b/drivers/gpu/drm/i915/intel_tv.c | |||
@@ -1361,12 +1361,10 @@ intel_tv_detect(struct drm_connector *connector, bool force) | |||
1361 | if (intel_tv->base.base.crtc && intel_tv->base.base.crtc->enabled) { | 1361 | if (intel_tv->base.base.crtc && intel_tv->base.base.crtc->enabled) { |
1362 | type = intel_tv_detect_type(intel_tv, connector); | 1362 | type = intel_tv_detect_type(intel_tv, connector); |
1363 | } else if (force) { | 1363 | } else if (force) { |
1364 | struct drm_crtc *crtc; | ||
1365 | int dpms_mode; | 1364 | int dpms_mode; |
1366 | 1365 | ||
1367 | crtc = intel_get_load_detect_pipe(&intel_tv->base, connector, | 1366 | if (intel_get_load_detect_pipe(&intel_tv->base, connector, |
1368 | &mode, &dpms_mode); | 1367 | &mode, &dpms_mode)) { |
1369 | if (crtc) { | ||
1370 | type = intel_tv_detect_type(intel_tv, connector); | 1368 | type = intel_tv_detect_type(intel_tv, connector); |
1371 | intel_release_load_detect_pipe(&intel_tv->base, connector, | 1369 | intel_release_load_detect_pipe(&intel_tv->base, connector, |
1372 | dpms_mode); | 1370 | dpms_mode); |