aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHawking Zhang <Hawking.Zhang@amd.com>2017-08-09 23:24:43 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-08-15 14:46:20 -0400
commitb416bf14bdd2019ed62b1a20876a33cf2480bbfd (patch)
treef8c83d7c74ea14b40a06c213da668e912a890af2
parent2ce3f5dcdf2787e2bd777ddc3eaefd370dc6c050 (diff)
drm/amdgpu: ignore digest_size when loading sdma fw for raven
digest_size has been retired from sdma v4 fw Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 79a9e44dc8eb..fd7c72aaafa6 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -799,15 +799,12 @@ static int sdma_v4_0_load_microcode(struct amdgpu_device *adev)
799 const struct sdma_firmware_header_v1_0 *hdr; 799 const struct sdma_firmware_header_v1_0 *hdr;
800 const __le32 *fw_data; 800 const __le32 *fw_data;
801 u32 fw_size; 801 u32 fw_size;
802 u32 digest_size = 0;
803 int i, j; 802 int i, j;
804 803
805 /* halt the MEs */ 804 /* halt the MEs */
806 sdma_v4_0_enable(adev, false); 805 sdma_v4_0_enable(adev, false);
807 806
808 for (i = 0; i < adev->sdma.num_instances; i++) { 807 for (i = 0; i < adev->sdma.num_instances; i++) {
809 uint16_t version_major;
810 uint16_t version_minor;
811 if (!adev->sdma.instance[i].fw) 808 if (!adev->sdma.instance[i].fw)
812 return -EINVAL; 809 return -EINVAL;
813 810
@@ -815,23 +812,12 @@ static int sdma_v4_0_load_microcode(struct amdgpu_device *adev)
815 amdgpu_ucode_print_sdma_hdr(&hdr->header); 812 amdgpu_ucode_print_sdma_hdr(&hdr->header);
816 fw_size = le32_to_cpu(hdr->header.ucode_size_bytes) / 4; 813 fw_size = le32_to_cpu(hdr->header.ucode_size_bytes) / 4;
817 814
818 version_major = le16_to_cpu(hdr->header.header_version_major);
819 version_minor = le16_to_cpu(hdr->header.header_version_minor);
820
821 if (version_major == 1 && version_minor >= 1) {
822 const struct sdma_firmware_header_v1_1 *sdma_v1_1_hdr = (const struct sdma_firmware_header_v1_1 *) hdr;
823 digest_size = le32_to_cpu(sdma_v1_1_hdr->digest_size);
824 }
825
826 fw_size -= digest_size;
827
828 fw_data = (const __le32 *) 815 fw_data = (const __le32 *)
829 (adev->sdma.instance[i].fw->data + 816 (adev->sdma.instance[i].fw->data +
830 le32_to_cpu(hdr->header.ucode_array_offset_bytes)); 817 le32_to_cpu(hdr->header.ucode_array_offset_bytes));
831 818
832 WREG32(sdma_v4_0_get_reg_offset(i, mmSDMA0_UCODE_ADDR), 0); 819 WREG32(sdma_v4_0_get_reg_offset(i, mmSDMA0_UCODE_ADDR), 0);
833 820
834
835 for (j = 0; j < fw_size; j++) 821 for (j = 0; j < fw_size; j++)
836 WREG32(sdma_v4_0_get_reg_offset(i, mmSDMA0_UCODE_DATA), le32_to_cpup(fw_data++)); 822 WREG32(sdma_v4_0_get_reg_offset(i, mmSDMA0_UCODE_DATA), le32_to_cpup(fw_data++));
837 823