diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index e630d918fefc..da0a667a911b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
@@ -65,6 +65,8 @@ MODULE_FIRMWARE("amdgpu/raven_gpu_info.bin"); | |||
65 | static int amdgpu_debugfs_regs_init(struct amdgpu_device *adev); | 65 | static int amdgpu_debugfs_regs_init(struct amdgpu_device *adev); |
66 | static void amdgpu_debugfs_regs_cleanup(struct amdgpu_device *adev); | 66 | static void amdgpu_debugfs_regs_cleanup(struct amdgpu_device *adev); |
67 | static int amdgpu_debugfs_test_ib_ring_init(struct amdgpu_device *adev); | 67 | static int amdgpu_debugfs_test_ib_ring_init(struct amdgpu_device *adev); |
68 | static int amdgpu_debugfs_vbios_dump_init(struct amdgpu_device *adev); | ||
69 | static int amdgpu_debugfs_vbios_version_init(struct amdgpu_device *adev); | ||
68 | 70 | ||
69 | static const char *amdgpu_asic_name[] = { | 71 | static const char *amdgpu_asic_name[] = { |
70 | "TAHITI", | 72 | "TAHITI", |
@@ -2201,6 +2203,14 @@ int amdgpu_device_init(struct amdgpu_device *adev, | |||
2201 | if (r) | 2203 | if (r) |
2202 | DRM_ERROR("registering firmware debugfs failed (%d).\n", r); | 2204 | DRM_ERROR("registering firmware debugfs failed (%d).\n", r); |
2203 | 2205 | ||
2206 | r = amdgpu_debugfs_vbios_dump_init(adev); | ||
2207 | if (r) | ||
2208 | DRM_ERROR("Creating vbios dump debugfs failed (%d).\n", r); | ||
2209 | |||
2210 | r = amdgpu_debugfs_vbios_version_init(adev); | ||
2211 | if (r) | ||
2212 | DRM_ERROR("Creating vbios version debugfs failed (%d).\n", r); | ||
2213 | |||
2204 | if ((amdgpu_testing & 1)) { | 2214 | if ((amdgpu_testing & 1)) { |
2205 | if (adev->accel_working) | 2215 | if (adev->accel_working) |
2206 | amdgpu_test_moves(adev); | 2216 | amdgpu_test_moves(adev); |
@@ -3754,6 +3764,50 @@ int amdgpu_debugfs_init(struct drm_minor *minor) | |||
3754 | { | 3764 | { |
3755 | return 0; | 3765 | return 0; |
3756 | } | 3766 | } |
3767 | |||
3768 | static int amdgpu_debugfs_get_vbios_dump(struct seq_file *m, void *data) | ||
3769 | { | ||
3770 | struct drm_info_node *node = (struct drm_info_node *) m->private; | ||
3771 | struct drm_device *dev = node->minor->dev; | ||
3772 | struct amdgpu_device *adev = dev->dev_private; | ||
3773 | |||
3774 | seq_write(m, adev->bios, adev->bios_size); | ||
3775 | return 0; | ||
3776 | } | ||
3777 | |||
3778 | static int amdgpu_debugfs_get_vbios_version(struct seq_file *m, void *data) | ||
3779 | { | ||
3780 | struct drm_info_node *node = (struct drm_info_node *) m->private; | ||
3781 | struct drm_device *dev = node->minor->dev; | ||
3782 | struct amdgpu_device *adev = dev->dev_private; | ||
3783 | struct atom_context *ctx = adev->mode_info.atom_context; | ||
3784 | |||
3785 | seq_printf(m, "%s\n", ctx->vbios_version); | ||
3786 | return 0; | ||
3787 | } | ||
3788 | |||
3789 | static const struct drm_info_list amdgpu_vbios_dump_list[] = { | ||
3790 | {"amdgpu_vbios", | ||
3791 | amdgpu_debugfs_get_vbios_dump, | ||
3792 | 0, NULL}, | ||
3793 | }; | ||
3794 | |||
3795 | static const struct drm_info_list amdgpu_vbios_version_list[] = { | ||
3796 | {"amdgpu_vbios_version", | ||
3797 | amdgpu_debugfs_get_vbios_version, | ||
3798 | 0, NULL}, | ||
3799 | }; | ||
3800 | |||
3801 | static int amdgpu_debugfs_vbios_dump_init(struct amdgpu_device *adev) | ||
3802 | { | ||
3803 | return amdgpu_debugfs_add_files(adev, | ||
3804 | amdgpu_vbios_dump_list, 1); | ||
3805 | } | ||
3806 | static int amdgpu_debugfs_vbios_version_init(struct amdgpu_device *adev) | ||
3807 | { | ||
3808 | return amdgpu_debugfs_add_files(adev, | ||
3809 | amdgpu_vbios_version_list, 1); | ||
3810 | } | ||
3757 | #else | 3811 | #else |
3758 | static int amdgpu_debugfs_test_ib_ring_init(struct amdgpu_device *adev) | 3812 | static int amdgpu_debugfs_test_ib_ring_init(struct amdgpu_device *adev) |
3759 | { | 3813 | { |
@@ -3763,5 +3817,13 @@ static int amdgpu_debugfs_regs_init(struct amdgpu_device *adev) | |||
3763 | { | 3817 | { |
3764 | return 0; | 3818 | return 0; |
3765 | } | 3819 | } |
3820 | static int amdgpu_debugfs_vbios_dump_init(struct amdgpu_device *adev) | ||
3821 | { | ||
3822 | return 0; | ||
3823 | } | ||
3824 | static int amdgpu_debugfs_vbios_version_init(struct amdgpu_device *adev) | ||
3825 | { | ||
3826 | return 0; | ||
3827 | } | ||
3766 | static void amdgpu_debugfs_regs_cleanup(struct amdgpu_device *adev) { } | 3828 | static void amdgpu_debugfs_regs_cleanup(struct amdgpu_device *adev) { } |
3767 | #endif | 3829 | #endif |