Change-Id: I29f33ee3b4bbd6737f3426385a9e8452fb528a67
Signed-off-by: Shaoyun Liu <shaoyun....@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c    | 21 +++----------------
 drivers/gpu/drm/amd/amdgpu/soc15_common.h | 34 ++++++++-----------------------
 2 files changed, 11 insertions(+), 44 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 
b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index a487fa7..b9bc6e5 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -107,24 +107,9 @@
        SOC15_REG_OFFSET(SDMA0, 0, mmSDMA0_GB_ADDR_CONFIG_READ), 0x0018773f, 
0x00000002
 };
 
-static u32 sdma_v4_0_get_reg_offset(u32 instance, u32 internal_offset)
-{
-       u32 base = 0;
-
-       switch (instance) {
-       case 0:
-               base = SDMA0_BASE.instance[0].segment[0];
-               break;
-       case 1:
-               base = SDMA1_BASE.instance[0].segment[0];
-               break;
-       default:
-               BUG();
-               break;
-       }
-
-       return base + internal_offset;
-}
+#define sdma_v4_0_get_reg_offset(inst, offset) ( 0 == inst ? \
+       (adev->reg_offset[SDMA0_HWIP][0][0] + offset) : \
+       (adev->reg_offset[SDMA1_HWIP][0][0] + offset))
 
 static void sdma_v4_0_init_golden_registers(struct amdgpu_device *adev)
 {
diff --git a/drivers/gpu/drm/amd/amdgpu/soc15_common.h 
b/drivers/gpu/drm/amd/amdgpu/soc15_common.h
index 7a8e4e28..62a6e21 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc15_common.h
+++ b/drivers/gpu/drm/amd/amdgpu/soc15_common.h
@@ -54,42 +54,24 @@ struct nbio_pcie_index_data {
                                                             
(ip##_BASE__INST##inst##_SEG4 + reg)))))
 
 #define WREG32_FIELD15(ip, idx, reg, field, val)       \
-       WREG32(SOC15_REG_OFFSET(ip, idx, mm##reg), (RREG32(SOC15_REG_OFFSET(ip, 
idx, mm##reg)) & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, 
field))
+       WREG32(adev->reg_offset[ip##_HWIP][idx][mm##reg##_BASE_IDX] + mm##reg,  
\
+       (RREG32(adev->reg_offset[ip##_HWIP][idx][mm##reg##_BASE_IDX] + mm##reg) 
\
+       & ~REG_FIELD_MASK(reg, field)) | (val) << REG_FIELD_SHIFT(reg, field))
 
 #define RREG32_SOC15(ip, inst, reg) \
-       RREG32( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \
-               (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \
-               (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \
-               (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \
-               (ip##_BASE__INST##inst##_SEG4 + reg))))))
+       RREG32(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg)
 
 #define RREG32_SOC15_OFFSET(ip, inst, reg, offset) \
-       RREG32( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \
-               (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \
-               (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \
-               (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \
-               (ip##_BASE__INST##inst##_SEG4 + reg))))) + offset)
+       RREG32((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + 
offset)
 
 #define WREG32_SOC15(ip, inst, reg, value) \
-       WREG32( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \
-               (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \
-               (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \
-               (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \
-               (ip##_BASE__INST##inst##_SEG4 + reg))))), value)
+       WREG32((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg), value)
 
 #define WREG32_SOC15_NO_KIQ(ip, inst, reg, value) \
-       WREG32_NO_KIQ( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + 
reg : \
-               (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \
-               (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \
-               (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \
-               (ip##_BASE__INST##inst##_SEG4 + reg))))), value)
+       WREG32_NO_KIQ((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + 
reg), value)
 
 #define WREG32_SOC15_OFFSET(ip, inst, reg, offset, value) \
-       WREG32( (0 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG0 + reg : \
-               (1 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG1 + reg : \
-               (2 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG2 + reg : \
-               (3 == reg##_BASE_IDX ? ip##_BASE__INST##inst##_SEG3 + reg : \
-               (ip##_BASE__INST##inst##_SEG4 + reg))))) + offset, value)
+       WREG32((adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg) + 
offset, value)
 
 #endif
 
-- 
1.9.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to