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

drm/amdgpu: support print rlc v2_x ucode hdr



add rlc v2_x support to print_rlc_hdr helper

Signed-off-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: default avatarLikun Gao <Likun.Gao@amd.com>
Reviewed-by: default avatarFeifei Xu <Feifei.Xu@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ed2eee42
Loading
Loading
Loading
Loading
+118 −50
Original line number Diff line number Diff line
@@ -164,7 +164,18 @@ void amdgpu_ucode_print_rlc_hdr(const struct common_firmware_header *hdr)
	} else if (version_major == 2) {
		const struct rlc_firmware_header_v2_0 *rlc_hdr =
			container_of(hdr, struct rlc_firmware_header_v2_0, header);
		const struct rlc_firmware_header_v2_1 *rlc_hdr_v2_1 =
			container_of(rlc_hdr, struct rlc_firmware_header_v2_1, v2_0);
		const struct rlc_firmware_header_v2_2 *rlc_hdr_v2_2 =
			container_of(rlc_hdr_v2_1, struct rlc_firmware_header_v2_2, v2_1);
		const struct rlc_firmware_header_v2_3 *rlc_hdr_v2_3 =
			container_of(rlc_hdr_v2_2, struct rlc_firmware_header_v2_3, v2_2);
		const struct rlc_firmware_header_v2_4 *rlc_hdr_v2_4 =
			container_of(rlc_hdr_v2_3, struct rlc_firmware_header_v2_4, v2_3);

		switch (version_minor) {
		case 0:
			/* rlc_hdr v2_0 */
			DRM_DEBUG("ucode_feature_version: %u\n",
				  le32_to_cpu(rlc_hdr->ucode_feature_version));
			DRM_DEBUG("jt_offset: %u\n", le32_to_cpu(rlc_hdr->jt_offset));
@@ -199,35 +210,92 @@ void amdgpu_ucode_print_rlc_hdr(const struct common_firmware_header *hdr)
				  le32_to_cpu(rlc_hdr->reg_list_separate_size_bytes));
			DRM_DEBUG("reg_list_separate_array_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr->reg_list_separate_array_offset_bytes));
		if (version_minor == 1) {
			const struct rlc_firmware_header_v2_1 *v2_1 =
				container_of(rlc_hdr, struct rlc_firmware_header_v2_1, v2_0);
			break;
		case 1:
			/* rlc_hdr v2_1 */
			DRM_DEBUG("reg_list_format_direct_reg_list_length: %u\n",
				  le32_to_cpu(v2_1->reg_list_format_direct_reg_list_length));
				  le32_to_cpu(rlc_hdr_v2_1->reg_list_format_direct_reg_list_length));
			DRM_DEBUG("save_restore_list_cntl_ucode_ver: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_cntl_ucode_ver));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_cntl_ucode_ver));
			DRM_DEBUG("save_restore_list_cntl_feature_ver: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_cntl_feature_ver));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_cntl_feature_ver));
			DRM_DEBUG("save_restore_list_cntl_size_bytes %u\n",
				  le32_to_cpu(v2_1->save_restore_list_cntl_size_bytes));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_cntl_size_bytes));
			DRM_DEBUG("save_restore_list_cntl_offset_bytes: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_cntl_offset_bytes));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_cntl_offset_bytes));
			DRM_DEBUG("save_restore_list_gpm_ucode_ver: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_gpm_ucode_ver));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_gpm_ucode_ver));
			DRM_DEBUG("save_restore_list_gpm_feature_ver: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_gpm_feature_ver));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_gpm_feature_ver));
			DRM_DEBUG("save_restore_list_gpm_size_bytes %u\n",
				  le32_to_cpu(v2_1->save_restore_list_gpm_size_bytes));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_gpm_size_bytes));
			DRM_DEBUG("save_restore_list_gpm_offset_bytes: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_gpm_offset_bytes));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_gpm_offset_bytes));
			DRM_DEBUG("save_restore_list_srm_ucode_ver: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_srm_ucode_ver));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_srm_ucode_ver));
			DRM_DEBUG("save_restore_list_srm_feature_ver: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_srm_feature_ver));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_srm_feature_ver));
			DRM_DEBUG("save_restore_list_srm_size_bytes %u\n",
				  le32_to_cpu(v2_1->save_restore_list_srm_size_bytes));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_srm_size_bytes));
			DRM_DEBUG("save_restore_list_srm_offset_bytes: %u\n",
				  le32_to_cpu(v2_1->save_restore_list_srm_offset_bytes));
				  le32_to_cpu(rlc_hdr_v2_1->save_restore_list_srm_offset_bytes));
			break;
		case 2:
			/* rlc_hdr v2_2 */
			DRM_DEBUG("rlc_iram_ucode_size_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_2->rlc_iram_ucode_size_bytes));
			DRM_DEBUG("rlc_iram_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_2->rlc_iram_ucode_offset_bytes));
			DRM_DEBUG("rlc_dram_ucode_size_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_2->rlc_dram_ucode_size_bytes));
			DRM_DEBUG("rlc_dram_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_2->rlc_dram_ucode_offset_bytes));
			break;
		case 3:
			/* rlc_hdr v2_3 */
			DRM_DEBUG("rlcp_ucode_version: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcp_ucode_version));
			DRM_DEBUG("rlcp_ucode_feature_version: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcp_ucode_feature_version));
			DRM_DEBUG("rlcp_ucode_size_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcp_ucode_size_bytes));
			DRM_DEBUG("rlcp_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcp_ucode_offset_bytes));
			DRM_DEBUG("rlcv_ucode_version: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcv_ucode_version));
			DRM_DEBUG("rlcv_ucode_feature_version: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcv_ucode_feature_version));
			DRM_DEBUG("rlcv_ucode_size_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcv_ucode_size_bytes));
			DRM_DEBUG("rlcv_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_3->rlcv_ucode_offset_bytes));
			break;
		case 4:
			/* rlc_hdr v2_4 */
			DRM_DEBUG("global_tap_delays_ucode_size_bytes :%u\n",
				  le32_to_cpu(rlc_hdr_v2_4->global_tap_delays_ucode_size_bytes));
			DRM_DEBUG("global_tap_delays_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_4->global_tap_delays_ucode_offset_bytes));
			DRM_DEBUG("se0_tap_delays_ucode_size_bytes :%u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se0_tap_delays_ucode_size_bytes));
			DRM_DEBUG("se0_tap_delays_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se0_tap_delays_ucode_offset_bytes));
			DRM_DEBUG("se1_tap_delays_ucode_size_bytes :%u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se1_tap_delays_ucode_size_bytes));
			DRM_DEBUG("se1_tap_delays_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se1_tap_delays_ucode_offset_bytes));
			DRM_DEBUG("se2_tap_delays_ucode_size_bytes :%u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se2_tap_delays_ucode_size_bytes));
			DRM_DEBUG("se2_tap_delays_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se2_tap_delays_ucode_offset_bytes));
			DRM_DEBUG("se3_tap_delays_ucode_size_bytes :%u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se3_tap_delays_ucode_size_bytes));
			DRM_DEBUG("se3_tap_delays_ucode_offset_bytes: %u\n",
				  le32_to_cpu(rlc_hdr_v2_4->se3_tap_delays_ucode_offset_bytes));
			break;
		default:
			DRM_ERROR("Unknown RLC v2 ucode: v2.%u\n", version_minor);
			break;
		}
	} else {
		DRM_ERROR("Unknown RLC ucode version: %u.%u\n", version_major, version_minor);