From: Frank Min <[email protected]>

Add support for gfx 13.0.4

Signed-off-by: Frank Min <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c    | 5 +++++
 drivers/gpu/drm/amd/amdgpu/gfx_v13_0.c           | 8 ++++++++
 drivers/gpu/drm/amd/amdgpu/gmc_v13_0.c           | 2 ++
 drivers/gpu/drm/amd/amdgpu/imu_v13_0.c           | 1 +
 drivers/gpu/drm/amd/amdgpu/soc_v2_0.c            | 1 +
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c            | 1 +
 drivers/gpu/drm/amd/amdkfd/kfd_device.c          | 4 +++-
 drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c | 1 +
 8 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index 9b286c78454cf..818aa325ddc71 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -2751,6 +2751,7 @@ static int amdgpu_discovery_set_common_ip_blocks(struct 
amdgpu_device *adev)
                amdgpu_device_ip_block_add(adev, &soc_v1_0_common_ip_block);
                break;
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                amdgpu_device_ip_block_add(adev, &soc_v2_0_common_ip_block);
                break;
        default:
@@ -2815,6 +2816,7 @@ static int amdgpu_discovery_set_gmc_ip_blocks(struct 
amdgpu_device *adev)
                amdgpu_device_ip_block_add(adev, &gmc_v12_0_ip_block);
                break;
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                amdgpu_device_ip_block_add(adev, &gmc_v13_0_ip_block);
                break;
        default:
@@ -3158,6 +3160,7 @@ static int amdgpu_discovery_set_gc_ip_blocks(struct 
amdgpu_device *adev)
                amdgpu_device_ip_block_add(adev, &gfx_v12_1_ip_block);
                break;
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                amdgpu_device_ip_block_add(adev, &gfx_v13_0_ip_block);
                break;
        default:
@@ -3396,6 +3399,7 @@ static int amdgpu_discovery_set_mes_ip_blocks(struct 
amdgpu_device *adev)
                adev->enable_uni_mes = true;
                break;
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                amdgpu_device_ip_block_add(adev, &mes_v13_0_ip_block);
                adev->enable_mes = false;
                adev->enable_mes_kiq = false;
@@ -3823,6 +3827,7 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device 
*adev)
                adev->family = AMDGPU_FAMILY_GC_12_0_0;
                break;
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->family = AMDGPU_FAMILY_GC_13_0_0;
                break;
        default:
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v13_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v13_0.c
index d6ae2acfdb4b3..37a0ea5172722 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v13_0.c
@@ -963,6 +963,7 @@ static int gfx_v13_0_gpu_early_init(struct amdgpu_device 
*adev)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->gfx.config.max_hw_contexts = 8;
                adev->gfx.config.sc_prim_fifo_size_frontend = 0x20;
                adev->gfx.config.sc_prim_fifo_size_backend = 0x100;
@@ -1415,6 +1416,7 @@ static int gfx_v13_0_sw_init(struct amdgpu_ip_block 
*ip_block)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->gfx.me.num_me = 1;
                adev->gfx.me.num_pipe_per_me = 2;
                adev->gfx.me.num_queue_per_pipe = 8;
