[PATCH 3/4] drm/amdgpu:correct smc fw version error
Monk Liu
Monk.Liu at amd.com
Wed Sep 14 11:48:01 UTC 2016
original method get wrong smc fw version.
Change-Id: I1483613a44a231179a280ccde698ff3310d23d8e
Signed-off-by: Monk Liu <Monk.Liu at amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index cc3983b..cae0af2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -785,12 +785,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
info->fw_version = amdgpu_get_firmware_version(cgs_device, type);
info->feature_version = (uint16_t)le32_to_cpu(header->ucode_feature_version);
} else {
+ uint32_t fw_ver;
char fw_name[30] = {0};
int err = 0;
uint32_t ucode_size;
uint32_t ucode_start_address;
const uint8_t *src;
- const struct smc_firmware_header_v1_0 *hdr;
+ struct smc_firmware_header_v1_0 *hdr;
if (!adev->pm.fw) {
switch (adev->asic_type) {
@@ -835,12 +836,15 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
}
}
- hdr = (const struct smc_firmware_header_v1_0 *) adev->pm.fw->data;
+ hdr = (struct smc_firmware_header_v1_0 *)adev->pm.fw->data;
+ /* firmware version is located at 69 dw from begining */
+ fw_ver = *((uint32_t *)adev->pm.fw->data + 69);
+ hdr->header.ucode_version = fw_ver;
amdgpu_ucode_print_smc_hdr(&hdr->header);
adev->pm.fw_version = le32_to_cpu(hdr->header.ucode_version);
ucode_size = le32_to_cpu(hdr->header.ucode_size_bytes);
ucode_start_address = le32_to_cpu(hdr->ucode_start_addr);
- src = (const uint8_t *)(adev->pm.fw->data +
+ src = (uint8_t *)(adev->pm.fw->data +
le32_to_cpu(hdr->header.ucode_array_offset_bytes));
info->version = adev->pm.fw_version;
--
1.9.1
More information about the amd-gfx
mailing list