summaryrefslogtreecommitdiff
path: root/linux-core/radeon_encoders.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2008-09-18 17:27:00 -0400
committerAlex Deucher <alexdeucher@gmail.com>2008-09-18 17:27:00 -0400
commit075ed1d6fd1d58c1f46d556df79f44153f10edd8 (patch)
treede4a63fd79a0a19a75d9bc07ef4aed9dd2ac7432 /linux-core/radeon_encoders.c
parent6988176195450da9033a0f0f21eafc6ae0a7a6a4 (diff)
radeon: pll and interlace updates from the ddx
also some formatting cleanup in radeon_reg.h
Diffstat (limited to 'linux-core/radeon_encoders.c')
-rw-r--r--linux-core/radeon_encoders.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/linux-core/radeon_encoders.c b/linux-core/radeon_encoders.c
index 82ffcfb0..98be7057 100644
--- a/linux-core/radeon_encoders.c
+++ b/linux-core/radeon_encoders.c
@@ -517,9 +517,15 @@ static void radeon_atom_dac_dpms(struct drm_encoder *encoder, int mode)
}
static bool radeon_atom_dac_mode_fixup(struct drm_encoder *encoder,
- struct drm_display_mode *mode,
- struct drm_display_mode *adjusted_mode)
+ struct drm_display_mode *mode,
+ struct drm_display_mode *adjusted_mode)
{
+
+ /* hw bug */
+ if ((mode->flags & DRM_MODE_FLAG_INTERLACE)
+ && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
+ adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
+
return true;
}
@@ -987,6 +993,12 @@ static bool radeon_atom_tmds_mode_fixup(struct drm_encoder *encoder,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
{
+
+ /* hw bug */
+ if ((mode->flags & DRM_MODE_FLAG_INTERLACE)
+ && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
+ adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
+
return true;
}