diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 1caf625e472..957d5067ad9 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
| @@ -39,6 +39,23 @@ | |||
| 39 | static void evergreen_gpu_init(struct radeon_device *rdev); | 39 | static void evergreen_gpu_init(struct radeon_device *rdev); |
| 40 | void evergreen_fini(struct radeon_device *rdev); | 40 | void evergreen_fini(struct radeon_device *rdev); |
| 41 | 41 | ||
| 42 | /* get temperature in millidegrees */ | ||
| 43 | u32 evergreen_get_temp(struct radeon_device *rdev) | ||
| 44 | { | ||
| 45 | u32 temp = (RREG32(CG_MULT_THERMAL_STATUS) & ASIC_T_MASK) >> | ||
| 46 | ASIC_T_SHIFT; | ||
| 47 | u32 actual_temp = 0; | ||
| 48 | |||
| 49 | if ((temp >> 10) & 1) | ||
| 50 | actual_temp = 0; | ||
| 51 | else if ((temp >> 9) & 1) | ||
| 52 | actual_temp = 255; | ||
| 53 | else | ||
| 54 | actual_temp = (temp >> 1) & 0xff; | ||
| 55 | |||
| 56 | return actual_temp * 1000; | ||
| 57 | } | ||
| 58 | |||
| 42 | void evergreen_pm_misc(struct radeon_device *rdev) | 59 | void evergreen_pm_misc(struct radeon_device *rdev) |
| 43 | { | 60 | { |
| 44 | int req_ps_idx = rdev->pm.requested_power_state_index; | 61 | int req_ps_idx = rdev->pm.requested_power_state_index; |
| @@ -1115,6 +1132,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev) | |||
| 1115 | rdev->config.evergreen.max_backends) & | 1132 | rdev->config.evergreen.max_backends) & |
| 1116 | EVERGREEN_MAX_BACKENDS_MASK)); | 1133 | EVERGREEN_MAX_BACKENDS_MASK)); |
| 1117 | 1134 | ||
| 1135 | rdev->config.evergreen.tile_config = gb_addr_config; | ||
| 1118 | WREG32(GB_BACKEND_MAP, gb_backend_map); | 1136 | WREG32(GB_BACKEND_MAP, gb_backend_map); |
| 1119 | WREG32(GB_ADDR_CONFIG, gb_addr_config); | 1137 | WREG32(GB_ADDR_CONFIG, gb_addr_config); |
| 1120 | WREG32(DMIF_ADDR_CONFIG, gb_addr_config); | 1138 | WREG32(DMIF_ADDR_CONFIG, gb_addr_config); |
| @@ -1334,8 +1352,8 @@ int evergreen_mc_init(struct radeon_device *rdev) | |||
| 1334 | } | 1352 | } |
| 1335 | rdev->mc.vram_width = numchan * chansize; | 1353 | rdev->mc.vram_width = numchan * chansize; |
| 1336 | /* Could aper size report 0 ? */ | 1354 | /* Could aper size report 0 ? */ |
| 1337 | rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); | 1355 | rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0); |
| 1338 | rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0); | 1356 | rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0); |
| 1339 | /* Setup GPU memory space */ | 1357 | /* Setup GPU memory space */ |
| 1340 | /* size in MB on evergreen */ | 1358 | /* size in MB on evergreen */ |
| 1341 | rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; | 1359 | rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; |
