diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/cik.c')
-rw-r--r-- | drivers/gpu/drm/radeon/cik.c | 18 |
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); | |||
80 | extern void si_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); | 80 | extern void si_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); |
81 | extern void si_rlc_reset(struct radeon_device *rdev); | 81 | extern void si_rlc_reset(struct radeon_device *rdev); |
82 | extern void si_init_uvd_internal_cg(struct radeon_device *rdev); | 82 | extern void si_init_uvd_internal_cg(struct radeon_device *rdev); |
83 | static u32 cik_get_cu_active_bitmap(struct radeon_device *rdev, u32 se, u32 sh); | ||
83 | extern int cik_sdma_resume(struct radeon_device *rdev); | 84 | extern int cik_sdma_resume(struct radeon_device *rdev); |
84 | extern void cik_sdma_enable(struct radeon_device *rdev, bool enable); | 85 | extern void cik_sdma_enable(struct radeon_device *rdev, bool enable); |
85 | extern void cik_sdma_fini(struct radeon_device *rdev); | 86 | extern 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 | |