drm/amd/powerplay: fix request smc_sk firmware case
authorHuang Rui <ray.huang@amd.com>
Mon, 19 Dec 2016 07:15:35 +0000 (15:15 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 27 Jan 2017 16:12:41 +0000 (11:12 -0500)
This patch fixes firmware request error on polaris protection mode.
Because we need load smc_sk instead of smc under security protection
mode.

Signed-off-by: Huang Rui <ray.huang@amd.com>
Tested-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c

index af65c24cefe39cd2796981787e38c17dc1f0b777..d0e87102e1b913e6f44bbf811f42832030acf9bb 100644 (file)
@@ -713,6 +713,7 @@ static int amdgpu_cgs_rel_firmware(struct cgs_device *cgs_device, enum cgs_ucode
        CGS_FUNC_ADEV;
        if ((CGS_UCODE_ID_SMU == type) || (CGS_UCODE_ID_SMU_SK == type)) {
                release_firmware(adev->pm.fw);
+               adev->pm.fw = NULL;
                return 0;
        }
        /* cannot release other firmware because they are not created by cgs */
@@ -808,6 +809,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
                const uint8_t *src;
                const struct smc_firmware_header_v1_0 *hdr;
 
+               if (CGS_UCODE_ID_SMU_SK == type)
+                       amdgpu_cgs_rel_firmware(cgs_device, CGS_UCODE_ID_SMU);
+
                if (!adev->pm.fw) {
                        switch (adev->asic_type) {
                        case CHIP_TOPAZ: