diff options
author | Huang Rui <ray.huang@amd.com> | 2017-05-31 10:17:11 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-06-06 16:58:23 -0400 |
commit | 3dff4cc4b0f99f039d41ff86c3503372f9719124 (patch) | |
tree | 8ff76477d78b32d396114409c389c4bf959f6b74 /drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | |
parent | d5c87390f1a0e82c3ce4ab8d7ba8a323e8729484 (diff) |
drm/amdgpu: abstract setup vmid config for gfxhub/mmhub
Signed-off-by: Huang Rui <ray.huang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-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/gfxhub_v1_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c index 3359b2c07349..626afc046f78 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | |||
@@ -195,31 +195,10 @@ static void gfxhub_v1_0_disable_identity_aperture(struct amdgpu_device *adev) | |||
195 | 195 | ||
196 | } | 196 | } |
197 | 197 | ||
198 | int gfxhub_v1_0_gart_enable(struct amdgpu_device *adev) | 198 | static void gfxhub_v1_0_setup_vmid_config(struct amdgpu_device *adev) |
199 | { | 199 | { |
200 | u32 tmp; | 200 | int i; |
201 | u32 i; | 201 | uint32_t tmp; |
202 | |||
203 | if (amdgpu_sriov_vf(adev)) { | ||
204 | /* | ||
205 | * MC_VM_FB_LOCATION_BASE/TOP is NULL for VF, becuase they are | ||
206 | * VF copy registers so vbios post doesn't program them, for | ||
207 | * SRIOV driver need to program them | ||
208 | */ | ||
209 | WREG32(SOC15_REG_OFFSET(GC, 0, mmMC_VM_FB_LOCATION_BASE), | ||
210 | adev->mc.vram_start >> 24); | ||
211 | WREG32(SOC15_REG_OFFSET(GC, 0, mmMC_VM_FB_LOCATION_TOP), | ||
212 | adev->mc.vram_end >> 24); | ||
213 | } | ||
214 | |||
215 | /* GART Enable. */ | ||
216 | gfxhub_v1_0_init_gart_aperture_regs(adev); | ||
217 | gfxhub_v1_0_init_system_aperture_regs(adev); | ||
218 | gfxhub_v1_0_init_tlb_regs(adev); | ||
219 | gfxhub_v1_0_init_cache_regs(adev); | ||
220 | |||
221 | gfxhub_v1_0_enable_system_domain(adev); | ||
222 | gfxhub_v1_0_disable_identity_aperture(adev); | ||
223 | 202 | ||
224 | for (i = 0; i <= 14; i++) { | 203 | for (i = 0; i <= 14; i++) { |
225 | tmp = RREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT1_CNTL) + i); | 204 | tmp = RREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT1_CNTL) + i); |
@@ -251,7 +230,31 @@ int gfxhub_v1_0_gart_enable(struct amdgpu_device *adev) | |||
251 | WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_END_ADDR_HI32) + i*2, | 230 | WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_END_ADDR_HI32) + i*2, |
252 | upper_32_bits(adev->vm_manager.max_pfn - 1)); | 231 | upper_32_bits(adev->vm_manager.max_pfn - 1)); |
253 | } | 232 | } |
233 | } | ||
234 | |||
235 | int gfxhub_v1_0_gart_enable(struct amdgpu_device *adev) | ||
236 | { | ||
237 | if (amdgpu_sriov_vf(adev)) { | ||
238 | /* | ||
239 | * MC_VM_FB_LOCATION_BASE/TOP is NULL for VF, becuase they are | ||
240 | * VF copy registers so vbios post doesn't program them, for | ||
241 | * SRIOV driver need to program them | ||
242 | */ | ||
243 | WREG32(SOC15_REG_OFFSET(GC, 0, mmMC_VM_FB_LOCATION_BASE), | ||
244 | adev->mc.vram_start >> 24); | ||
245 | WREG32(SOC15_REG_OFFSET(GC, 0, mmMC_VM_FB_LOCATION_TOP), | ||
246 | adev->mc.vram_end >> 24); | ||
247 | } | ||
248 | |||
249 | /* GART Enable. */ | ||
250 | gfxhub_v1_0_init_gart_aperture_regs(adev); | ||
251 | gfxhub_v1_0_init_system_aperture_regs(adev); | ||
252 | gfxhub_v1_0_init_tlb_regs(adev); | ||
253 | gfxhub_v1_0_init_cache_regs(adev); | ||
254 | 254 | ||
255 | gfxhub_v1_0_enable_system_domain(adev); | ||
256 | gfxhub_v1_0_disable_identity_aperture(adev); | ||
257 | gfxhub_v1_0_setup_vmid_config(adev); | ||
255 | 258 | ||
256 | return 0; | 259 | return 0; |
257 | } | 260 | } |