aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorBoyuan Zhang <boyuan.zhang@amd.com>2018-05-30 14:47:39 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-06-15 13:20:36 -0400
commitd2314b48d62110d5ce9aebcc8900bc44eed72700 (patch)
tree0733d6ed73e71dae09f91c249abdafb9e75eb8c7 /drivers/gpu/drm/amd/amdgpu
parent59dd2b883fcd50d76b644d2ade084dae0137a8f7 (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.c23
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
172done: 186done:
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