drm/amdgpu: vce use multiple cache surface starting from stoney
Signed-off-by: Leo Liu <leo.liu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
d6c29c30ea
commit
3c0ff9f18f
|
@ -40,6 +40,9 @@
|
||||||
|
|
||||||
#define GRBM_GFX_INDEX__VCE_INSTANCE__SHIFT 0x04
|
#define GRBM_GFX_INDEX__VCE_INSTANCE__SHIFT 0x04
|
||||||
#define GRBM_GFX_INDEX__VCE_INSTANCE_MASK 0x10
|
#define GRBM_GFX_INDEX__VCE_INSTANCE_MASK 0x10
|
||||||
|
#define mmVCE_LMI_VCPU_CACHE_40BIT_BAR0 0x8616
|
||||||
|
#define mmVCE_LMI_VCPU_CACHE_40BIT_BAR1 0x8617
|
||||||
|
#define mmVCE_LMI_VCPU_CACHE_40BIT_BAR2 0x8618
|
||||||
|
|
||||||
#define VCE_V3_0_FW_SIZE (384 * 1024)
|
#define VCE_V3_0_FW_SIZE (384 * 1024)
|
||||||
#define VCE_V3_0_STACK_SIZE (64 * 1024)
|
#define VCE_V3_0_STACK_SIZE (64 * 1024)
|
||||||
|
@ -130,9 +133,11 @@ static int vce_v3_0_start(struct amdgpu_device *adev)
|
||||||
|
|
||||||
/* set BUSY flag */
|
/* set BUSY flag */
|
||||||
WREG32_P(mmVCE_STATUS, 1, ~1);
|
WREG32_P(mmVCE_STATUS, 1, ~1);
|
||||||
|
if (adev->asic_type >= CHIP_STONEY)
|
||||||
WREG32_P(mmVCE_VCPU_CNTL, VCE_VCPU_CNTL__CLK_EN_MASK,
|
WREG32_P(mmVCE_VCPU_CNTL, 1, ~0x200001);
|
||||||
~VCE_VCPU_CNTL__CLK_EN_MASK);
|
else
|
||||||
|
WREG32_P(mmVCE_VCPU_CNTL, VCE_VCPU_CNTL__CLK_EN_MASK,
|
||||||
|
~VCE_VCPU_CNTL__CLK_EN_MASK);
|
||||||
|
|
||||||
WREG32_P(mmVCE_SOFT_RESET,
|
WREG32_P(mmVCE_SOFT_RESET,
|
||||||
VCE_SOFT_RESET__ECPU_SOFT_RESET_MASK,
|
VCE_SOFT_RESET__ECPU_SOFT_RESET_MASK,
|
||||||
|
@ -391,8 +396,12 @@ static void vce_v3_0_mc_resume(struct amdgpu_device *adev, int idx)
|
||||||
WREG32(mmVCE_LMI_SWAP_CNTL, 0);
|
WREG32(mmVCE_LMI_SWAP_CNTL, 0);
|
||||||
WREG32(mmVCE_LMI_SWAP_CNTL1, 0);
|
WREG32(mmVCE_LMI_SWAP_CNTL1, 0);
|
||||||
WREG32(mmVCE_LMI_VM_CTRL, 0);
|
WREG32(mmVCE_LMI_VM_CTRL, 0);
|
||||||
|
if (adev->asic_type >= CHIP_STONEY) {
|
||||||
WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR, (adev->vce.gpu_addr >> 8));
|
WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR0, (adev->vce.gpu_addr >> 8));
|
||||||
|
WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR1, (adev->vce.gpu_addr >> 8));
|
||||||
|
WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR2, (adev->vce.gpu_addr >> 8));
|
||||||
|
} else
|
||||||
|
WREG32(mmVCE_LMI_VCPU_CACHE_40BIT_BAR, (adev->vce.gpu_addr >> 8));
|
||||||
offset = AMDGPU_VCE_FIRMWARE_OFFSET;
|
offset = AMDGPU_VCE_FIRMWARE_OFFSET;
|
||||||
size = VCE_V3_0_FW_SIZE;
|
size = VCE_V3_0_FW_SIZE;
|
||||||
WREG32(mmVCE_VCPU_CACHE_OFFSET0, offset & 0x7fffffff);
|
WREG32(mmVCE_VCPU_CACHE_OFFSET0, offset & 0x7fffffff);
|
||||||
|
|
Loading…
Reference in New Issue