diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 66effd2173a5..cda7def9dc2c 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -203,6 +203,29 @@ static void vi_didt_wreg(struct amdgpu_device *adev, u32 reg, u32 v) | |||
203 | spin_unlock_irqrestore(&adev->didt_idx_lock, flags); | 203 | spin_unlock_irqrestore(&adev->didt_idx_lock, flags); |
204 | } | 204 | } |
205 | 205 | ||
206 | static u32 vi_gc_cac_rreg(struct amdgpu_device *adev, u32 reg) | ||
207 | { | ||
208 | unsigned long flags; | ||
209 | u32 r; | ||
210 | |||
211 | spin_lock_irqsave(&adev->gc_cac_idx_lock, flags); | ||
212 | WREG32(mmGC_CAC_IND_INDEX, (reg)); | ||
213 | r = RREG32(mmGC_CAC_IND_DATA); | ||
214 | spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags); | ||
215 | return r; | ||
216 | } | ||
217 | |||
218 | static void vi_gc_cac_wreg(struct amdgpu_device *adev, u32 reg, u32 v) | ||
219 | { | ||
220 | unsigned long flags; | ||
221 | |||
222 | spin_lock_irqsave(&adev->gc_cac_idx_lock, flags); | ||
223 | WREG32(mmGC_CAC_IND_INDEX, (reg)); | ||
224 | WREG32(mmGC_CAC_IND_DATA, (v)); | ||
225 | spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags); | ||
226 | } | ||
227 | |||
228 | |||
206 | static const u32 tonga_mgcg_cgcg_init[] = | 229 | static const u32 tonga_mgcg_cgcg_init[] = |
207 | { | 230 | { |
208 | mmCGTT_DRM_CLK_CTRL0, 0xffffffff, 0x00600100, | 231 | mmCGTT_DRM_CLK_CTRL0, 0xffffffff, 0x00600100, |
@@ -1158,6 +1181,8 @@ static int vi_common_early_init(void *handle) | |||
1158 | adev->uvd_ctx_wreg = &vi_uvd_ctx_wreg; | 1181 | adev->uvd_ctx_wreg = &vi_uvd_ctx_wreg; |
1159 | adev->didt_rreg = &vi_didt_rreg; | 1182 | adev->didt_rreg = &vi_didt_rreg; |
1160 | adev->didt_wreg = &vi_didt_wreg; | 1183 | adev->didt_wreg = &vi_didt_wreg; |
1184 | adev->gc_cac_rreg = &vi_gc_cac_rreg; | ||
1185 | adev->gc_cac_wreg = &vi_gc_cac_wreg; | ||
1161 | 1186 | ||
1162 | adev->asic_funcs = &vi_asic_funcs; | 1187 | adev->asic_funcs = &vi_asic_funcs; |
1163 | 1188 | ||