diff options
Diffstat (limited to 'drivers/gpu/drm')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 8 | ||||
| -rwxr-xr-x | drivers/gpu/drm/amd/include/cgs_common.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c | 7 |
6 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index 1950c25557de..e6b1bf3dc292 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
| @@ -696,6 +696,9 @@ static uint32_t fw_type_convert(struct cgs_device *cgs_device, uint32_t fw_type) | |||
| 696 | case CGS_UCODE_ID_RLC_G: | 696 | case CGS_UCODE_ID_RLC_G: |
| 697 | result = AMDGPU_UCODE_ID_RLC_G; | 697 | result = AMDGPU_UCODE_ID_RLC_G; |
| 698 | break; | 698 | break; |
| 699 | case CGS_UCODE_ID_STORAGE: | ||
| 700 | result = AMDGPU_UCODE_ID_STORAGE; | ||
| 701 | break; | ||
| 699 | default: | 702 | default: |
| 700 | DRM_ERROR("Firmware type not supported\n"); | 703 | DRM_ERROR("Firmware type not supported\n"); |
| 701 | } | 704 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c index b7b82a270420..5d3f6ca742a4 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | |||
| @@ -228,6 +228,9 @@ static int amdgpu_ucode_init_single_fw(struct amdgpu_firmware_info *ucode, | |||
| 228 | ucode->mc_addr = mc_addr; | 228 | ucode->mc_addr = mc_addr; |
| 229 | ucode->kaddr = kptr; | 229 | ucode->kaddr = kptr; |
| 230 | 230 | ||
| 231 | if (ucode->ucode_id == AMDGPU_UCODE_ID_STORAGE) | ||
| 232 | return 0; | ||
| 233 | |||
| 231 | header = (const struct common_firmware_header *)ucode->fw->data; | 234 | header = (const struct common_firmware_header *)ucode->fw->data; |
| 232 | memcpy(ucode->kaddr, (void *)((uint8_t *)ucode->fw->data + | 235 | memcpy(ucode->kaddr, (void *)((uint8_t *)ucode->fw->data + |
| 233 | le32_to_cpu(header->ucode_array_offset_bytes)), | 236 | le32_to_cpu(header->ucode_array_offset_bytes)), |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h index e468be4e28fa..a8a4230729f9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | |||
| @@ -130,6 +130,7 @@ enum AMDGPU_UCODE_ID { | |||
| 130 | AMDGPU_UCODE_ID_CP_MEC1, | 130 | AMDGPU_UCODE_ID_CP_MEC1, |
| 131 | AMDGPU_UCODE_ID_CP_MEC2, | 131 | AMDGPU_UCODE_ID_CP_MEC2, |
| 132 | AMDGPU_UCODE_ID_RLC_G, | 132 | AMDGPU_UCODE_ID_RLC_G, |
| 133 | AMDGPU_UCODE_ID_STORAGE, | ||
| 133 | AMDGPU_UCODE_ID_MAXIMUM, | 134 | AMDGPU_UCODE_ID_MAXIMUM, |
| 134 | }; | 135 | }; |
| 135 | 136 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index bd4d041717bf..45d194a58c57 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
| @@ -1058,6 +1058,14 @@ static int gfx_v8_0_init_microcode(struct amdgpu_device *adev) | |||
| 1058 | adev->firmware.fw_size += | 1058 | adev->firmware.fw_size += |
| 1059 | ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE); | 1059 | ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE); |
| 1060 | 1060 | ||
| 1061 | if (amdgpu_sriov_vf(adev)) { | ||
| 1062 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_STORAGE]; | ||
| 1063 | info->ucode_id = AMDGPU_UCODE_ID_STORAGE; | ||
| 1064 | info->fw = adev->gfx.mec_fw; | ||
| 1065 | adev->firmware.fw_size += | ||
| 1066 | ALIGN(le32_to_cpu(64 * PAGE_SIZE), PAGE_SIZE); | ||
| 1067 | } | ||
| 1068 | |||
| 1061 | if (adev->gfx.mec2_fw) { | 1069 | if (adev->gfx.mec2_fw) { |
| 1062 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC2]; | 1070 | info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC2]; |
| 1063 | info->ucode_id = AMDGPU_UCODE_ID_CP_MEC2; | 1071 | info->ucode_id = AMDGPU_UCODE_ID_CP_MEC2; |
diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h index 9695c2ebd92a..e4a1697ec1d3 100755 --- a/drivers/gpu/drm/amd/include/cgs_common.h +++ b/drivers/gpu/drm/amd/include/cgs_common.h | |||
| @@ -106,6 +106,7 @@ enum cgs_ucode_id { | |||
| 106 | CGS_UCODE_ID_CP_MEC_JT2, | 106 | CGS_UCODE_ID_CP_MEC_JT2, |
| 107 | CGS_UCODE_ID_GMCON_RENG, | 107 | CGS_UCODE_ID_GMCON_RENG, |
| 108 | CGS_UCODE_ID_RLC_G, | 108 | CGS_UCODE_ID_RLC_G, |
| 109 | CGS_UCODE_ID_STORAGE, | ||
| 109 | CGS_UCODE_ID_MAXIMUM, | 110 | CGS_UCODE_ID_MAXIMUM, |
| 110 | }; | 111 | }; |
| 111 | 112 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c index 6af744f42ec9..6df0d6edfdd1 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smu7_smumgr.c | |||
| @@ -278,6 +278,9 @@ enum cgs_ucode_id smu7_convert_fw_type_to_cgs(uint32_t fw_type) | |||
| 278 | case UCODE_ID_RLC_G: | 278 | case UCODE_ID_RLC_G: |
| 279 | result = CGS_UCODE_ID_RLC_G; | 279 | result = CGS_UCODE_ID_RLC_G; |
| 280 | break; | 280 | break; |
| 281 | case UCODE_ID_MEC_STORAGE: | ||
| 282 | result = CGS_UCODE_ID_STORAGE; | ||
| 283 | break; | ||
| 281 | default: | 284 | default: |
| 282 | break; | 285 | break; |
| 283 | } | 286 | } |
| @@ -452,6 +455,10 @@ int smu7_request_smu_load_fw(struct pp_smumgr *smumgr) | |||
| 452 | PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, | 455 | PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, |
| 453 | UCODE_ID_SDMA1, &toc->entry[toc->num_entries++]), | 456 | UCODE_ID_SDMA1, &toc->entry[toc->num_entries++]), |
| 454 | "Failed to Get Firmware Entry.", return -EINVAL); | 457 | "Failed to Get Firmware Entry.", return -EINVAL); |
| 458 | if (cgs_is_virtualization_enabled(smumgr->device)) | ||
| 459 | PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr, | ||
| 460 | UCODE_ID_MEC_STORAGE, &toc->entry[toc->num_entries++]), | ||
| 461 | "Failed to Get Firmware Entry.", return -EINVAL); | ||
| 455 | 462 | ||
| 456 | smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_HI, smu_data->header_buffer.mc_addr_high); | 463 | smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_HI, smu_data->header_buffer.mc_addr_high); |
| 457 | smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_LO, smu_data->header_buffer.mc_addr_low); | 464 | smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_LO, smu_data->header_buffer.mc_addr_low); |
