diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4208-drm-amdgpu-introduce-psp_v11_0_is_sos_alive-interfac.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4208-drm-amdgpu-introduce-psp_v11_0_is_sos_alive-interfac.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4208-drm-amdgpu-introduce-psp_v11_0_is_sos_alive-interfac.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4208-drm-amdgpu-introduce-psp_v11_0_is_sos_alive-interfac.patch new file mode 100644 index 00000000..3ff1fa42 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4208-drm-amdgpu-introduce-psp_v11_0_is_sos_alive-interfac.patch @@ -0,0 +1,83 @@ +From bb67d025b4fb92d3be1356c7ccb43d89fab544c8 Mon Sep 17 00:00:00 2001 +From: "Tianci.Yin" <tianci.yin@amd.com> +Date: Mon, 30 Sep 2019 14:16:42 +0800 +Subject: [PATCH 4208/4736] drm/amdgpu: introduce psp_v11_0_is_sos_alive + interface(v2) + +introduce psp_v11_0_is_sos_alive func for common use. + +Change-Id: I5ab83987da84fe19fce93f35ae385c0d8ae3c39e +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Luben Tuikov <luben.tuikov@amd.com> +Signed-off-by: Tianci.Yin <tianci.yin@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +index f2f67af65b94..b52af59079b7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +@@ -214,18 +214,26 @@ static int psp_v11_0_init_microcode(struct psp_context *psp) + return err; + } + ++static bool psp_v11_0_is_sos_alive(struct psp_context *psp) ++{ ++ struct amdgpu_device *adev = psp->adev; ++ uint32_t sol_reg; ++ ++ sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81); ++ ++ return sol_reg != 0x0; ++} ++ + static int psp_v11_0_bootloader_load_kdb(struct psp_context *psp) + { + int ret; + uint32_t psp_gfxdrv_command_reg = 0; + struct amdgpu_device *adev = psp->adev; +- uint32_t sol_reg; + + /* Check tOS sign of life register to confirm sys driver and sOS + * are already been loaded. + */ +- sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81); +- if (sol_reg) { ++ if (psp_v11_0_is_sos_alive(psp)) { + psp->sos_fw_version = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_58); + dev_info(adev->dev, "sos fw version = 0x%x.\n", psp->sos_fw_version); + return 0; +@@ -261,13 +269,11 @@ static int psp_v11_0_bootloader_load_sysdrv(struct psp_context *psp) + int ret; + uint32_t psp_gfxdrv_command_reg = 0; + struct amdgpu_device *adev = psp->adev; +- uint32_t sol_reg; + + /* Check sOS sign of life register to confirm sys driver and sOS + * are already been loaded. + */ +- sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81); +- if (sol_reg) { ++ if (psp_v11_0_is_sos_alive(psp)) { + psp->sos_fw_version = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_58); + dev_info(adev->dev, "sos fw version = 0x%x.\n", psp->sos_fw_version); + return 0; +@@ -305,13 +311,11 @@ static int psp_v11_0_bootloader_load_sos(struct psp_context *psp) + int ret; + unsigned int psp_gfxdrv_command_reg = 0; + struct amdgpu_device *adev = psp->adev; +- uint32_t sol_reg; + + /* Check sOS sign of life register to confirm sys driver and sOS + * are already been loaded. + */ +- sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81); +- if (sol_reg) ++ if (psp_v11_0_is_sos_alive(psp)) + return 0; + + /* Wait for bootloader to signify that is ready having bit 31 of C2PMSG_35 set to 1 */ +-- +2.17.1 + |