From 1dbc2c5456ac56cce50017edaa0ea9020c7cabf4 Mon Sep 17 00:00:00 2001 From: Xiaojie Yuan Date: Wed, 5 Jun 2019 17:58:57 +0800 Subject: [PATCH 2625/2940] drm/amdgpu/discovery: init reg base offset via ip discovery for navi14 Add IP discovery for navi14. Signed-off-by: Xiaojie Yuan Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/navi14_reg_init.c | 17 +++++++++++++++-- 1 file 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; } -- 2.17.1