Commit 5d7213b0 authored by Huang Rui's avatar Huang Rui Committed by Alex Deucher

drm/amd/powerplay: add kicker flag into smumgr

Signed-off-by: default avatarHuang Rui <ray.huang@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d2383267
...@@ -834,16 +834,18 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, ...@@ -834,16 +834,18 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
case CHIP_TOPAZ: case CHIP_TOPAZ:
if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) ||
((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) ||
((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) {
info->is_kicker = true;
strcpy(fw_name, "amdgpu/topaz_k_smc.bin"); strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
else } else
strcpy(fw_name, "amdgpu/topaz_smc.bin"); strcpy(fw_name, "amdgpu/topaz_smc.bin");
break; break;
case CHIP_TONGA: case CHIP_TONGA:
if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) || if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1))) {
info->is_kicker = true;
strcpy(fw_name, "amdgpu/tonga_k_smc.bin"); strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
else } else
strcpy(fw_name, "amdgpu/tonga_smc.bin"); strcpy(fw_name, "amdgpu/tonga_smc.bin");
break; break;
case CHIP_FIJI: case CHIP_FIJI:
...@@ -858,9 +860,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, ...@@ -858,9 +860,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
((adev->pdev->device == 0x67ff) && ((adev->pdev->device == 0x67ff) &&
((adev->pdev->revision == 0xcf) || ((adev->pdev->revision == 0xcf) ||
(adev->pdev->revision == 0xef) || (adev->pdev->revision == 0xef) ||
(adev->pdev->revision == 0xff)))) (adev->pdev->revision == 0xff)))) {
info->is_kicker = true;
strcpy(fw_name, "amdgpu/polaris11_k_smc.bin"); strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
else } else
strcpy(fw_name, "amdgpu/polaris11_smc.bin"); strcpy(fw_name, "amdgpu/polaris11_smc.bin");
} else if (type == CGS_UCODE_ID_SMU_SK) { } else if (type == CGS_UCODE_ID_SMU_SK) {
strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin"); strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
...@@ -874,9 +877,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, ...@@ -874,9 +877,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
(adev->pdev->revision == 0xe4) || (adev->pdev->revision == 0xe4) ||
(adev->pdev->revision == 0xe5) || (adev->pdev->revision == 0xe5) ||
(adev->pdev->revision == 0xe7) || (adev->pdev->revision == 0xe7) ||
(adev->pdev->revision == 0xef))) (adev->pdev->revision == 0xef))) {
info->is_kicker = true;
strcpy(fw_name, "amdgpu/polaris10_k_smc.bin"); strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
else } else
strcpy(fw_name, "amdgpu/polaris10_smc.bin"); strcpy(fw_name, "amdgpu/polaris10_smc.bin");
} else if (type == CGS_UCODE_ID_SMU_SK) { } else if (type == CGS_UCODE_ID_SMU_SK) {
strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin"); strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
......
...@@ -171,6 +171,7 @@ struct cgs_firmware_info { ...@@ -171,6 +171,7 @@ struct cgs_firmware_info {
uint32_t ucode_start_address; uint32_t ucode_start_address;
void *kptr; void *kptr;
bool is_kicker;
}; };
struct cgs_mode_info { struct cgs_mode_info {
......
...@@ -137,6 +137,7 @@ struct pp_smumgr { ...@@ -137,6 +137,7 @@ struct pp_smumgr {
uint32_t usec_timeout; uint32_t usec_timeout;
bool reload_fw; bool reload_fw;
const struct pp_smumgr_func *smumgr_funcs; const struct pp_smumgr_func *smumgr_funcs;
bool is_kicker;
}; };
extern int smum_early_init(struct pp_instance *handle); extern int smum_early_init(struct pp_instance *handle);
......
...@@ -533,6 +533,8 @@ int smu7_upload_smu_firmware_image(struct pp_smumgr *smumgr) ...@@ -533,6 +533,8 @@ int smu7_upload_smu_firmware_image(struct pp_smumgr *smumgr)
cgs_get_firmware_info(smumgr->device, cgs_get_firmware_info(smumgr->device,
smu7_convert_fw_type_to_cgs(UCODE_ID_SMU_SK), &info); smu7_convert_fw_type_to_cgs(UCODE_ID_SMU_SK), &info);
smumgr->is_kicker = info.is_kicker;
result = smu7_upload_smc_firmware_data(smumgr, info.image_size, (uint32_t *)info.kptr, SMU7_SMC_SIZE); result = smu7_upload_smc_firmware_data(smumgr, info.image_size, (uint32_t *)info.kptr, SMU7_SMC_SIZE);
return result; return result;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment