aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
diff options
context:
space:
mode:
authorHuang Rui <ray.huang@amd.com>2016-06-12 03:51:09 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-07-07 14:51:33 -0400
commit50ab2533d2e280b2e8c0e8ce00f616e3b50692a2 (patch)
tree52c91bd4bf9efc973a91ef19538ed1265af7ba3b /drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
parent000cab9a61ea9e8dc42144e39a6eb8333a402b86 (diff)
drm/amdgpu: introduce a firmware debugfs to dump all current firmware versions
This patch implements the debugfs to dump all currect firmware version: root@jenkins-All-Series:/home/jenkins# cat /sys/kernel/debug/dri/0/amdgpu_firmware_info VCE feature version: 0, firmware version: 0x34040300 UVD feature version: 0, firmware version: 0x01451000 MC feature version: 0, firmware version: 0x00000000 ME feature version: 37, firmware version: 0x00000093 PFP feature version: 37, firmware version: 0x000000da CE feature version: 37, firmware version: 0x00000080 RLC feature version: 1, firmware version: 0x0000010e MEC feature version: 37, firmware version: 0x0000029e MEC2 feature version: 37, firmware version: 0x0000029e SMC feature version: 0, firmware version: 0x013353e6 SDMA0 feature version: 31, firmware version: 0x00000036 SDMA1 feature version: 0, firmware version: 0x00000036 Suggested-by: Alex Deucher <Alexander.Deucher@amd.com> Signed-off-by: Huang Rui <ray.huang@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c127
1 files changed, 127 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 56c857f6e7ca..f6c89fa63ea7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -768,3 +768,130 @@ const struct drm_ioctl_desc amdgpu_ioctls_kms[] = {
768 DRM_IOCTL_DEF_DRV(AMDGPU_GEM_USERPTR, amdgpu_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW), 768 DRM_IOCTL_DEF_DRV(AMDGPU_GEM_USERPTR, amdgpu_gem_userptr_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
769}; 769};
770const int amdgpu_max_kms_ioctl = ARRAY_SIZE(amdgpu_ioctls_kms); 770const int amdgpu_max_kms_ioctl = ARRAY_SIZE(amdgpu_ioctls_kms);
771
772/*
773 * Debugfs info
774 */
775#if defined(CONFIG_DEBUG_FS)
776
777static int amdgpu_debugfs_firmware_info(struct seq_file *m, void *data)
778{
779 struct drm_info_node *node = (struct drm_info_node *) m->private;
780 struct drm_device *dev = node->minor->dev;
781 struct amdgpu_device *adev = dev->dev_private;
782 struct drm_amdgpu_info_firmware fw_info;
783 struct drm_amdgpu_query_fw query_fw;
784 int ret, i;
785
786 /* VCE */
787 query_fw.fw_type = AMDGPU_INFO_FW_VCE;
788 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
789 if (ret)
790 return ret;
791 seq_printf(m, "VCE feature version: %u, firmware version: 0x%08x\n",
792 fw_info.feature, fw_info.ver);
793
794 /* UVD */
795 query_fw.fw_type = AMDGPU_INFO_FW_UVD;
796 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
797 if (ret)
798 return ret;
799 seq_printf(m, "UVD feature version: %u, firmware version: 0x%08x\n",
800 fw_info.feature, fw_info.ver);
801
802 /* GMC */
803 query_fw.fw_type = AMDGPU_INFO_FW_GMC;
804 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
805 if (ret)
806 return ret;
807 seq_printf(m, "MC feature version: %u, firmware version: 0x%08x\n",
808 fw_info.feature, fw_info.ver);
809
810 /* ME */
811 query_fw.fw_type = AMDGPU_INFO_FW_GFX_ME;
812 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
813 if (ret)
814 return ret;
815 seq_printf(m, "ME feature version: %u, firmware version: 0x%08x\n",
816 fw_info.feature, fw_info.ver);
817
818 /* PFP */
819 query_fw.fw_type = AMDGPU_INFO_FW_GFX_PFP;
820 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
821 if (ret)
822 return ret;
823 seq_printf(m, "PFP feature version: %u, firmware version: 0x%08x\n",
824 fw_info.feature, fw_info.ver);
825
826 /* CE */
827 query_fw.fw_type = AMDGPU_INFO_FW_GFX_CE;
828 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
829 if (ret)
830 return ret;
831 seq_printf(m, "CE feature version: %u, firmware version: 0x%08x\n",
832 fw_info.feature, fw_info.ver);
833
834 /* RLC */
835 query_fw.fw_type = AMDGPU_INFO_FW_GFX_RLC;
836 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
837 if (ret)
838 return ret;
839 seq_printf(m, "RLC feature version: %u, firmware version: 0x%08x\n",
840 fw_info.feature, fw_info.ver);
841
842 /* MEC */
843 query_fw.fw_type = AMDGPU_INFO_FW_GFX_MEC;
844 query_fw.index = 0;
845 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
846 if (ret)
847 return ret;
848 seq_printf(m, "MEC feature version: %u, firmware version: 0x%08x\n",
849 fw_info.feature, fw_info.ver);
850
851 /* MEC2 */
852 if (adev->asic_type == CHIP_KAVERI ||
853 (adev->asic_type > CHIP_TOPAZ && adev->asic_type != CHIP_STONEY)) {
854 query_fw.index = 1;
855 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
856 if (ret)
857 return ret;
858 seq_printf(m, "MEC2 feature version: %u, firmware version: 0x%08x\n",
859 fw_info.feature, fw_info.ver);
860 }
861
862 /* SMC */
863 query_fw.fw_type = AMDGPU_INFO_FW_SMC;
864 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
865 if (ret)
866 return ret;
867 seq_printf(m, "SMC feature version: %u, firmware version: 0x%08x\n",
868 fw_info.feature, fw_info.ver);
869
870 /* SDMA */
871 query_fw.fw_type = AMDGPU_INFO_FW_SDMA;
872 for (i = 0; i < adev->sdma.num_instances; i++) {
873 query_fw.index = i;
874 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
875 if (ret)
876 return ret;
877 seq_printf(m, "SDMA%d feature version: %u, firmware version: 0x%08x\n",
878 i, fw_info.feature, fw_info.ver);
879 }
880
881 return 0;
882}
883
884static const struct drm_info_list amdgpu_firmware_info_list[] = {
885 {"amdgpu_firmware_info", amdgpu_debugfs_firmware_info, 0, NULL},
886};
887#endif
888
889int amdgpu_debugfs_firmware_init(struct amdgpu_device *adev)
890{
891#if defined(CONFIG_DEBUG_FS)
892 return amdgpu_debugfs_add_files(adev, amdgpu_firmware_info_list,
893 ARRAY_SIZE(amdgpu_firmware_info_list));
894#else
895 return 0;
896#endif
897}