fix radeon memory mapping from Ben Herrenschmidt
authorDave Airlie <airlied@linux.ie>
Fri, 16 Dec 2005 08:02:17 +0000 (08:02 +0000)
committerDave Airlie <airlied@linux.ie>
Fri, 16 Dec 2005 08:02:17 +0000 (08:02 +0000)
shared-core/radeon_cp.c
shared-core/radeon_drv.h

index 0686884..503fe8e 100644 (file)
@@ -1306,6 +1306,8 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)
 static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
 {
        drm_radeon_private_t *dev_priv = dev->dev_private;
+       unsigned int mem_size;
+
        DRM_DEBUG("\n");
 
        if (init->is_pci && (dev_priv->flags & CHIP_IS_AGP))
@@ -1502,8 +1504,12 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
                                          + dev_priv->fb_location) >> 10));
 
        dev_priv->gart_size = init->gart_size;
-       dev_priv->gart_vm_start = dev_priv->fb_location
-           + RADEON_READ(RADEON_CONFIG_APER_SIZE);
+
+       mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE);
+       if (mem_size == 0)
+               mem_size = 0x800000;
+
+       dev_priv->gart_vm_start = dev_priv->fb_location + mem_size;
 
 #if __OS_HAS_AGP
        if (dev_priv->flags & CHIP_IS_AGP)
index 1fdae23..ab36826 100644 (file)
@@ -364,6 +364,7 @@ extern int r300_do_cp_cmdbuf( drm_device_t* dev,
 #      define RADEON_PLL_WR_EN                 (1 << 7)
 #define RADEON_CLOCK_CNTL_INDEX                0x0008
 #define RADEON_CONFIG_APER_SIZE                0x0108
+#define RADEON_CONFIG_MEMSIZE           0x00f8
 #define RADEON_CRTC_OFFSET             0x0224
 #define RADEON_CRTC_OFFSET_CNTL                0x0228
 #      define RADEON_CRTC_TILE_EN              (1 << 15)