summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c
diff options
context:
space:
mode:
authorXiaojie Yuan <xiaojie.yuan@amd.com>2019-06-05 17:58:57 +0800
committerAlex Deucher <alexander.deucher@amd.com>2019-07-18 14:17:58 -0500
commitc20697674d3264f1cb2094eeec41c36d8f3f6320 (patch)
tree57b134b46d23441c7fb8572a558460ed160a5eeb /drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c
parenta0f6d926f139d6fe20ca39f4a27ba0c51458bfd1 (diff)
drm/amdgpu/discovery: init reg base offset via ip discovery for navi14
Add IP discovery for navi14. Signed-off-by: Xiaojie Yuan <xiaojie.yuan@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c b/drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c
index 28f3d6490649..864668a7f1d2 100644
--- a/drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c
+++ b/drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c
@@ -29,8 +29,20 @@
int navi14_reg_base_init(struct amdgpu_device *adev)
{
- /* HW has more IP blocks, only initialized the blocke needed by driver */
- uint32_t i;
+ int r, i;
+
+ if (amdgpu_discovery) {
+ r = amdgpu_discovery_reg_base_init(adev);
+ if (r) {
+ DRM_WARN("failed to init reg base from ip discovery table, "
+ "fallback to legacy init method\n");
+ goto legacy_init;
+ }
+
+ return 0;
+ }
+
+legacy_init:
for (i = 0 ; i < MAX_INSTANCE ; ++i) {
adev->reg_offset[GC_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i]));
adev->reg_offset[HDP_HWIP][i] = (uint32_t *)(&(HDP_BASE.instance[i]));
@@ -49,5 +61,6 @@ int navi14_reg_base_init(struct amdgpu_device *adev)
adev->reg_offset[THM_HWIP][i] = (uint32_t *)(&(THM_BASE.instance[i]));
adev->reg_offset[CLK_HWIP][i] = (uint32_t *)(&(CLK_BASE.instance[i]));
}
+
return 0;
}