drm/radeon/kms: fix vram setup on rs600/rs690/rs740
Don't remap vram to 0 on IGP chips. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
2a008d0ccd
commit
22dd50133a
@ -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);
|
|||||||
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)
|
|||||||
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)
|
|||||||
/* 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);
|
||||||
|
Loading…
Reference in New Issue
Block a user