drm: set rs690 gart base completly.
authorDave Airlie <airlied@linux.ie>
Sun, 16 Mar 2008 02:58:07 +0000 (12:58 +1000)
committerDave Airlie <airlied@linux.ie>
Sun, 16 Mar 2008 02:58:07 +0000 (12:58 +1000)
The docs state bits 4-11 represent bits 32-39 of a 40-bit address

shared-core/radeon_cp.c

index ac46da3..b1fd6d3 100644 (file)
@@ -1394,8 +1394,9 @@ static void radeon_set_rs690gart(drm_radeon_private_t * dev_priv, int on)
                temp = RS690_READ_MCIND(dev_priv, RS690_MC_GART_FEATURE_ID);
                RS690_WRITE_MCIND(RS690_MC_GART_FEATURE_ID, 0x42040800);
 
-               RS690_WRITE_MCIND(RS690_MC_GART_BASE,
-                  dev_priv->gart_info.bus_addr);
+               temp = dev_priv->gart_info.bus_addr & 0xfffff000;
+               temp |= (upper_32_bits(dev_priv->gart_info.bus_addr) & 0xff) << 4;
+               RS690_WRITE_MCIND(RS690_MC_GART_BASE, temp);
                
                temp = RS690_READ_MCIND(dev_priv, RS690_MC_AGP_MODE_CONTROL);
                RS690_WRITE_MCIND(RS690_MC_AGP_MODE_CONTROL, 0x01400000);