aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/vi.c
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2016-06-08 00:47:41 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-07-07 15:06:23 -0400
commitccdbb20a75e3e3917f327a185c1a45722b5d359f (patch)
tree9c666e7c9af403001605b51b947ce65a44ec1e51 /drivers/gpu/drm/amd/amdgpu/vi.c
parent5e037834eb6218e4fa845347dbd9ef1b49c2550e (diff)
drm/amdgpu: add read/write function for GC CAC programming
Create a GC_CAC_IND_INDEX/DATA pair of funcitons to program all the CAC registers Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vi.c25
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
206static 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
218static 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
206static const u32 tonga_mgcg_cgcg_init[] = 229static 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