diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2014-09-30 11:01:59 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-03-19 12:26:35 -0400 |
commit | 7ce9cdaec35db4c13f2f34dcb63d8bf6f290ffd0 (patch) | |
tree | 74bcb2666075924a1a9d4168d0697685590cde9a | |
parent | 2f8e1eb7d665ca060fc93e9dfd268dee59bd8697 (diff) |
drm/radeon/tn: implement get_current_sclk/mclk
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/trinity_dpm.c | 25 |
3 files changed, 29 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index 2b72c4a77be6..ce0cbd5823e9 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c | |||
@@ -1833,6 +1833,8 @@ static struct radeon_asic trinity_asic = { | |||
1833 | .debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level, | 1833 | .debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level, |
1834 | .force_performance_level = &trinity_dpm_force_performance_level, | 1834 | .force_performance_level = &trinity_dpm_force_performance_level, |
1835 | .enable_bapm = &trinity_dpm_enable_bapm, | 1835 | .enable_bapm = &trinity_dpm_enable_bapm, |
1836 | .get_current_sclk = &trinity_dpm_get_current_sclk, | ||
1837 | .get_current_mclk = &trinity_dpm_get_current_mclk, | ||
1836 | }, | 1838 | }, |
1837 | .pflip = { | 1839 | .pflip = { |
1838 | .page_flip = &evergreen_page_flip, | 1840 | .page_flip = &evergreen_page_flip, |
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h index e2887eb4a4d5..bab229377264 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.h +++ b/drivers/gpu/drm/radeon/radeon_asic.h | |||
@@ -686,6 +686,8 @@ void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *r | |||
686 | int trinity_dpm_force_performance_level(struct radeon_device *rdev, | 686 | int trinity_dpm_force_performance_level(struct radeon_device *rdev, |
687 | enum radeon_dpm_forced_level level); | 687 | enum radeon_dpm_forced_level level); |
688 | void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable); | 688 | void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable); |
689 | u32 trinity_dpm_get_current_sclk(struct radeon_device *rdev); | ||
690 | u32 trinity_dpm_get_current_mclk(struct radeon_device *rdev); | ||
689 | 691 | ||
690 | /* DCE6 - SI */ | 692 | /* DCE6 - SI */ |
691 | void dce6_bandwidth_update(struct radeon_device *rdev); | 693 | 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 38dacb7a3689..a5b02c575d77 100644 --- a/drivers/gpu/drm/radeon/trinity_dpm.c +++ b/drivers/gpu/drm/radeon/trinity_dpm.c | |||
@@ -1964,6 +1964,31 @@ void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *r | |||
1964 | } | 1964 | } |
1965 | } | 1965 | } |
1966 | 1966 | ||
1967 | u32 trinity_dpm_get_current_sclk(struct radeon_device *rdev) | ||
1968 | { | ||
1969 | struct trinity_power_info *pi = trinity_get_pi(rdev); | ||
1970 | struct radeon_ps *rps = &pi->current_rps; | ||
1971 | struct trinity_ps *ps = trinity_get_ps(rps); | ||
1972 | struct trinity_pl *pl; | ||
1973 | u32 current_index = | ||
1974 | (RREG32(TARGET_AND_CURRENT_PROFILE_INDEX) & CURRENT_STATE_MASK) >> | ||
1975 | CURRENT_STATE_SHIFT; | ||
1976 | |||
1977 | if (current_index >= ps->num_levels) { | ||
1978 | return 0; | ||
1979 | } else { | ||
1980 | pl = &ps->levels[current_index]; | ||
1981 | return pl->sclk; | ||
1982 | } | ||
1983 | } | ||
1984 | |||
1985 | u32 trinity_dpm_get_current_mclk(struct radeon_device *rdev) | ||
1986 | { | ||
1987 | struct trinity_power_info *pi = trinity_get_pi(rdev); | ||
1988 | |||
1989 | return pi->sys_info.bootup_uma_clk; | ||
1990 | } | ||
1991 | |||
1967 | void trinity_dpm_fini(struct radeon_device *rdev) | 1992 | void trinity_dpm_fini(struct radeon_device *rdev) |
1968 | { | 1993 | { |
1969 | int i; | 1994 | int i; |