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

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>

+29
+2
drivers/gpu/drm/radeon/radeon_asic.c
··· 1833 1833 .debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level, 1834 1834 .force_performance_level = &trinity_dpm_force_performance_level, 1835 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 1839 .pflip = { 1838 1840 .page_flip = &evergreen_page_flip,
+2
drivers/gpu/drm/radeon/radeon_asic.h
··· 686 686 int trinity_dpm_force_performance_level(struct radeon_device *rdev, 687 687 enum radeon_dpm_forced_level level); 688 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 692 /* DCE6 - SI */ 691 693 void dce6_bandwidth_update(struct radeon_device *rdev);
+25
drivers/gpu/drm/radeon/trinity_dpm.c
··· 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 1992 void trinity_dpm_fini(struct radeon_device *rdev) 1968 1993 { 1969 1994 int i;