From de98c86e791d6f792ddd535a1cde52df714b8de0 Mon Sep 17 00:00:00 2001 From: speedy Date: Mon, 4 Jul 2005 22:07:31 +0000 Subject: [PATCH] - fix radeon driver Changed files: X11-radeon-cursor-sync.patch -> 1.1 X11-radeon-dynamic-clocks.patch -> 1.1 X11-radeon-render-byteswap.patch -> 1.1 X11-radeon-set-fb-location.patch -> 1.1 --- X11-radeon-cursor-sync.patch | 39 +++++++++++++++++++++++ X11-radeon-dynamic-clocks.patch | 54 ++++++++++++++++++++++++++++++++ X11-radeon-render-byteswap.patch | 10 ++++++ X11-radeon-set-fb-location.patch | 10 ++++++ 4 files changed, 113 insertions(+) create mode 100644 X11-radeon-cursor-sync.patch create mode 100644 X11-radeon-dynamic-clocks.patch create mode 100644 X11-radeon-render-byteswap.patch create mode 100644 X11-radeon-set-fb-location.patch diff --git a/X11-radeon-cursor-sync.patch b/X11-radeon-cursor-sync.patch new file mode 100644 index 0000000..91eb22e --- /dev/null +++ b/X11-radeon-cursor-sync.patch @@ -0,0 +1,39 @@ +--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c.radeon-cursor-sync-fdo2844-2230 2004-08-04 09:17:31.000000000 -0400 ++++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c 2005-04-12 00:32:01.000000000 -0400 +@@ -64,6 +64,10 @@ + #define CURSOR_WIDTH 64 + #define CURSOR_HEIGHT 64 + ++#define COMMON_CURSOR_SWAPPING_START() \ ++ if (info->accel && info->accel->Sync) \ ++ info->accel->Sync(pScrn); ++ + /* + * The cursor bits are always 32bpp. On MSBFirst buses, + * configure byte swapping to swap 32 bit units when writing +@@ -74,17 +78,23 @@ + + #define CURSOR_SWAPPING_DECL_MMIO unsigned char *RADEONMMIO = info->MMIO; + #define CURSOR_SWAPPING_START() \ ++ do { \ + OUTREG(RADEON_SURFACE_CNTL, \ + (info->ModeReg.surface_cntl | \ + RADEON_NONSURF_AP0_SWP_32BPP) & \ +- ~RADEON_NONSURF_AP0_SWP_16BPP) ++ ~RADEON_NONSURF_AP0_SWP_16BPP); \ ++ COMMON_CURSOR_SWAPPING_START(); \ ++ } while (0) + #define CURSOR_SWAPPING_END() (OUTREG(RADEON_SURFACE_CNTL, \ + info->ModeReg.surface_cntl)) + + #else + + #define CURSOR_SWAPPING_DECL_MMIO +-#define CURSOR_SWAPPING_START() ++#define CURSOR_SWAPPING_START() \ ++ do { \ ++ COMMON_CURSOR_SWAPPING_START(); \ ++ } while (0) + #define CURSOR_SWAPPING_END() + + #endif diff --git a/X11-radeon-dynamic-clocks.patch b/X11-radeon-dynamic-clocks.patch new file mode 100644 index 0000000..5ee7156 --- /dev/null +++ b/X11-radeon-dynamic-clocks.patch @@ -0,0 +1,54 @@ +--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c.ati-radeon-dynamic-clocks-fix 2005-04-14 14:07:38.000000000 -0400 ++++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2005-04-14 14:10:50.000000000 -0400 +@@ -4512,7 +4512,7 @@ + + RADEONSave(pScrn); + +- if ((!info->IsSecondary) && info->IsMobility) { ++ if ((!info->IsSecondary)) { + if (xf86ReturnOptValBool(info->Options, OPTION_DYNAMIC_CLOCKS, FALSE)) { + RADEONSetDynamicClock(pScrn, 1); + } else { +@@ -7808,6 +7808,34 @@ + CARD32 tmp; + switch(mode) { + case 0: /* Turn everything OFF (ForceON to everything)*/ ++#if 1 ++ /* some chips seem to have problems with the method of ++ * forcing everything on as per below; thus we revert to the old ++ * forceON behavior ++ */ ++ if (info->HasCRTC2) { ++ tmp = INPLL(pScrn, RADEON_SCLK_CNTL); ++ OUTPLL(RADEON_SCLK_CNTL, ((tmp & ~RADEON_DYN_STOP_LAT_MASK) | ++ RADEON_CP_MAX_DYN_STOP_LAT | ++ RADEON_SCLK_FORCEON_MASK)); ++ ++ if (info->ChipFamily == CHIP_FAMILY_RV200) { ++ tmp = INPLL(pScrn, RADEON_SCLK_MORE_CNTL); ++ OUTPLL(RADEON_SCLK_MORE_CNTL, tmp | RADEON_SCLK_MORE_FORCEON); ++ } ++ ++ } ++ ++ tmp = INPLL(pScrn, RADEON_MCLK_CNTL); ++ OUTPLL(RADEON_MCLK_CNTL, (tmp | ++ RADEON_FORCEON_MCLKA | ++ RADEON_FORCEON_MCLKB | ++ RADEON_FORCEON_YCLKA | ++ RADEON_FORCEON_YCLKB | ++ RADEON_FORCEON_MC | ++ RADEON_FORCEON_AIC)); ++ ++#else + if ( !info->HasCRTC2 ) { + tmp = INPLL(pScrn, RADEON_SCLK_CNTL); + tmp |= (RADEON_SCLK_FORCE_CP | RADEON_SCLK_FORCE_HDP | +@@ -7945,6 +7973,7 @@ + RADEON_PIXCLK_DAC_ALWAYS_ONb); + OUTPLL(RADEON_VCLK_ECP_CNTL, tmp); + } ++#endif + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Dynamic Clock Scaling Disabled\n"); + break; + case 1: diff --git a/X11-radeon-render-byteswap.patch b/X11-radeon-render-byteswap.patch new file mode 100644 index 0000000..23ef8a1 --- /dev/null +++ b/X11-radeon-render-byteswap.patch @@ -0,0 +1,10 @@ +--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c.radeon-render-byteswap-fdo2164-1863 2005-01-24 22:20:12.000000000 -0500 ++++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c 2005-04-12 00:50:44.000000000 -0400 +@@ -326,6 +326,7 @@ + "tex_bytepp == %d!\n", __func__, tex_bytepp); + return FALSE; + } ++ return TRUE; + } + + static void RADEONRestoreByteswap(RADEONInfoPtr info) diff --git a/X11-radeon-set-fb-location.patch b/X11-radeon-set-fb-location.patch new file mode 100644 index 0000000..7a5e1f9 --- /dev/null +++ b/X11-radeon-set-fb-location.patch @@ -0,0 +1,10 @@ +--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c.radeon-set-fb-location-fdo2698-2079 2005-04-11 23:43:02.000000000 -0400 ++++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2005-04-12 00:33:34.000000000 -0400 +@@ -7179,7 +7179,6 @@ + RADEONDoAdjustFrame(pScrn, x, y, FALSE); + } + +- RADEONSetFBLocation (pScrn); + #ifdef XF86DRI + if (info->CPStarted) DRIUnlock(pScrn->pScreen); + #endif -- 2.44.0