aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/cik.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/cik.c')
-rw-r--r--drivers/gpu/drm/radeon/cik.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 69a00d64716e..dcd4518a9b08 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -80,6 +80,7 @@ extern int sumo_rlc_init(struct radeon_device *rdev);
80extern void si_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); 80extern void si_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc);
81extern void si_rlc_reset(struct radeon_device *rdev); 81extern void si_rlc_reset(struct radeon_device *rdev);
82extern void si_init_uvd_internal_cg(struct radeon_device *rdev); 82extern void si_init_uvd_internal_cg(struct radeon_device *rdev);
83static u32 cik_get_cu_active_bitmap(struct radeon_device *rdev, u32 se, u32 sh);
83extern int cik_sdma_resume(struct radeon_device *rdev); 84extern int cik_sdma_resume(struct radeon_device *rdev);
84extern void cik_sdma_enable(struct radeon_device *rdev, bool enable); 85extern void cik_sdma_enable(struct radeon_device *rdev, bool enable);
85extern void cik_sdma_fini(struct radeon_device *rdev); 86extern void cik_sdma_fini(struct radeon_device *rdev);
@@ -3257,7 +3258,7 @@ static void cik_gpu_init(struct radeon_device *rdev)
3257 u32 mc_shared_chmap, mc_arb_ramcfg; 3258 u32 mc_shared_chmap, mc_arb_ramcfg;
3258 u32 hdp_host_path_cntl; 3259 u32 hdp_host_path_cntl;
3259 u32 tmp; 3260 u32 tmp;
3260 int i, j; 3261 int i, j, k;
3261 3262
3262 switch (rdev->family) { 3263 switch (rdev->family) {
3263 case CHIP_BONAIRE: 3264 case CHIP_BONAIRE:
@@ -3446,6 +3447,15 @@ static void cik_gpu_init(struct radeon_device *rdev)
3446 rdev->config.cik.max_sh_per_se, 3447 rdev->config.cik.max_sh_per_se,
3447 rdev->config.cik.max_backends_per_se); 3448 rdev->config.cik.max_backends_per_se);
3448 3449
3450 for (i = 0; i < rdev->config.cik.max_shader_engines; i++) {
3451 for (j = 0; j < rdev->config.cik.max_sh_per_se; j++) {
3452 for (k = 0; k < rdev->config.cik.max_cu_per_sh; k++) {
3453 rdev->config.cik.active_cus +=
3454 hweight32(cik_get_cu_active_bitmap(rdev, i, j));
3455 }
3456 }
3457 }
3458
3449 /* set HW defaults for 3D engine */ 3459 /* set HW defaults for 3D engine */
3450 WREG32(CP_MEQ_THRESHOLDS, MEQ1_START(0x30) | MEQ2_START(0x60)); 3460 WREG32(CP_MEQ_THRESHOLDS, MEQ1_START(0x30) | MEQ2_START(0x60));
3451 3461
@@ -3698,7 +3708,7 @@ bool cik_semaphore_ring_emit(struct radeon_device *rdev,
3698 unsigned sel = emit_wait ? PACKET3_SEM_SEL_WAIT : PACKET3_SEM_SEL_SIGNAL; 3708 unsigned sel = emit_wait ? PACKET3_SEM_SEL_WAIT : PACKET3_SEM_SEL_SIGNAL;
3699 3709
3700 radeon_ring_write(ring, PACKET3(PACKET3_MEM_SEMAPHORE, 1)); 3710 radeon_ring_write(ring, PACKET3(PACKET3_MEM_SEMAPHORE, 1));
3701 radeon_ring_write(ring, addr & 0xffffffff); 3711 radeon_ring_write(ring, lower_32_bits(addr));
3702 radeon_ring_write(ring, (upper_32_bits(addr) & 0xffff) | sel); 3712 radeon_ring_write(ring, (upper_32_bits(addr) & 0xffff) | sel);
3703 3713
3704 return true; 3714 return true;
@@ -3818,7 +3828,7 @@ void cik_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
3818 radeon_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); 3828 radeon_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
3819 radeon_ring_write(ring, WRITE_DATA_DST_SEL(1)); 3829 radeon_ring_write(ring, WRITE_DATA_DST_SEL(1));
3820 radeon_ring_write(ring, ring->next_rptr_gpu_addr & 0xfffffffc); 3830 radeon_ring_write(ring, ring->next_rptr_gpu_addr & 0xfffffffc);
3821 radeon_ring_write(ring, upper_32_bits(ring->next_rptr_gpu_addr) & 0xffffffff); 3831 radeon_ring_write(ring, upper_32_bits(ring->next_rptr_gpu_addr));
3822 radeon_ring_write(ring, next_rptr); 3832 radeon_ring_write(ring, next_rptr);
3823 } 3833 }
3824 3834
@@ -5446,7 +5456,7 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
5446 (u32)(rdev->dummy_page.addr >> 12)); 5456 (u32)(rdev->dummy_page.addr >> 12));
5447 WREG32(VM_CONTEXT1_CNTL2, 4); 5457 WREG32(VM_CONTEXT1_CNTL2, 4);
5448 WREG32(VM_CONTEXT1_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(1) | 5458 WREG32(VM_CONTEXT1_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(1) |
5449 PAGE_TABLE_BLOCK_SIZE(RADEON_VM_BLOCK_SIZE - 9) | 5459 PAGE_TABLE_BLOCK_SIZE(radeon_vm_block_size - 9) |
5450 RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT | 5460 RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT |
5451 RANGE_PROTECTION_FAULT_ENABLE_DEFAULT | 5461 RANGE_PROTECTION_FAULT_ENABLE_DEFAULT |
5452 DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT | 5462 DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT |