summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
diff options
context:
space:
mode:
authorHuang Rui2019-02-20 13:05:11 +0100
committerAlex Deucher2019-06-22 01:59:24 +0200
commit0186eb96300d26bbb82050f2acc462a396d55e6b (patch)
tree02d839727b587b65988f40e804a3b325cd568b64 /drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
parentdrm/amdgpu: fix the issue of checking on message mapping (diff)
downloadkernel-qcow2-linux-0186eb96300d26bbb82050f2acc462a396d55e6b.tar.gz
kernel-qcow2-linux-0186eb96300d26bbb82050f2acc462a396d55e6b.tar.xz
kernel-qcow2-linux-0186eb96300d26bbb82050f2acc462a396d55e6b.zip
drm/amd/powerplay: smu needs to be initialized after rlc in direct mode
For gfx 10, rlc firmware loading relies on smu firmware is loaded firstly, so in direct type, it has to load smc ucode here before rlc. And meanwhile, the smu initialization has to move after rlc, otherwise, smu message will get failure during the handshake with rlc and smu. Signed-off-by: Huang Rui <ray.huang@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/powerplay/amdgpu_smu.c')
-rw-r--r--drivers/gpu/drm/amd/powerplay/amdgpu_smu.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index 88fd79d5aca6..b9b56ec1aacf 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -820,16 +820,12 @@ static int smu_hw_init(void *handle)
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
struct smu_context *smu = &adev->smu;
- if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) {
- ret = smu_load_microcode(smu);
- if (ret)
+ if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
+ ret = smu_check_fw_status(smu);
+ if (ret) {
+ pr_err("SMC firmware status is not correct\n");
return ret;
- }
-
- ret = smu_check_fw_status(smu);
- if (ret) {
- pr_err("SMC firmware status is not correct\n");
- return ret;
+ }
}
mutex_lock(&smu->mutex);