--- xf86-video-ati-6.9.0-orig/src/radeon_cursor.c 2008-11-24 03:24:17.000000000 +0100 +++ xf86-video-ati-6.9.0/src/radeon_cursor.c 2008-11-22 21:11:14.000000000 +0100 @@ -221,9 +221,7 @@ OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); avivo_lock_cursor(crtc, FALSE); } else { - if (mode->Flags & V_INTERLACE) - y /= 2; - else if (mode->Flags & V_DBLSCAN) + if (mode->Flags & V_DBLSCAN) y *= 2; if (crtc_id == 0) { --- xf86-video-ati-6.9.0-orig/src/radeon_output.c 2008-11-24 03:24:17.000000000 +0100 +++ xf86-video-ati-6.9.0/src/radeon_output.c 2008-11-24 02:49:05.000000000 +0100 @@ -524,6 +524,12 @@ radeon_output->Flags &= ~RADEON_USE_RMX; + /* + * Refresh the Crtc values without INTERLACE_HALVE_V + * Should we use output->scrn->adjustFlags like xf86RandRModeConvert() does? + */ + xf86SetModeCrtc(adjusted_mode, 0); + /* decide if we are using RMX */ if ((radeon_output->MonType == MT_LCD || radeon_output->MonType == MT_DFP) && radeon_output->rmx_type != RMX_OFF) { @@ -583,7 +589,7 @@ if (IS_AVIVO_VARIANT) { /* hw bug */ if ((mode->Flags & V_INTERLACE) - && (mode->CrtcVSyncStart < (mode->CrtcVDisplay + 2))) + && (adjusted_mode->CrtcVSyncStart < (adjusted_mode->CrtcVDisplay + 2))) adjusted_mode->CrtcVSyncStart = adjusted_mode->CrtcVDisplay + 2; }