I have a solution to why I was running into problems with getting my 
Radeon 9000 in my laptop working.  One of those things that when you 
realize what is going on - you feel really silly ;-)  

The issue was that it wasn't using the r200 driver, but rather the 
standard radeon driver - which will *not* work.  The r200 driver seems to 
work fairly well.  I haven't done any major benchmark or testing, but it 
does render to the screen and most importantly - it doesn't hard lock my 
laptop.  Attached is an addition to Scott Harrison's patch for the Radeon 
9000 that will add CHIP_FAMILY_M9 to the list of chipsets that can use the 
r200 driver.

Note: This diff is from the most recent "unified" ATI driver in the main 
XFree86 trunk, so the line numbers may be off a couple of lines for the 
DRI tree.

-- 
//========================================================\\
||  D. Hageman                    <[EMAIL PROTECTED]>  ||
\\========================================================//


diff -ruN 
/home/dhageman/src/XFree86/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c 
ati/radeon_dri.c
--- /home/dhageman/src/XFree86/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c 
 2002-11-02 15:31:41.000000000 -0600
+++ ati/radeon_dri.c    2002-11-03 15:59:58.000000000 -0600
@@ -1000,7 +1000,9 @@
 
     memset(&drmInfo, 0, sizeof(drmRadeonInit));
 
-    if (info->ChipFamily == CHIP_FAMILY_R200)
+    if ( (info->ChipFamily == CHIP_FAMILY_R200) ||
+                (info->ChipFamily == CHIP_FAMILY_RV250) ||
+                (info->ChipFamily == CHIP_FAMILY_M9) )
        drmInfo.func             = DRM_RADEON_INIT_R200_CP;
     else
        drmInfo.func             = DRM_RADEON_INIT_CP;
@@ -1222,6 +1224,9 @@
 
     if (info->ChipFamily == CHIP_FAMILY_R200)
        pDRIInfo->clientDriverName        = R200_DRIVER_NAME;
+       else if ((info->ChipFamily == CHIP_FAMILY_RV250) ||
+                        (info->ChipFamily == CHIP_FAMILY_M9))
+       pDRIInfo->clientDriverName        = RV250_DRIVER_NAME;
     else 
        pDRIInfo->clientDriverName        = RADEON_DRIVER_NAME;
 
@@ -1345,7 +1350,9 @@
     if (version) {
        int req_minor, req_patch;
 
-       if (info->ChipFamily == CHIP_FAMILY_R200) {
+       if ((info->ChipFamily == CHIP_FAMILY_R200) ||
+               (info->ChipFamily == CHIP_FAMILY_RV250) ||
+               (info->ChipFamily == CHIP_FAMILY_M9)) {
            req_minor = 5;
            req_patch = 0;      
        } else {
diff -ruN 
/home/dhageman/src/XFree86/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 
ati/radeon_driver.c
--- 
/home/dhageman/src/XFree86/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c  
     2002-11-02 15:31:41.000000000 -0600
+++ ati/radeon_driver.c 2002-11-03 16:02:10.000000000 -0600
@@ -3480,12 +3480,11 @@
                       (pScrn->displayWidth * pScrn->virtualY *
                        info->CurrentLayout.pixel_bytes * 3 + 1023) / 1024);
            info->directRenderingEnabled = FALSE;
-       } else if (info->ChipFamily >= CHIP_FAMILY_RV250) {
-           /* Is this correct or do RV250's and M9's work? */
+       } else if (info->ChipFamily >= CHIP_FAMILY_R300) {
            info->directRenderingEnabled = FALSE;
            xf86DrvMsg(scrnIndex, X_WARNING,
                       "Direct rendering not yet supported on "
-                      "Radeon 9000 and newer cards\n");
+                      "Radeon 9700 and newer cards\n");
        } else {
            if (info->IsSecondary)
                info->directRenderingEnabled = FALSE;
diff -ruN 
/home/dhageman/src/XFree86/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_version.h 
ati/radeon_version.h
--- 
/home/dhageman/src/XFree86/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_version.h 
     2002-10-30 12:16:22.000000000 -0600
+++ ati/radeon_version.h        2002-11-02 15:50:10.000000000 -0600
@@ -27,6 +27,7 @@
 #define RADEON_NAME          "RADEON"
 #define RADEON_DRIVER_NAME   "radeon"
 #define R200_DRIVER_NAME     "r200"
+#define RV250_DRIVER_NAME     "r200"
 
 #define RADEON_VERSION_MAJOR 4
 #define RADEON_VERSION_MINOR 0

Reply via email to