diff options
author | 2023-09-04 18:15:13 +0530 | |
---|---|---|
committer | 2023-09-06 14:36:52 -0400 | |
commit | 1b8e56b994592fe8909fdf9d81674a9bf5947217 (patch) | |
tree | 23cf89e010e1a65b5e65fe5728d576dd6a5a3cbb /drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | |
parent | drm/amdgpu: Add only valid firmware version nodes (diff) | |
download | linux-1b8e56b994592fe8909fdf9d81674a9bf5947217.tar.gz linux-1b8e56b994592fe8909fdf9d81674a9bf5947217.tar.bz2 linux-1b8e56b994592fe8909fdf9d81674a9bf5947217.zip |
drm/amdgpu: Restrict bootloader wait to SMUv13.0.6
Restrict the wait for boot loader steady state only to SMUv13.0.6. For
older SOCs, ASIC init has a longer wait period and that takes care.
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/psp_v13_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c index d2a88bc630d2..469eed084976 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c @@ -160,9 +160,6 @@ static int psp_v13_0_wait_for_bootloader(struct psp_context *psp) struct amdgpu_device *adev = psp->adev; int retry_loop, ret; - if (adev->ip_versions[MP0_HWIP][0] == IP_VERSION(13, 0, 6)) - psp_v13_0_wait_for_vmbx_ready(psp); - /* Wait for bootloader to signify that it is ready having bit 31 of * C2PMSG_35 set to 1. All other bits are expected to be cleared. * If there is an error in processing command, bits[7:0] will be set. @@ -180,6 +177,19 @@ static int psp_v13_0_wait_for_bootloader(struct psp_context *psp) return ret; } +static int psp_v13_0_wait_for_bootloader_steady_state(struct psp_context *psp) +{ + struct amdgpu_device *adev = psp->adev; + + if (adev->ip_versions[MP0_HWIP][0] == IP_VERSION(13, 0, 6)) { + psp_v13_0_wait_for_vmbx_ready(psp); + + return psp_v13_0_wait_for_bootloader(psp); + } + + return 0; +} + static int psp_v13_0_bootloader_load_component(struct psp_context *psp, struct psp_bin_desc *bin_desc, enum psp_bootloader_cmd bl_cmd) @@ -737,7 +747,7 @@ static int psp_v13_0_fatal_error_recovery_quirk(struct psp_context *psp) static const struct psp_funcs psp_v13_0_funcs = { .init_microcode = psp_v13_0_init_microcode, - .wait_for_bootloader = psp_v13_0_wait_for_bootloader, + .wait_for_bootloader = psp_v13_0_wait_for_bootloader_steady_state, .bootloader_load_kdb = psp_v13_0_bootloader_load_kdb, .bootloader_load_spl = psp_v13_0_bootloader_load_spl, .bootloader_load_sysdrv = psp_v13_0_bootloader_load_sysdrv, |