Commit bcecb652 authored by Hawking Zhang's avatar Hawking Zhang Committed by Alex Deucher
Browse files

drm/amdgpu: add helper to init rlc fw in header v2_2



To initialize rlc firmware in header v2_2

Signed-off-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 90df1512
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -376,3 +376,33 @@ static void amdgpu_gfx_rlc_init_microcode_v2_1(struct amdgpu_device *adev)
		}
	}
}

static void amdgpu_gfx_rlc_init_microcode_v2_2(struct amdgpu_device *adev)
{
	const struct rlc_firmware_header_v2_2 *rlc_hdr;
	struct amdgpu_firmware_info *info;

	rlc_hdr = (const struct rlc_firmware_header_v2_2 *)adev->gfx.rlc_fw->data;
	adev->gfx.rlc.rlc_iram_ucode_size_bytes = le32_to_cpu(rlc_hdr->rlc_iram_ucode_size_bytes);
	adev->gfx.rlc.rlc_iram_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->rlc_iram_ucode_offset_bytes);
	adev->gfx.rlc.rlc_dram_ucode_size_bytes = le32_to_cpu(rlc_hdr->rlc_dram_ucode_size_bytes);
	adev->gfx.rlc.rlc_dram_ucode = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->rlc_dram_ucode_offset_bytes);

	if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
		if (adev->gfx.rlc.rlc_iram_ucode_size_bytes) {
			info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_IRAM];
			info->ucode_id = AMDGPU_UCODE_ID_RLC_IRAM;
			info->fw = adev->gfx.rlc_fw;
			adev->firmware.fw_size +=
				ALIGN(adev->gfx.rlc.rlc_iram_ucode_size_bytes, PAGE_SIZE);
		}

		if (adev->gfx.rlc.rlc_dram_ucode_size_bytes) {
			info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_DRAM];
			info->ucode_id = AMDGPU_UCODE_ID_RLC_DRAM;
			info->fw = adev->gfx.rlc_fw;
			adev->firmware.fw_size +=
				ALIGN(adev->gfx.rlc.rlc_dram_ucode_size_bytes, PAGE_SIZE);
		}
	}
}