aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/evergreen.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2012-03-20 17:18:37 -0400
committerDave Airlie <airlied@redhat.com>2012-03-21 02:55:57 -0400
commit05b3ef69e5626799cbe6784bae09ad49f963721f (patch)
treef5041a97bd0c0f65dc02e2882f13b1f6b6efc483 /drivers/gpu/drm/radeon/evergreen.c
parent7b76e479e0f9d2f106bdf0686eff075837a6429a (diff)
drm/radeon/kms: Update evergreen functions for trinity
Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 6c2b666c8ffc..cfa372cb1cb3 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1328,7 +1328,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
1328 rdev->mc.vram_end >> 12); 1328 rdev->mc.vram_end >> 12);
1329 } 1329 }
1330 WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, rdev->vram_scratch.gpu_addr >> 12); 1330 WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, rdev->vram_scratch.gpu_addr >> 12);
1331 if (rdev->flags & RADEON_IS_IGP) { 1331 /* llano/ontario only */
1332 if ((rdev->family == CHIP_PALM) ||
1333 (rdev->family == CHIP_SUMO) ||
1334 (rdev->family == CHIP_SUMO2)) {
1332 tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF; 1335 tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF;
1333 tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24; 1336 tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24;
1334 tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20; 1337 tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20;
@@ -1972,7 +1975,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
1972 1975
1973 1976
1974 mc_shared_chmap = RREG32(MC_SHARED_CHMAP); 1977 mc_shared_chmap = RREG32(MC_SHARED_CHMAP);
1975 if (rdev->flags & RADEON_IS_IGP) 1978 if ((rdev->family == CHIP_PALM) ||
1979 (rdev->family == CHIP_SUMO) ||
1980 (rdev->family == CHIP_SUMO2))
1976 mc_arb_ramcfg = RREG32(FUS_MC_ARB_RAMCFG); 1981 mc_arb_ramcfg = RREG32(FUS_MC_ARB_RAMCFG);
1977 else 1982 else
1978 mc_arb_ramcfg = RREG32(MC_ARB_RAMCFG); 1983 mc_arb_ramcfg = RREG32(MC_ARB_RAMCFG);
@@ -2362,7 +2367,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
2362 2367
2363 /* Get VRAM informations */ 2368 /* Get VRAM informations */
2364 rdev->mc.vram_is_ddr = true; 2369 rdev->mc.vram_is_ddr = true;
2365 if (rdev->flags & RADEON_IS_IGP) 2370 if ((rdev->family == CHIP_PALM) ||
2371 (rdev->family == CHIP_SUMO) ||
2372 (rdev->family == CHIP_SUMO2))
2366 tmp = RREG32(FUS_MC_ARB_RAMCFG); 2373 tmp = RREG32(FUS_MC_ARB_RAMCFG);
2367 else 2374 else
2368 tmp = RREG32(MC_ARB_RAMCFG); 2375 tmp = RREG32(MC_ARB_RAMCFG);
@@ -2394,12 +2401,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
2394 rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0); 2401 rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0);
2395 rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0); 2402 rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0);
2396 /* Setup GPU memory space */ 2403 /* Setup GPU memory space */
2397 if (rdev->flags & RADEON_IS_IGP) { 2404 if ((rdev->family == CHIP_PALM) ||
2405 (rdev->family == CHIP_SUMO) ||
2406 (rdev->family == CHIP_SUMO2)) {
2398 /* size in bytes on fusion */ 2407 /* size in bytes on fusion */
2399 rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE); 2408 rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE);
2400 rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE); 2409 rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE);
2401 } else { 2410 } else {
2402 /* size in MB on evergreen */ 2411 /* size in MB on evergreen/cayman/tn */
2403 rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; 2412 rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
2404 rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; 2413 rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
2405 } 2414 }
@@ -2557,7 +2566,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
2557 WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); 2566 WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
2558 } 2567 }
2559 2568
2560 WREG32(DACA_AUTODETECT_INT_CONTROL, 0); 2569 /* only one DAC on DCE6 */
2570 if (!ASIC_IS_DCE6(rdev))
2571 WREG32(DACA_AUTODETECT_INT_CONTROL, 0);
2561 WREG32(DACB_AUTODETECT_INT_CONTROL, 0); 2572 WREG32(DACB_AUTODETECT_INT_CONTROL, 0);
2562 2573
2563 tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY; 2574 tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY;