diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index e16ac5a28c3c..d5c130202396 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
@@ -569,7 +569,7 @@ void intel_crt_init(struct drm_device *dev) | |||
569 | (1 << INTEL_ANALOG_CLONE_BIT) | | 569 | (1 << INTEL_ANALOG_CLONE_BIT) | |
570 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); | 570 | (1 << INTEL_SDVO_LVDS_CLONE_BIT); |
571 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); | 571 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
572 | connector->interlace_allowed = 0; | 572 | connector->interlace_allowed = 1; |
573 | connector->doublescan_allowed = 0; | 573 | connector->doublescan_allowed = 0; |
574 | 574 | ||
575 | drm_encoder_helper_add(&intel_encoder->enc, &intel_crt_helper_funcs); | 575 | drm_encoder_helper_add(&intel_encoder->enc, &intel_crt_helper_funcs); |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 36afe9409964..4c7c151114f7 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -2354,6 +2354,8 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc, | |||
2354 | if (mode->clock * 3 > 27000 * 4) | 2354 | if (mode->clock * 3 > 27000 * 4) |
2355 | return MODE_CLOCK_HIGH; | 2355 | return MODE_CLOCK_HIGH; |
2356 | } | 2356 | } |
2357 | |||
2358 | drm_mode_set_crtcinfo(adjusted_mode, 0); | ||
2357 | return true; | 2359 | return true; |
2358 | } | 2360 | } |
2359 | 2361 | ||
@@ -3781,6 +3783,18 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
3781 | } | 3783 | } |
3782 | } | 3784 | } |
3783 | 3785 | ||
3786 | if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) { | ||
3787 | pipeconf |= PIPECONF_INTERLACE_W_FIELD_INDICATION; | ||
3788 | /* the chip adds 2 halflines automatically */ | ||
3789 | adjusted_mode->crtc_vdisplay -= 1; | ||
3790 | adjusted_mode->crtc_vtotal -= 1; | ||
3791 | adjusted_mode->crtc_vblank_start -= 1; | ||
3792 | adjusted_mode->crtc_vblank_end -= 1; | ||
3793 | adjusted_mode->crtc_vsync_end -= 1; | ||
3794 | adjusted_mode->crtc_vsync_start -= 1; | ||
3795 | } else | ||
3796 | pipeconf &= ~PIPECONF_INTERLACE_W_FIELD_INDICATION; /* progressive */ | ||
3797 | |||
3784 | I915_WRITE(htot_reg, (adjusted_mode->crtc_hdisplay - 1) | | 3798 | I915_WRITE(htot_reg, (adjusted_mode->crtc_hdisplay - 1) | |
3785 | ((adjusted_mode->crtc_htotal - 1) << 16)); | 3799 | ((adjusted_mode->crtc_htotal - 1) << 16)); |
3786 | I915_WRITE(hblank_reg, (adjusted_mode->crtc_hblank_start - 1) | | 3800 | I915_WRITE(hblank_reg, (adjusted_mode->crtc_hblank_start - 1) | |