@@ -1434,6 +1436,7 @@ static int gfx_v13_0_sw_init(struct amdgpu_ip_block 
*ip_block)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                if (!adev->gfx.disable_uq) {
                        adev->userq_funcs[AMDGPU_HW_IP_GFX] = &userq_mes_funcs;
                        adev->userq_funcs[AMDGPU_HW_IP_COMPUTE] = 
&userq_mes_funcs;
@@ -1445,6 +1448,7 @@ static int gfx_v13_0_sw_init(struct amdgpu_ip_block 
*ip_block)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->gfx.enable_cleaner_shader = true;
                break;
        default:
@@ -1551,6 +1555,7 @@ static int gfx_v13_0_sw_init(struct amdgpu_ip_block 
*ip_block)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->gfx.compute_supported_reset |= 
AMDGPU_RESET_TYPE_PER_QUEUE;
                adev->gfx.gfx_supported_reset |= AMDGPU_RESET_TYPE_PER_QUEUE;
        default:
@@ -3553,6 +3558,7 @@ static void gfx_v13_0_init_golden_registers(struct 
amdgpu_device *adev)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                soc15_program_register_sequence(adev,
                                                golden_settings_gc_13_0,
                                                (const 
u32)ARRAY_SIZE(golden_settings_gc_13_0));
@@ -4010,6 +4016,7 @@ static int gfx_v13_0_set_powergating_state(struct 
amdgpu_ip_block *ip_block,
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                amdgpu_gfx_off_ctrl(adev, enable);
                break;
        default:
@@ -4274,6 +4281,7 @@ static int gfx_v13_0_set_clockgating_state(struct 
amdgpu_ip_block *ip_block,
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                gfx_v13_0_update_gfx_clock_gating(adev,
                                                  state == AMD_CG_STATE_GATE);
                break;
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v13_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v13_0.c
index cf76b0efe9fe1..49fee18eb5253 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v13_0.c
@@ -578,6 +578,7 @@ static void gmc_v13_0_set_gfxhub_funcs(struct amdgpu_device 
*adev)
 {
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->gfxhub.funcs = &gfxhub_v13_0_funcs;
                break;
        default:
@@ -736,6 +737,7 @@ static int gmc_v13_0_sw_init(struct amdgpu_ip_block 
*ip_block)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                set_bit(AMDGPU_GFXHUB(0), adev->vmhubs_mask);
                set_bit(AMDGPU_MMHUB0(0), adev->vmhubs_mask);
                /*
diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v13_0.c 
b/drivers/gpu/drm/amd/amdgpu/imu_v13_0.c
index aea418be444a0..c26c130026d82 100644
--- a/drivers/gpu/drm/amd/amdgpu/imu_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/imu_v13_0.c
@@ -260,6 +260,7 @@ static void imu_v13_0_program_rlc_ram(struct amdgpu_device 
*adev)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                if (!r)
                        program_imu_rlc_ram(adev, data, (const u32)size);
                break;
diff --git a/drivers/gpu/drm/amd/amdgpu/soc_v2_0.c 
b/drivers/gpu/drm/amd/amdgpu/soc_v2_0.c
index 92a3965df426e..0f358dbe578e6 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc_v2_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc_v2_0.c
@@ -353,6 +353,7 @@ static int soc_v2_0_common_early_init(struct 
amdgpu_ip_block *ip_block)
 
        switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                adev->cg_flags = 0;
                adev->pg_flags = 0;
                adev->external_rev_id = adev->rev_id + 0x10;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index a8fadbbbd2929..235a461fe24a2 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -1736,6 +1736,7 @@ int kfd_get_gpu_cache_info(struct kfd_node *kdev, struct 
kfd_gpu_cache_info **pc
                case IP_VERSION(12, 0, 0):
                case IP_VERSION(12, 0, 1):
                case IP_VERSION(12, 1, 0):
+               case IP_VERSION(13, 0, 4):
                        num_of_cache_types =
                                
kfd_fill_gpu_cache_info_from_gfx_config(kdev->kfd,
                                                                        
cache_line_size_missing,
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index 3a8f76909752e..2200f5c7c38d6 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -179,6 +179,7 @@ static void 
kfd_device_info_set_event_interrupt_class(struct kfd_dev *kfd)
        case IP_VERSION(12, 0, 0):
        case IP_VERSION(12, 0, 1):
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                kfd->device_info.event_interrupt_class = 
&event_interrupt_class_v11;
                break;
        case IP_VERSION(12, 1, 0):
@@ -479,7 +480,8 @@ struct kfd_dev *kgd2kfd_probe(struct amdgpu_device *adev, 
bool vf)
                        f2g = &gfx_v12_1_kfd2kgd;
                        break;
                case IP_VERSION(13, 0, 1):
-                       /* Note: Compiler version is 13.1.0 while HW version is 
13.0.1 */
+               case IP_VERSION(13, 0, 4):
+                       /* Compiler target version for GC 13.0.x is 13.1.0. */
                        gfx_target_version = 130100;
                        f2g = &gfx_v13_kfd2kgd;
                        break;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c
index 224b0e1e38ff5..8d5e26bc312b7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c
@@ -259,6 +259,7 @@ static inline u32 gc_vm_fault_client_id(struct kfd_node 
*dev)
 {
        switch (KFD_GC_VERSION(dev)) {
        case IP_VERSION(13, 0, 1):
+       case IP_VERSION(13, 0, 4):
                return SOC_V2_0_IH_CLIENTID_GC_UTCL2;
        default:
                return SOC21_IH_CLIENTID_GFX;
-- 
2.56.0

Reply via email to