diff options
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/trinity_dpm.c | 21 |
3 files changed, 24 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index 6d4304cce83f..691654740906 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c | |||
@@ -2108,6 +2108,7 @@ static struct radeon_asic trinity_asic = { | |||
2108 | .get_sclk = &trinity_dpm_get_sclk, | 2108 | .get_sclk = &trinity_dpm_get_sclk, |
2109 | .get_mclk = &trinity_dpm_get_mclk, | 2109 | .get_mclk = &trinity_dpm_get_mclk, |
2110 | .print_power_state = &trinity_dpm_print_power_state, | 2110 | .print_power_state = &trinity_dpm_print_power_state, |
2111 | .debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level, | ||
2111 | }, | 2112 | }, |
2112 | .pflip = { | 2113 | .pflip = { |
2113 | .pre_page_flip = &evergreen_pre_page_flip, | 2114 | .pre_page_flip = &evergreen_pre_page_flip, |
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h index 958d30f33066..5904d897586d 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.h +++ b/drivers/gpu/drm/radeon/radeon_asic.h | |||
@@ -626,6 +626,8 @@ u32 trinity_dpm_get_sclk(struct radeon_device *rdev, bool low); | |||
626 | u32 trinity_dpm_get_mclk(struct radeon_device *rdev, bool low); | 626 | u32 trinity_dpm_get_mclk(struct radeon_device *rdev, bool low); |
627 | void trinity_dpm_print_power_state(struct radeon_device *rdev, | 627 | void trinity_dpm_print_power_state(struct radeon_device *rdev, |
628 | struct radeon_ps *ps); | 628 | struct radeon_ps *ps); |
629 | void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, | ||
630 | struct seq_file *m); | ||
629 | 631 | ||
630 | /* DCE6 - SI */ | 632 | /* DCE6 - SI */ |
631 | void dce6_bandwidth_update(struct radeon_device *rdev); | 633 | void dce6_bandwidth_update(struct radeon_device *rdev); |
diff --git a/drivers/gpu/drm/radeon/trinity_dpm.c b/drivers/gpu/drm/radeon/trinity_dpm.c index fce825e112ff..502d9153c4d5 100644 --- a/drivers/gpu/drm/radeon/trinity_dpm.c +++ b/drivers/gpu/drm/radeon/trinity_dpm.c | |||
@@ -1855,6 +1855,27 @@ void trinity_dpm_print_power_state(struct radeon_device *rdev, | |||
1855 | r600_dpm_print_ps_status(rdev, rps); | 1855 | r600_dpm_print_ps_status(rdev, rps); |
1856 | } | 1856 | } |
1857 | 1857 | ||
1858 | void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, | ||
1859 | struct seq_file *m) | ||
1860 | { | ||
1861 | struct radeon_ps *rps = rdev->pm.dpm.current_ps; | ||
1862 | struct trinity_ps *ps = trinity_get_ps(rps); | ||
1863 | struct trinity_pl *pl; | ||
1864 | u32 current_index = | ||
1865 | (RREG32(TARGET_AND_CURRENT_PROFILE_INDEX) & CURRENT_STATE_MASK) >> | ||
1866 | CURRENT_STATE_SHIFT; | ||
1867 | |||
1868 | if (current_index >= ps->num_levels) { | ||
1869 | seq_printf(m, "invalid dpm profile %d\n", current_index); | ||
1870 | } else { | ||
1871 | pl = &ps->levels[current_index]; | ||
1872 | seq_printf(m, "uvd vclk: %d dclk: %d\n", rps->vclk, rps->dclk); | ||
1873 | seq_printf(m, "power level %d sclk: %u vddc: %u\n", | ||
1874 | current_index, pl->sclk, | ||
1875 | trinity_convert_voltage_index_to_value(rdev, pl->vddc_index)); | ||
1876 | } | ||
1877 | } | ||
1878 | |||
1858 | void trinity_dpm_fini(struct radeon_device *rdev) | 1879 | void trinity_dpm_fini(struct radeon_device *rdev) |
1859 | { | 1880 | { |
1860 | int i; | 1881 | int i; |