drm/amdgpu: add support for PSP IP version 14.0.5
authorTim Huang <tim.huang@amd.com>
Tue, 24 Dec 2024 03:33:52 +0000 (11:33 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 13 Feb 2025 02:02:55 +0000 (21:02 -0500)
This initializes PSP IP version 14.0.5.

Signed-off-by: Tim Huang <tim.huang@amd.com>
Reviewed-by: Yifan Zhang <yifan1.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/amdgpu/psp_v14_0.c

index 60c34027454349de0f09551fe415d3c6474d8eea..06bd9ac28870d0240b04960496bab3a4faed1c31 100644 (file)
@@ -2031,6 +2031,7 @@ static int amdgpu_discovery_set_psp_ip_blocks(struct amdgpu_device *adev)
                break;
        case IP_VERSION(14, 0, 2):
        case IP_VERSION(14, 0, 3):
+       case IP_VERSION(14, 0, 5):
                amdgpu_device_ip_block_add(adev, &psp_v14_0_ip_block);
                break;
        default:
index e5fc80ed06eaea285481eff414c31fa6b38f2893..3d3b0c57e8db4a559d00a9e741531aa1a52ffff0 100644 (file)
@@ -246,6 +246,10 @@ static int psp_early_init(struct amdgpu_ip_block *ip_block)
        case IP_VERSION(14, 0, 3):
                psp_v14_0_set_psp_funcs(psp);
                break;
+       case IP_VERSION(14, 0, 5):
+               psp_v14_0_set_psp_funcs(psp);
+               psp->boot_time_tmr = false;
+               break;
        default:
                return -EINVAL;
        }
index 4d33c95a511631c091e26d05e489ba7f1bca2735..7c49c3f3c3881ee0cddc934e6fe57f0eef01e443 100644 (file)
@@ -35,6 +35,8 @@ MODULE_FIRMWARE("amdgpu/psp_14_0_2_sos.bin");
 MODULE_FIRMWARE("amdgpu/psp_14_0_2_ta.bin");
 MODULE_FIRMWARE("amdgpu/psp_14_0_3_sos.bin");
 MODULE_FIRMWARE("amdgpu/psp_14_0_3_ta.bin");
+MODULE_FIRMWARE("amdgpu/psp_14_0_5_toc.bin");
+MODULE_FIRMWARE("amdgpu/psp_14_0_5_ta.bin");
 
 /* For large FW files the time to complete can be very long */
 #define USBC_PD_POLLING_LIMIT_S 240
@@ -72,6 +74,14 @@ static int psp_v14_0_init_microcode(struct psp_context *psp)
                if (err)
                        return err;
                break;
+       case IP_VERSION(14, 0, 5):
+               err = psp_init_toc_microcode(psp, ucode_prefix);
+               if (err)
+                       return err;
+               err = psp_init_ta_microcode(psp, ucode_prefix);
+               if (err)
+                       return err;
+               break;
        default:
                BUG();
        }