diff options
author | Boyuan Zhang <boyuan.zhang@amd.com> | 2018-05-30 14:47:39 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-06-15 13:20:36 -0400 |
commit | d2314b48d62110d5ce9aebcc8900bc44eed72700 (patch) | |
tree | 0733d6ed73e71dae09f91c249abdafb9e75eb8c7 /drivers/gpu/drm/amd/amdgpu | |
parent | 59dd2b883fcd50d76b644d2ade084dae0137a8f7 (diff) |
drm/amdgpu: initialize vcn jpeg ring
Add implementations for vcn jpeg ring initialization
Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c index 076c49c91c2a..ea1d677d02c8 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |||
@@ -115,6 +115,12 @@ static int vcn_v1_0_sw_init(void *handle) | |||
115 | return r; | 115 | return r; |
116 | } | 116 | } |
117 | 117 | ||
118 | ring = &adev->vcn.ring_jpeg; | ||
119 | sprintf(ring->name, "vcn_jpeg"); | ||
120 | r = amdgpu_ring_init(adev, ring, 512, &adev->vcn.irq, 0); | ||
121 | if (r) | ||
122 | return r; | ||
123 | |||
118 | return r; | 124 | return r; |
119 | } | 125 | } |
120 | 126 | ||
@@ -169,6 +175,14 @@ static int vcn_v1_0_hw_init(void *handle) | |||
169 | } | 175 | } |
170 | } | 176 | } |
171 | 177 | ||
178 | ring = &adev->vcn.ring_jpeg; | ||
179 | ring->ready = true; | ||
180 | r = amdgpu_ring_test_ring(ring); | ||
181 | if (r) { | ||
182 | ring->ready = false; | ||
183 | goto done; | ||
184 | } | ||
185 | |||
172 | done: | 186 | done: |
173 | if (!r) | 187 | if (!r) |
174 | DRM_INFO("VCN decode and encode initialized successfully.\n"); | 188 | DRM_INFO("VCN decode and encode initialized successfully.\n"); |
@@ -736,6 +750,15 @@ static int vcn_v1_0_start(struct amdgpu_device *adev) | |||
736 | WREG32_SOC15(UVD, 0, mmUVD_RB_BASE_HI2, upper_32_bits(ring->gpu_addr)); | 750 | WREG32_SOC15(UVD, 0, mmUVD_RB_BASE_HI2, upper_32_bits(ring->gpu_addr)); |
737 | WREG32_SOC15(UVD, 0, mmUVD_RB_SIZE2, ring->ring_size / 4); | 751 | WREG32_SOC15(UVD, 0, mmUVD_RB_SIZE2, ring->ring_size / 4); |
738 | 752 | ||
753 | ring = &adev->vcn.ring_jpeg; | ||
754 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_VMID, 0); | ||
755 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, (0x00000001L | 0x00000002L)); | ||
756 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_LOW, lower_32_bits(ring->gpu_addr)); | ||
757 | WREG32_SOC15(UVD, 0, mmUVD_LMI_JRBC_RB_64BIT_BAR_HIGH, upper_32_bits(ring->gpu_addr)); | ||
758 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_RPTR, 0); | ||
759 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_WPTR, 0); | ||
760 | WREG32_SOC15(UVD, 0, mmUVD_JRBC_RB_CNTL, 0x00000002L); | ||
761 | |||
739 | return 0; | 762 | return 0; |
740 | } | 763 | } |
741 | 764 | ||