drm/amdgpu: add burst_nop flag for sdma
The burst NOP is supported for SDMA when feature_version is >= 20. Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
4207a734c3
commit
18111de0df
|
@ -1708,6 +1708,7 @@ struct amdgpu_sdma {
|
||||||
uint32_t feature_version;
|
uint32_t feature_version;
|
||||||
|
|
||||||
struct amdgpu_ring ring;
|
struct amdgpu_ring ring;
|
||||||
|
bool burst_nop;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -501,6 +501,8 @@ static int cik_sdma_load_microcode(struct amdgpu_device *adev)
|
||||||
fw_size = le32_to_cpu(hdr->header.ucode_size_bytes) / 4;
|
fw_size = le32_to_cpu(hdr->header.ucode_size_bytes) / 4;
|
||||||
adev->sdma[i].fw_version = le32_to_cpu(hdr->header.ucode_version);
|
adev->sdma[i].fw_version = le32_to_cpu(hdr->header.ucode_version);
|
||||||
adev->sdma[i].feature_version = le32_to_cpu(hdr->ucode_feature_version);
|
adev->sdma[i].feature_version = le32_to_cpu(hdr->ucode_feature_version);
|
||||||
|
if (adev->sdma[i].feature_version >= 20)
|
||||||
|
adev->sdma[i].burst_nop = true;
|
||||||
fw_data = (const __le32 *)
|
fw_data = (const __le32 *)
|
||||||
(adev->sdma[i].fw->data + le32_to_cpu(hdr->header.ucode_array_offset_bytes));
|
(adev->sdma[i].fw->data + le32_to_cpu(hdr->header.ucode_array_offset_bytes));
|
||||||
WREG32(mmSDMA0_UCODE_ADDR + sdma_offsets[i], 0);
|
WREG32(mmSDMA0_UCODE_ADDR + sdma_offsets[i], 0);
|
||||||
|
|
|
@ -146,6 +146,8 @@ static int sdma_v2_4_init_microcode(struct amdgpu_device *adev)
|
||||||
hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma[i].fw->data;
|
hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma[i].fw->data;
|
||||||
adev->sdma[i].fw_version = le32_to_cpu(hdr->header.ucode_version);
|
adev->sdma[i].fw_version = le32_to_cpu(hdr->header.ucode_version);
|
||||||
adev->sdma[i].feature_version = le32_to_cpu(hdr->ucode_feature_version);
|
adev->sdma[i].feature_version = le32_to_cpu(hdr->ucode_feature_version);
|
||||||
|
if (adev->sdma[i].feature_version >= 20)
|
||||||
|
adev->sdma[i].burst_nop = true;
|
||||||
|
|
||||||
if (adev->firmware.smu_load) {
|
if (adev->firmware.smu_load) {
|
||||||
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i];
|
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i];
|
||||||
|
|
|
@ -218,6 +218,8 @@ static int sdma_v3_0_init_microcode(struct amdgpu_device *adev)
|
||||||
hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma[i].fw->data;
|
hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma[i].fw->data;
|
||||||
adev->sdma[i].fw_version = le32_to_cpu(hdr->header.ucode_version);
|
adev->sdma[i].fw_version = le32_to_cpu(hdr->header.ucode_version);
|
||||||
adev->sdma[i].feature_version = le32_to_cpu(hdr->ucode_feature_version);
|
adev->sdma[i].feature_version = le32_to_cpu(hdr->ucode_feature_version);
|
||||||
|
if (adev->sdma[i].feature_version >= 20)
|
||||||
|
adev->sdma[i].burst_nop = true;
|
||||||
|
|
||||||
if (adev->firmware.smu_load) {
|
if (adev->firmware.smu_load) {
|
||||||
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i];
|
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i];
|
||||||
|
|
Loading…
Reference in New Issue