Commit 22dd5013 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie

drm/radeon/kms: fix vram setup on rs600/rs690/rs740

Don't remap vram to 0 on IGP chips.
Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 2a008d0c
...@@ -352,7 +352,7 @@ static int rs400_mc_init(struct radeon_device *rdev) ...@@ -352,7 +352,7 @@ static int rs400_mc_init(struct radeon_device *rdev)
u32 tmp; u32 tmp;
/* Setup GPU memory space */ /* Setup GPU memory space */
tmp = G_00015C_MC_FB_START(RREG32(R_00015C_NB_TOM)); tmp = RREG32(R_00015C_NB_TOM);
rdev->mc.vram_location = G_00015C_MC_FB_START(tmp) << 16; rdev->mc.vram_location = G_00015C_MC_FB_START(tmp) << 16;
rdev->mc.gtt_location = 0xFFFFFFFFUL; rdev->mc.gtt_location = 0xFFFFFFFFUL;
r = radeon_mc_setup(rdev); r = radeon_mc_setup(rdev);
......
...@@ -48,11 +48,12 @@ int rs600_mc_wait_for_idle(struct radeon_device *rdev); ...@@ -48,11 +48,12 @@ int rs600_mc_wait_for_idle(struct radeon_device *rdev);
int rs600_mc_init(struct radeon_device *rdev) int rs600_mc_init(struct radeon_device *rdev)
{ {
/* read back the MC value from the hw */ /* read back the MC value from the hw */
uint32_t mc_fb_loc;
int r; int r;
u32 tmp;
mc_fb_loc = RREG32_MC(R_000004_MC_FB_LOCATION); /* Setup GPU memory space */
rdev->mc.vram_location = G_000004_MC_FB_START(mc_fb_loc) << 16; tmp = RREG32_MC(R_000004_MC_FB_LOCATION);
rdev->mc.vram_location = G_000004_MC_FB_START(tmp) << 16;
rdev->mc.gtt_location = 0xffffffffUL; rdev->mc.gtt_location = 0xffffffffUL;
r = radeon_mc_setup(rdev); r = radeon_mc_setup(rdev);
if (r) if (r)
......
...@@ -162,6 +162,21 @@ void rs690_vram_info(struct radeon_device *rdev) ...@@ -162,6 +162,21 @@ void rs690_vram_info(struct radeon_device *rdev)
rdev->pm.core_bandwidth.full = rfixed_div(rdev->pm.sclk, a); rdev->pm.core_bandwidth.full = rfixed_div(rdev->pm.sclk, a);
} }
static int rs690_mc_init(struct radeon_device *rdev)
{
int r;
u32 tmp;
/* Setup GPU memory space */
tmp = RREG32_MC(R_000100_MCCFG_FB_LOCATION);
rdev->mc.vram_location = G_000100_MC_FB_START(tmp) << 16;
rdev->mc.gtt_location = 0xFFFFFFFFUL;
r = radeon_mc_setup(rdev);
if (r)
return r;
return 0;
}
void rs690_line_buffer_adjust(struct radeon_device *rdev, void rs690_line_buffer_adjust(struct radeon_device *rdev,
struct drm_display_mode *mode1, struct drm_display_mode *mode1,
struct drm_display_mode *mode2) struct drm_display_mode *mode2)
...@@ -710,7 +725,7 @@ int rs690_init(struct radeon_device *rdev) ...@@ -710,7 +725,7 @@ int rs690_init(struct radeon_device *rdev)
/* Get vram informations */ /* Get vram informations */
rs690_vram_info(rdev); rs690_vram_info(rdev);
/* Initialize memory controller (also test AGP) */ /* Initialize memory controller (also test AGP) */
r = r420_mc_init(rdev); r = rs690_mc_init(rdev);
if (r) if (r)
return r; return r;
rv515_debugfs(rdev); rv515_debugfs(rdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment