Commit e8663832 authored by Likun Gao's avatar Likun Gao Committed by Alex Deucher

drm/amdgpu/powerplay: get SMC FW size to a flexible way

Get SMC fw size before backdoor loading instead of giving an
certain value, as it may different for different ASIC.
Signed-off-by: default avatarLikun Gao <Likun.Gao@amd.com>
Reviewed-by: default avatarKenneth Feng <kenneth.feng@amd.com>
Reviewed-by: default avatarEvan Quan <evan.quan@amd.com>
Reviewed-by: default avatarKevin Wang <kevin1.wang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent dadce777
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#define MP0_SRAM 0x03900000 #define MP0_SRAM 0x03900000
#define MP1_Public 0x03b00000 #define MP1_Public 0x03b00000
#define MP1_SRAM 0x03c00004 #define MP1_SRAM 0x03c00004
#define MP1_SMC_SIZE 0x40000
/* address block */ /* address block */
#define smnMP1_FIRMWARE_FLAGS 0x3010024 #define smnMP1_FIRMWARE_FLAGS 0x3010024
......
...@@ -201,13 +201,15 @@ int smu_v11_0_load_microcode(struct smu_context *smu) ...@@ -201,13 +201,15 @@ int smu_v11_0_load_microcode(struct smu_context *smu)
const struct smc_firmware_header_v1_0 *hdr; const struct smc_firmware_header_v1_0 *hdr;
uint32_t addr_start = MP1_SRAM; uint32_t addr_start = MP1_SRAM;
uint32_t i; uint32_t i;
uint32_t smc_fw_size;
uint32_t mp1_fw_flags; uint32_t mp1_fw_flags;
hdr = (const struct smc_firmware_header_v1_0 *) adev->pm.fw->data; hdr = (const struct smc_firmware_header_v1_0 *) adev->pm.fw->data;
src = (const uint32_t *)(adev->pm.fw->data + src = (const uint32_t *)(adev->pm.fw->data +
le32_to_cpu(hdr->header.ucode_array_offset_bytes)); le32_to_cpu(hdr->header.ucode_array_offset_bytes));
smc_fw_size = hdr->header.ucode_size_bytes;
for (i = 1; i < MP1_SMC_SIZE/4 - 1; i++) { for (i = 1; i < smc_fw_size/4 - 1; i++) {
WREG32_PCIE(addr_start, src[i]); WREG32_PCIE(addr_start, src[i]);
addr_start += 4; addr_start += 4;
} }
......
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