diff options
author | Dave Airlie <airlied@redhat.com> | 2018-10-11 00:53:40 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-10-11 00:53:45 -0400 |
commit | ca4b869240d5810ebac6b1570ad7beffcfbac2f5 (patch) | |
tree | d7e36e551b058316ab35e28f1bb992ce06b2ce0c /drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | |
parent | 46972c03ab667dc298cad0c9db517fb9b1521b5f (diff) | |
parent | df2fc43d09d3ee5ede82cab9299df5e78aa427b5 (diff) |
Merge branch 'drm-next-4.20' of git://people.freedesktop.org/~agd5f/linux into drm-next
Add a new list.h helper for doing bulk updates. Used by ttm.
- Fixes for display underflow on VI APUs at 4K with UVD running
- Endian fixes for powerplay on vega
- DC fixes for interlaced video
- Vega20 powerplay fixes
- RV/RV2/PCO powerplay fixes
- Fix for spurious ACPI events on HG laptops
- Fix a memory leak in DC on driver unload
- Fixes for manual fan control mode switching
- Suspend/resume robustness fixes
- Fix display handling on RV2
- VCN fixes for DPG on PCO
- Misc code cleanups and warning fixes
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Alex Deucher <alexdeucher@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181011014739.3117-1-alexander.deucher@amd.com
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c index 64e527b1c02f..27da13df2f11 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | |||
@@ -121,8 +121,7 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) | |||
121 | version_major, version_minor, family_id); | 121 | version_major, version_minor, family_id); |
122 | } | 122 | } |
123 | 123 | ||
124 | bo_size = AMDGPU_VCN_STACK_SIZE + AMDGPU_VCN_HEAP_SIZE | 124 | bo_size = AMDGPU_VCN_STACK_SIZE + AMDGPU_VCN_CONTEXT_SIZE; |
125 | + AMDGPU_VCN_SESSION_SIZE * 40; | ||
126 | if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) | 125 | if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) |
127 | bo_size += AMDGPU_GPU_PAGE_ALIGN(le32_to_cpu(hdr->ucode_size_bytes) + 8); | 126 | bo_size += AMDGPU_GPU_PAGE_ALIGN(le32_to_cpu(hdr->ucode_size_bytes) + 8); |
128 | r = amdgpu_bo_create_kernel(adev, bo_size, PAGE_SIZE, | 127 | r = amdgpu_bo_create_kernel(adev, bo_size, PAGE_SIZE, |
@@ -263,7 +262,7 @@ static int amdgpu_vcn_pause_dpg_mode(struct amdgpu_device *adev, | |||
263 | 262 | ||
264 | ring = &adev->vcn.ring_dec; | 263 | ring = &adev->vcn.ring_dec; |
265 | WREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR, | 264 | WREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR, |
266 | lower_32_bits(ring->wptr) | 0x80000000); | 265 | RREG32_SOC15(UVD, 0, mmUVD_SCRATCH2)); |
267 | SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_POWER_STATUS, | 266 | SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_POWER_STATUS, |
268 | UVD_PGFSM_CONFIG__UVDM_UVDU_PWR_ON, | 267 | UVD_PGFSM_CONFIG__UVDM_UVDU_PWR_ON, |
269 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); | 268 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); |
@@ -309,18 +308,21 @@ static int amdgpu_vcn_pause_dpg_mode(struct amdgpu_device *adev, | |||
309 | /* Restore */ | 308 | /* Restore */ |
310 | ring = &adev->vcn.ring_jpeg; | 309 | ring = &adev->vcn.ring_jpeg; |
311 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_VMID, 0); | 310 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_VMID, 0); |
312 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, 0x00000001L | 0x00000002L); | 311 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, |
312 | UVD_JRBC_RB_CNTL__RB_NO_FETCH_MASK | | ||
313 | UVD_JRBC_RB_CNTL__RB_RPTR_WR_EN_MASK); | ||
313 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_LOW, | 314 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_LOW, |
314 | lower_32_bits(ring->gpu_addr)); | 315 | lower_32_bits(ring->gpu_addr)); |
315 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_HIGH, | 316 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_HIGH, |
316 | upper_32_bits(ring->gpu_addr)); | 317 | upper_32_bits(ring->gpu_addr)); |
317 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_RPTR, ring->wptr); | 318 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_RPTR, ring->wptr); |
318 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_WPTR, ring->wptr); | 319 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_WPTR, ring->wptr); |
319 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, 0x00000002L); | 320 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, |
321 | UVD_JRBC_RB_CNTL__RB_RPTR_WR_EN_MASK); | ||
320 | 322 | ||
321 | ring = &adev->vcn.ring_dec; | 323 | ring = &adev->vcn.ring_dec; |
322 | WREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR, | 324 | WREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR, |
323 | lower_32_bits(ring->wptr) | 0x80000000); | 325 | RREG32_SOC15(UVD, 0, mmUVD_SCRATCH2)); |
324 | SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_POWER_STATUS, | 326 | SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_POWER_STATUS, |
325 | UVD_PGFSM_CONFIG__UVDM_UVDU_PWR_ON, | 327 | UVD_PGFSM_CONFIG__UVDM_UVDU_PWR_ON, |
326 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); | 328 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); |