diff options
author | Huang Rui <ray.huang@amd.com> | 2018-01-22 07:48:14 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-05-15 14:43:36 -0400 |
commit | 621a6318adea69b08a3652c64bc7cc0cb4dacfb4 (patch) | |
tree | 8813a932613f5e929ba4a84ce27efb7dde0d2d22 /drivers/gpu/drm/amd | |
parent | d40e9b13c8bad15e56f2e8c9572f62c1229833a6 (diff) |
drm/amdgpu: add save restore list cntl gpm and srm firmware support
RLC save/restore list cntl/gpm_mem/srm_mem ucodes are used for CGPG and gfxoff
function.
Signed-off-by: Huang Rui <ray.huang@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 36 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 55 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/psp_v10_0.c | 9 |
6 files changed, 132 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index d64ef30fed47..5ad893915a85 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -774,9 +774,18 @@ struct amdgpu_rlc { | |||
774 | u32 starting_offsets_start; | 774 | u32 starting_offsets_start; |
775 | u32 reg_list_format_size_bytes; | 775 | u32 reg_list_format_size_bytes; |
776 | u32 reg_list_size_bytes; | 776 | u32 reg_list_size_bytes; |
777 | u32 reg_list_format_direct_reg_list_length; | ||
778 | u32 save_restore_list_cntl_size_bytes; | ||
779 | u32 save_restore_list_gpm_size_bytes; | ||
780 | u32 save_restore_list_srm_size_bytes; | ||
777 | 781 | ||
778 | u32 *register_list_format; | 782 | u32 *register_list_format; |
779 | u32 *register_restore; | 783 | u32 *register_restore; |
784 | u8 *save_restore_list_cntl; | ||
785 | u8 *save_restore_list_gpm; | ||
786 | u8 *save_restore_list_srm; | ||
787 | |||
788 | bool is_rlc_v2_1; | ||
780 | }; | 789 | }; |
781 | 790 | ||
782 | #define AMDGPU_MAX_COMPUTE_QUEUES KGD_MAX_QUEUES | 791 | #define AMDGPU_MAX_COMPUTE_QUEUES KGD_MAX_QUEUES |
@@ -943,6 +952,12 @@ struct amdgpu_gfx { | |||
943 | uint32_t ce_feature_version; | 952 | uint32_t ce_feature_version; |
944 | uint32_t pfp_feature_version; | 953 | uint32_t pfp_feature_version; |
945 | uint32_t rlc_feature_version; | 954 | uint32_t rlc_feature_version; |
955 | uint32_t rlc_srlc_fw_version; | ||
956 | uint32_t rlc_srlc_feature_version; | ||
957 | uint32_t rlc_srlg_fw_version; | ||
958 | uint32_t rlc_srlg_feature_version; | ||
959 | uint32_t rlc_srls_fw_version; | ||
960 | uint32_t rlc_srls_feature_version; | ||
946 | uint32_t mec_feature_version; | 961 | uint32_t mec_feature_version; |
947 | uint32_t mec2_feature_version; | 962 | uint32_t mec2_feature_version; |
948 | struct amdgpu_ring gfx_ring[AMDGPU_MAX_GFX_RINGS]; | 963 | struct amdgpu_ring gfx_ring[AMDGPU_MAX_GFX_RINGS]; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index d602f8b14c58..eb4785e51573 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
@@ -215,6 +215,18 @@ static int amdgpu_firmware_info(struct drm_amdgpu_info_firmware *fw_info, | |||
215 | fw_info->ver = adev->gfx.rlc_fw_version; | 215 | fw_info->ver = adev->gfx.rlc_fw_version; |
216 | fw_info->feature = adev->gfx.rlc_feature_version; | 216 | fw_info->feature = adev->gfx.rlc_feature_version; |
217 | break; | 217 | break; |
218 | case AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL: | ||
219 | fw_info->ver = adev->gfx.rlc_srlc_fw_version; | ||
220 | fw_info->feature = adev->gfx.rlc_srlc_feature_version; | ||
221 | break; | ||
222 | case AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM: | ||
223 | fw_info->ver = adev->gfx.rlc_srlg_fw_version; | ||
224 | fw_info->feature = adev->gfx.rlc_srlg_feature_version; | ||
225 | break; | ||
226 | case AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM: | ||
227 | fw_info->ver = adev->gfx.rlc_srls_fw_version; | ||
228 | fw_info->feature = adev->gfx.rlc_srls_feature_version; | ||
229 | break; | ||
218 | case AMDGPU_INFO_FW_GFX_MEC: | 230 | case AMDGPU_INFO_FW_GFX_MEC: |
219 | if (query_fw->index == 0) { | 231 | if (query_fw->index == 0) { |
220 | fw_info->ver = adev->gfx.mec_fw_version; | 232 | fw_info->ver = adev->gfx.mec_fw_version; |
@@ -1149,6 +1161,30 @@ static int amdgpu_debugfs_firmware_info(struct seq_file *m, void *data) | |||
1149 | seq_printf(m, "RLC feature version: %u, firmware version: 0x%08x\n", | 1161 | seq_printf(m, "RLC feature version: %u, firmware version: 0x%08x\n", |
1150 | fw_info.feature, fw_info.ver); | 1162 | fw_info.feature, fw_info.ver); |
1151 | 1163 | ||
1164 | /* RLC SAVE RESTORE LIST CNTL */ | ||
1165 | query_fw.fw_type = AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL; | ||
1166 | ret = amdgpu_firmware_info(&fw_info, &query_fw, adev); | ||
1167 | if (ret) | ||
1168 | return ret; | ||
1169 | seq_printf(m, "RLC SRLC feature version: %u, firmware version: 0x%08x\n", | ||
1170 | fw_info.feature, fw_info.ver); | ||
1171 | |||
1172 | /* RLC SAVE RESTORE LIST GPM MEM */ | ||
1173 | query_fw.fw_type = AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM; | ||
1174 | ret = amdgpu_firmware_info(&fw_info, &query_fw, adev); | ||
1175 | if (ret) | ||
1176 | return ret; | ||
1177 | seq_printf(m, "RLC SRLG feature version: %u, firmware version: 0x%08x\n", | ||
1178 | fw_info.feature, fw_info.ver); | ||
1179 | |||
1180 | /* RLC SAVE RESTORE LIST SRM MEM */ | ||
1181 | query_fw.fw_type = AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM; | ||
1182 | ret = amdgpu_firmware_info(&fw_info, &query_fw, adev); | ||
1183 | if (ret) | ||
1184 | return ret; | ||
1185 | seq_printf(m, "RLC SRLS feature version: %u, firmware version: 0x%08x\n", | ||
1186 | fw_info.feature, fw_info.ver); | ||
1187 | |||
1152 | /* MEC */ | 1188 | /* MEC */ |
1153 | query_fw.fw_type = AMDGPU_INFO_FW_GFX_MEC; | 1189 | query_fw.fw_type = AMDGPU_INFO_FW_GFX_MEC; |
1154 | query_fw.index = 0; | 1190 | query_fw.index = 0; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c index 84d652599d5b..0c74c09ef3b0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | |||
@@ -337,7 +337,10 @@ static int amdgpu_ucode_init_single_fw(struct amdgpu_device *adev, | |||
337 | (ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC1 && | 337 | (ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC1 && |
338 | ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC2 && | 338 | ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC2 && |
339 | ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC1_JT && | 339 | ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC1_JT && |
340 | ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC2_JT)) { | 340 | ucode->ucode_id != AMDGPU_UCODE_ID_CP_MEC2_JT && |
341 | ucode->ucode_id != AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL && | ||
342 | ucode->ucode_id != AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM && | ||
343 | ucode->ucode_id != AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM)) { | ||
341 | ucode->ucode_size = le32_to_cpu(header->ucode_size_bytes); | 344 | ucode->ucode_size = le32_to_cpu(header->ucode_size_bytes); |
342 | 345 | ||
343 | memcpy(ucode->kaddr, (void *)((uint8_t *)ucode->fw->data + | 346 | memcpy(ucode->kaddr, (void *)((uint8_t *)ucode->fw->data + |
@@ -359,6 +362,18 @@ static int amdgpu_ucode_init_single_fw(struct amdgpu_device *adev, | |||
359 | le32_to_cpu(header->ucode_array_offset_bytes) + | 362 | le32_to_cpu(header->ucode_array_offset_bytes) + |
360 | le32_to_cpu(cp_hdr->jt_offset) * 4), | 363 | le32_to_cpu(cp_hdr->jt_offset) * 4), |
361 | ucode->ucode_size); | 364 | ucode->ucode_size); |
365 | } else if (ucode->ucode_id == AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL) { | ||
366 | ucode->ucode_size = adev->gfx.rlc.save_restore_list_cntl_size_bytes; | ||
367 | memcpy(ucode->kaddr, adev->gfx.rlc.save_restore_list_cntl, | ||
368 | ucode->ucode_size); | ||
369 | } else if (ucode->ucode_id == AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM) { | ||
370 | ucode->ucode_size = adev->gfx.rlc.save_restore_list_gpm_size_bytes; | ||
371 | memcpy(ucode->kaddr, adev->gfx.rlc.save_restore_list_gpm, | ||
372 | ucode->ucode_size); | ||
373 | } else if (ucode->ucode_id == AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM) { | ||
374 | ucode->ucode_size = adev->gfx.rlc.save_restore_list_srm_size_bytes; | ||
375 | memcpy(ucode->kaddr, adev->gfx.rlc.save_restore_list_srm, | ||
376 | ucode->ucode_size); | ||
362 | } | 377 | } |
363 | 378 | ||
364 | return 0; | 379 | return 0; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h index 0b262f4bb4fc..08e38579af24 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | |||
@@ -187,6 +187,9 @@ enum AMDGPU_UCODE_ID { | |||
187 | AMDGPU_UCODE_ID_CP_MEC2, | 187 | AMDGPU_UCODE_ID_CP_MEC2, |
188 | AMDGPU_UCODE_ID_CP_MEC2_JT, | 188 | AMDGPU_UCODE_ID_CP_MEC2_JT, |
189 | AMDGPU_UCODE_ID_RLC_G, | 189 | AMDGPU_UCODE_ID_RLC_G, |
190 | AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL, | ||
191 | AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM, | ||
192 | AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM, | ||
190 | AMDGPU_UCODE_ID_STORAGE, | 193 | AMDGPU_UCODE_ID_STORAGE, |
191 | AMDGPU_UCODE_ID_SMC, | 194 | AMDGPU_UCODE_ID_SMC, |
192 | AMDGPU_UCODE_ID_UVD, | 195 | AMDGPU_UCODE_ID_UVD, |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index 587a8731fa31..73b76fa29bad 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #define GFX9_MEC_HPD_SIZE 2048 | 41 | #define GFX9_MEC_HPD_SIZE 2048 |
42 | #define RLCG_UCODE_LOADING_START_ADDRESS 0x00002000L | 42 | #define RLCG_UCODE_LOADING_START_ADDRESS 0x00002000L |
43 | #define RLC_SAVE_RESTORE_ADDR_STARTING_OFFSET 0x00000000L | 43 | #define RLC_SAVE_RESTORE_ADDR_STARTING_OFFSET 0x00000000L |
44 | #define GFX9_RLC_FORMAT_DIRECT_REG_LIST_LENGTH 34 | ||
45 | 44 | ||
46 | #define mmPWR_MISC_CNTL_STATUS 0x0183 | 45 | #define mmPWR_MISC_CNTL_STATUS 0x0183 |
47 | #define mmPWR_MISC_CNTL_STATUS_BASE_IDX 0 | 46 | #define mmPWR_MISC_CNTL_STATUS_BASE_IDX 0 |
@@ -401,6 +400,27 @@ static void gfx_v9_0_free_microcode(struct amdgpu_device *adev) | |||
401 | kfree(adev->gfx.rlc.register_list_format); | 400 | kfree(adev->gfx.rlc.register_list_format); |
402 | } | 401 | } |
403 | 402 | ||
403 | static void gfx_v9_0_init_rlc_ext_microcode(struct amdgpu_device *adev) | ||
404 | { | ||
405 | const struct rlc_firmware_header_v2_1 *rlc_hdr; | ||
406 | |||
407 | rlc_hdr = (const struct rlc_firmware_header_v2_1 *)adev->gfx.rlc_fw->data; | ||
408 | adev->gfx.rlc_srlc_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_ucode_ver); | ||
409 | adev->gfx.rlc_srlc_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_feature_ver); | ||
410 | adev->gfx.rlc.save_restore_list_cntl_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_cntl_size_bytes); | ||
411 | adev->gfx.rlc.save_restore_list_cntl = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_cntl_offset_bytes); | ||
412 | adev->gfx.rlc_srlg_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_ucode_ver); | ||
413 | adev->gfx.rlc_srlg_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_feature_ver); | ||
414 | adev->gfx.rlc.save_restore_list_gpm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_gpm_size_bytes); | ||
415 | adev->gfx.rlc.save_restore_list_gpm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_gpm_offset_bytes); | ||
416 | adev->gfx.rlc_srls_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_ucode_ver); | ||
417 | adev->gfx.rlc_srls_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_feature_ver); | ||
418 | adev->gfx.rlc.save_restore_list_srm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_srm_size_bytes); | ||
419 | adev->gfx.rlc.save_restore_list_srm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_srm_offset_bytes); | ||
420 | adev->gfx.rlc.reg_list_format_direct_reg_list_length = | ||
421 | le32_to_cpu(rlc_hdr->reg_list_format_direct_reg_list_length); | ||
422 | } | ||
423 | |||
404 | static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) | 424 | static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) |
405 | { | 425 | { |
406 | const char *chip_name; | 426 | const char *chip_name; |
@@ -412,6 +432,8 @@ static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) | |||
412 | const struct rlc_firmware_header_v2_0 *rlc_hdr; | 432 | const struct rlc_firmware_header_v2_0 *rlc_hdr; |
413 | unsigned int *tmp = NULL; | 433 | unsigned int *tmp = NULL; |
414 | unsigned int i = 0; | 434 | unsigned int i = 0; |
435 | uint16_t version_major; | ||
436 | uint16_t version_minor; | ||
415 | 437 | ||
416 | DRM_DEBUG("\n"); | 438 | DRM_DEBUG("\n"); |
417 | 439 | ||
@@ -468,6 +490,12 @@ static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) | |||
468 | goto out; | 490 | goto out; |
469 | err = amdgpu_ucode_validate(adev->gfx.rlc_fw); | 491 | err = amdgpu_ucode_validate(adev->gfx.rlc_fw); |
470 | rlc_hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data; | 492 | rlc_hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data; |
493 | |||
494 | version_major = le16_to_cpu(rlc_hdr->header.header_version_major); | ||
495 | version_minor = le16_to_cpu(rlc_hdr->header.header_version_minor); | ||
496 | if (version_major == 2 && version_minor == 1) | ||
497 | adev->gfx.rlc.is_rlc_v2_1 = true; | ||
498 | |||
471 | adev->gfx.rlc_fw_version = le32_to_cpu(rlc_hdr->header.ucode_version); | 499 | adev->gfx.rlc_fw_version = le32_to_cpu(rlc_hdr->header.ucode_version); |
472 | adev->gfx.rlc_feature_version = le32_to_cpu(rlc_hdr->ucode_feature_version); | 500 | adev->gfx.rlc_feature_version = le32_to_cpu(rlc_hdr->ucode_feature_version); |
473 | adev->gfx.rlc.save_and_restore_offset = | 501 | adev->gfx.rlc.save_and_restore_offset = |
@@ -508,6 +536,9 @@ static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) | |||
508 | for (i = 0 ; i < (rlc_hdr->reg_list_size_bytes >> 2); i++) | 536 | for (i = 0 ; i < (rlc_hdr->reg_list_size_bytes >> 2); i++) |
509 | adev->gfx.rlc.register_restore[i] = le32_to_cpu(tmp[i]); | 537 | adev->gfx.rlc.register_restore[i] = le32_to_cpu(tmp[i]); |
510 | 538 | ||
539 | if (adev->gfx.rlc.is_rlc_v2_1) | ||
540 | gfx_v9_0_init_rlc_ext_microcode(adev); | ||
541 | |||
511 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); | 542 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); |
512 | err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); | 543 | err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); |
513 | if (err) | 544 | if (err) |
@@ -566,6 +597,26 @@ static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) | |||
566 | adev->firmware.fw_size += | 597 | adev->firmware.fw_size += |
567 | ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE); | 598 | ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE); |
568 | 599 | ||
600 | if (adev->gfx.rlc.is_rlc_v2_1) { | ||
601 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL]; | ||
602 | info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL; | ||
603 | info->fw = adev->gfx.rlc_fw; | ||
604 | adev->firmware.fw_size += | ||
605 | ALIGN(adev->gfx.rlc.save_restore_list_cntl_size_bytes, PAGE_SIZE); | ||
606 | |||
607 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM]; | ||
608 | info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM; | ||
609 | info->fw = adev->gfx.rlc_fw; | ||
610 | adev->firmware.fw_size += | ||
611 | ALIGN(adev->gfx.rlc.save_restore_list_gpm_size_bytes, PAGE_SIZE); | ||
612 | |||
613 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM]; | ||
614 | info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM; | ||
615 | info->fw = adev->gfx.rlc_fw; | ||
616 | adev->firmware.fw_size += | ||
617 | ALIGN(adev->gfx.rlc.save_restore_list_srm_size_bytes, PAGE_SIZE); | ||
618 | } | ||
619 | |||
569 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC1]; | 620 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC1]; |
570 | info->ucode_id = AMDGPU_UCODE_ID_CP_MEC1; | 621 | info->ucode_id = AMDGPU_UCODE_ID_CP_MEC1; |
571 | info->fw = adev->gfx.mec_fw; | 622 | info->fw = adev->gfx.mec_fw; |
@@ -1781,7 +1832,7 @@ static int gfx_v9_0_init_rlc_save_restore_list(struct amdgpu_device *adev) | |||
1781 | 1832 | ||
1782 | /* setup unique_indirect_regs array and indirect_start_offsets array */ | 1833 | /* setup unique_indirect_regs array and indirect_start_offsets array */ |
1783 | gfx_v9_0_parse_ind_reg_list(register_list_format, | 1834 | gfx_v9_0_parse_ind_reg_list(register_list_format, |
1784 | GFX9_RLC_FORMAT_DIRECT_REG_LIST_LENGTH, | 1835 | adev->gfx.rlc.reg_list_format_direct_reg_list_length, |
1785 | adev->gfx.rlc.reg_list_format_size_bytes >> 2, | 1836 | adev->gfx.rlc.reg_list_format_size_bytes >> 2, |
1786 | unique_indirect_regs, | 1837 | unique_indirect_regs, |
1787 | &unique_indirect_reg_count, | 1838 | &unique_indirect_reg_count, |
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c index 8873d833a7f7..0ff136d02d9b 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c | |||
@@ -70,6 +70,15 @@ psp_v10_0_get_fw_type(struct amdgpu_firmware_info *ucode, enum psp_gfx_fw_type * | |||
70 | case AMDGPU_UCODE_ID_RLC_G: | 70 | case AMDGPU_UCODE_ID_RLC_G: |
71 | *type = GFX_FW_TYPE_RLC_G; | 71 | *type = GFX_FW_TYPE_RLC_G; |
72 | break; | 72 | break; |
73 | case AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL: | ||
74 | *type = GFX_FW_TYPE_RLC_RESTORE_LIST_CNTL; | ||
75 | break; | ||
76 | case AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM: | ||
77 | *type = GFX_FW_TYPE_RLC_RESTORE_LIST_GPM_MEM; | ||
78 | break; | ||
79 | case AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM: | ||
80 | *type = GFX_FW_TYPE_RLC_RESTORE_LIST_SRM_MEM; | ||
81 | break; | ||
73 | case AMDGPU_UCODE_ID_SMC: | 82 | case AMDGPU_UCODE_ID_SMC: |
74 | *type = GFX_FW_TYPE_SMU; | 83 | *type = GFX_FW_TYPE_SMU; |
75 | break; | 84 | break; |