Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: add function to decode ip version

Add function to decode IP version.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Likun Gao and committed by
Alex Deucher
1d5eee7d 3202c7e7

+38
+3
drivers/gpu/drm/amd/amdgpu/amdgpu.h
··· 670 670 671 671 #define HW_ID_MAX 300 672 672 #define IP_VERSION(mj, mn, rv) (((mj) << 16) | ((mn) << 8) | (rv)) 673 + #define IP_VERSION_MAJ(ver) ((ver) >> 16) 674 + #define IP_VERSION_MIN(ver) (((ver) >> 8) & 0xFF) 675 + #define IP_VERSION_REV(ver) ((ver) & 0xFF) 673 676 674 677 struct amd_powerplay { 675 678 void *pp_handle;
+33
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
··· 760 760 } 761 761 return 0; 762 762 } 763 + 764 + void amdgpu_ucode_ip_version_decode(struct amdgpu_device *adev, int block_type, char *ucode_prefix, int len) 765 + { 766 + int maj, min, rev; 767 + char *ip_name; 768 + uint32_t version = adev->ip_versions[block_type][0]; 769 + 770 + switch (block_type) { 771 + case GC_HWIP: 772 + ip_name = "gc"; 773 + break; 774 + case SDMA0_HWIP: 775 + ip_name = "sdma"; 776 + break; 777 + case MP0_HWIP: 778 + ip_name = "psp"; 779 + break; 780 + case MP1_HWIP: 781 + ip_name = "smu"; 782 + break; 783 + case UVD_HWIP: 784 + ip_name = "vcn"; 785 + break; 786 + default: 787 + BUG(); 788 + } 789 + 790 + maj = IP_VERSION_MAJ(version); 791 + min = IP_VERSION_MIN(version); 792 + rev = IP_VERSION_REV(version); 793 + 794 + snprintf(ucode_prefix, len, "%s_%d_%d_%d", ip_name, maj, min, rev); 795 + }
+2
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
··· 463 463 464 464 const char *amdgpu_ucode_name(enum AMDGPU_UCODE_ID ucode_id); 465 465 466 + void amdgpu_ucode_ip_version_decode(struct amdgpu_device *adev, int block_type, char *ucode_prefix, int len); 467 + 466 468 #endif