From: Hawking Zhang <[email protected]>

Encode mcm address look up table in SPX mode
as a temp solution.

v2: fill in when interface is ready (Alex)

Signed-off-by: Hawking Zhang <[email protected]>
Reviewed-by: Likun Gao <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h | 1 +
 drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c  | 5 +++++
 drivers/gpu/drm/amd/amdgpu/imu_v12_1.c  | 6 ++++++
 3 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
index eb8537558f5fb..9c56be725ff3d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
@@ -39,6 +39,7 @@ struct amdgpu_imu_funcs {
     int (*switch_compute_partition)(struct amdgpu_device *adev,
                                    int num_xccs_per_xcp,
                                    int compute_partition_mode);
+    void (*init_mcm_addr_lut)(struct amdgpu_device *adev);
 };
 
 struct imu_rlc_ram_golden {
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
index c2c4cb6154fb7..73ca4921ae5a6 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
@@ -2666,6 +2666,11 @@ static void gfx_v12_1_init_golden_registers(struct 
amdgpu_device *adev)
                gfx_v12_1_xcc_enable_atomics(adev, i);
                gfx_v12_1_xcc_setup_tcp_thrashing_ctrl(adev, i);
        }
+
+       if (adev->gfx.imu.funcs &&
+           adev->gfx.imu.funcs->init_mcm_addr_lut &&
+           amdgpu_emu_mode)
+               adev->gfx.imu.funcs->init_mcm_addr_lut(adev);
 }
 
 static int gfx_v12_1_hw_init(struct amdgpu_ip_block *ip_block)
diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c 
b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c
index 8e33ffcdfa4cc..539785a51f69f 100644
--- a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c
@@ -153,8 +153,14 @@ static int imu_v12_1_switch_compute_partition(struct 
amdgpu_device *adev,
        return 0;
 }
 
+static void imu_v12_1_init_mcm_addr_lut(struct amdgpu_device *adev)
+{
+       /* todo: fill in when interface is ready */
+}
+
 const struct amdgpu_imu_funcs gfx_v12_1_imu_funcs = {
        .init_microcode = imu_v12_1_init_microcode,
        .load_microcode = imu_v12_1_load_microcode,
        .switch_compute_partition = imu_v12_1_switch_compute_partition,
+       .init_mcm_addr_lut = imu_v12_1_init_mcm_addr_lut,
 };
-- 
2.52.0

Reply via email to