diff options
author | Rex Zhu <Rex.Zhu@amd.com> | 2018-03-16 04:56:58 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-03-19 14:38:31 -0400 |
commit | 2538090cb62ab85d8e685bf79c31cc15f41f2629 (patch) | |
tree | ee63fc5dd6c3bd811edfdaca417d9d2fa6cd5555 /drivers/gpu | |
parent | c7d30b40a240d6433eb016990632c11e3e7dcc36 (diff) |
drm/amd/pp: Delete get_xclk function in powerplay (v2)
use asic's callback function get_xclk in amdgpu
v2: squash in removal of leftover debug info
(drm/amd/pp: Delete debug info in smu7_hwmgr.c) (Rex)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
12 files changed, 15 insertions, 43 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index 37098c68a645..5b37c1ac725c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -715,12 +715,9 @@ static int amdgpu_cgs_get_active_displays_info(struct cgs_device *cgs_device, | |||
715 | return -EINVAL; | 715 | return -EINVAL; |
716 | 716 | ||
717 | mode_info = info->mode_info; | 717 | mode_info = info->mode_info; |
718 | if (mode_info) { | 718 | if (mode_info) |
719 | /* if the displays are off, vblank time is max */ | 719 | /* if the displays are off, vblank time is max */ |
720 | mode_info->vblank_time_us = 0xffffffff; | 720 | mode_info->vblank_time_us = 0xffffffff; |
721 | /* always set the reference clock */ | ||
722 | mode_info->ref_clock = adev->clock.spll.reference_freq; | ||
723 | } | ||
724 | 721 | ||
725 | if (!amdgpu_device_has_dc_support(adev)) { | 722 | if (!amdgpu_device_has_dc_support(adev)) { |
726 | struct amdgpu_crtc *amdgpu_crtc; | 723 | struct amdgpu_crtc *amdgpu_crtc; |
diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h index 860221924ef7..6ff8f35123c2 100644 --- a/drivers/gpu/drm/amd/include/cgs_common.h +++ b/drivers/gpu/drm/amd/include/cgs_common.h | |||
@@ -106,7 +106,6 @@ struct cgs_firmware_info { | |||
106 | 106 | ||
107 | struct cgs_mode_info { | 107 | struct cgs_mode_info { |
108 | uint32_t refresh_rate; | 108 | uint32_t refresh_rate; |
109 | uint32_t ref_clock; | ||
110 | uint32_t vblank_time_us; | 109 | uint32_t vblank_time_us; |
111 | }; | 110 | }; |
112 | 111 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c index 7a87209f7258..478e31d5da0f 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | |||
@@ -891,30 +891,6 @@ static int smu7_setup_default_dpm_tables(struct pp_hwmgr *hwmgr) | |||
891 | return 0; | 891 | return 0; |
892 | } | 892 | } |
893 | 893 | ||
894 | uint32_t smu7_get_xclk(struct pp_hwmgr *hwmgr) | ||
895 | { | ||
896 | uint32_t reference_clock, tmp; | ||
897 | struct cgs_display_info info = {0}; | ||
898 | struct cgs_mode_info mode_info = {0}; | ||
899 | |||
900 | info.mode_info = &mode_info; | ||
901 | |||
902 | tmp = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, CG_CLKPIN_CNTL_2, MUX_TCLK_TO_XCLK); | ||
903 | |||
904 | if (tmp) | ||
905 | return TCLK; | ||
906 | |||
907 | cgs_get_active_displays_info(hwmgr->device, &info); | ||
908 | reference_clock = mode_info.ref_clock; | ||
909 | |||
910 | tmp = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, CG_CLKPIN_CNTL, XTALIN_DIVIDE); | ||
911 | |||
912 | if (0 != tmp) | ||
913 | return reference_clock / 4; | ||
914 | |||
915 | return reference_clock; | ||
916 | } | ||
917 | |||
918 | static int smu7_enable_vrhot_gpio_interrupt(struct pp_hwmgr *hwmgr) | 894 | static int smu7_enable_vrhot_gpio_interrupt(struct pp_hwmgr *hwmgr) |
919 | { | 895 | { |
920 | 896 | ||
@@ -3970,7 +3946,8 @@ static int smu7_program_display_gap(struct pp_hwmgr *hwmgr) | |||
3970 | display_gap = PHM_SET_FIELD(display_gap, CG_DISPLAY_GAP_CNTL, DISP_GAP, (num_active_displays > 0) ? DISPLAY_GAP_VBLANK_OR_WM : DISPLAY_GAP_IGNORE); | 3946 | display_gap = PHM_SET_FIELD(display_gap, CG_DISPLAY_GAP_CNTL, DISP_GAP, (num_active_displays > 0) ? DISPLAY_GAP_VBLANK_OR_WM : DISPLAY_GAP_IGNORE); |
3971 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC, ixCG_DISPLAY_GAP_CNTL, display_gap); | 3947 | cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC, ixCG_DISPLAY_GAP_CNTL, display_gap); |
3972 | 3948 | ||
3973 | ref_clock = mode_info.ref_clock; | 3949 | ref_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
3950 | |||
3974 | refresh_rate = mode_info.refresh_rate; | 3951 | refresh_rate = mode_info.refresh_rate; |
3975 | 3952 | ||
3976 | if (0 == refresh_rate) | 3953 | if (0 == refresh_rate) |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h index 3bcfc61cd5a2..f40179c9ca97 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h | |||
@@ -361,7 +361,6 @@ enum SMU7_I2CLineID { | |||
361 | #define SMU7_I2C_DDCVGACLK 0x4d | 361 | #define SMU7_I2C_DDCVGACLK 0x4d |
362 | 362 | ||
363 | #define SMU7_UNUSED_GPIO_PIN 0x7F | 363 | #define SMU7_UNUSED_GPIO_PIN 0x7F |
364 | uint32_t smu7_get_xclk(struct pp_hwmgr *hwmgr); | ||
365 | uint8_t smu7_get_sleep_divider_id_from_clock(uint32_t clock, | 364 | uint8_t smu7_get_sleep_divider_id_from_clock(uint32_t clock, |
366 | uint32_t clock_insr); | 365 | uint32_t clock_insr); |
367 | #endif | 366 | #endif |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c index f6573ed0357d..4dd26eb731b5 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c | |||
@@ -95,7 +95,7 @@ int smu7_fan_ctrl_get_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t *speed) | |||
95 | if (tach_period == 0) | 95 | if (tach_period == 0) |
96 | return -EINVAL; | 96 | return -EINVAL; |
97 | 97 | ||
98 | crystal_clock_freq = smu7_get_xclk(hwmgr); | 98 | crystal_clock_freq = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
99 | 99 | ||
100 | *speed = 60 * crystal_clock_freq * 10000 / tach_period; | 100 | *speed = 60 * crystal_clock_freq * 10000 / tach_period; |
101 | 101 | ||
@@ -267,7 +267,7 @@ int smu7_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed) | |||
267 | if (PP_CAP(PHM_PlatformCaps_MicrocodeFanControl)) | 267 | if (PP_CAP(PHM_PlatformCaps_MicrocodeFanControl)) |
268 | smu7_fan_ctrl_stop_smc_fan_control(hwmgr); | 268 | smu7_fan_ctrl_stop_smc_fan_control(hwmgr); |
269 | 269 | ||
270 | crystal_clock_freq = smu7_get_xclk(hwmgr); | 270 | crystal_clock_freq = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
271 | 271 | ||
272 | tach_period = 60 * crystal_clock_freq * 10000 / (8 * speed); | 272 | tach_period = 60 * crystal_clock_freq * 10000 / (8 * speed); |
273 | 273 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c index 0147267306d3..444337a19eee 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c | |||
@@ -110,7 +110,7 @@ int vega10_fan_ctrl_get_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t *speed) | |||
110 | if (tach_period == 0) | 110 | if (tach_period == 0) |
111 | return -EINVAL; | 111 | return -EINVAL; |
112 | 112 | ||
113 | crystal_clock_freq = smu7_get_xclk(hwmgr); | 113 | crystal_clock_freq = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
114 | 114 | ||
115 | *speed = 60 * crystal_clock_freq * 10000 / tach_period; | 115 | *speed = 60 * crystal_clock_freq * 10000 / tach_period; |
116 | } | 116 | } |
@@ -331,7 +331,7 @@ int vega10_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed) | |||
331 | result = vega10_fan_ctrl_stop_smc_fan_control(hwmgr); | 331 | result = vega10_fan_ctrl_stop_smc_fan_control(hwmgr); |
332 | 332 | ||
333 | if (!result) { | 333 | if (!result) { |
334 | crystal_clock_freq = smu7_get_xclk(hwmgr); | 334 | crystal_clock_freq = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
335 | tach_period = 60 * crystal_clock_freq * 10000 / (8 * speed); | 335 | tach_period = 60 * crystal_clock_freq * 10000 / (8 * speed); |
336 | reg = soc15_get_register_offset(THM_HWID, 0, | 336 | reg = soc15_get_register_offset(THM_HWID, 0, |
337 | mmCG_TACH_STATUS_BASE_IDX, mmCG_TACH_STATUS); | 337 | mmCG_TACH_STATUS_BASE_IDX, mmCG_TACH_STATUS); |
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h index 82f10bdd5f07..21e7c4dfa2ca 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h | |||
@@ -73,7 +73,7 @@ extern int vega10_thermal_disable_alert(struct pp_hwmgr *hwmgr); | |||
73 | extern int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr); | 73 | extern int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr); |
74 | extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr, | 74 | extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr, |
75 | struct PP_TemperatureRange *range); | 75 | struct PP_TemperatureRange *range); |
76 | extern uint32_t smu7_get_xclk(struct pp_hwmgr *hwmgr); | 76 | |
77 | 77 | ||
78 | #endif | 78 | #endif |
79 | 79 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c index 5d6dfdfbbbb6..08d000140eca 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | |||
@@ -2222,7 +2222,7 @@ static int ci_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) | |||
2222 | 2222 | ||
2223 | fan_table.TempRespLim = cpu_to_be16(5); | 2223 | fan_table.TempRespLim = cpu_to_be16(5); |
2224 | 2224 | ||
2225 | reference_clock = smu7_get_xclk(hwmgr); | 2225 | reference_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
2226 | 2226 | ||
2227 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr->thermal_controller.advanceFanControlParameters.ulCycleDelay * reference_clock) / 1600); | 2227 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr->thermal_controller.advanceFanControlParameters.ulCycleDelay * reference_clock) / 1600); |
2228 | 2228 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c index 95fcda37f890..43432e4c7bdc 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c | |||
@@ -2254,7 +2254,7 @@ static int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) | |||
2254 | 2254 | ||
2255 | fan_table.TempRespLim = cpu_to_be16(5); | 2255 | fan_table.TempRespLim = cpu_to_be16(5); |
2256 | 2256 | ||
2257 | reference_clock = smu7_get_xclk(hwmgr); | 2257 | reference_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
2258 | 2258 | ||
2259 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr-> | 2259 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr-> |
2260 | thermal_controller.advanceFanControlParameters.ulCycleDelay * | 2260 | thermal_controller.advanceFanControlParameters.ulCycleDelay * |
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c index 4e2f62e659ef..d4bb934e7334 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c | |||
@@ -2158,7 +2158,7 @@ int iceland_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) | |||
2158 | 2158 | ||
2159 | fan_table.TempRespLim = cpu_to_be16(5); | 2159 | fan_table.TempRespLim = cpu_to_be16(5); |
2160 | 2160 | ||
2161 | reference_clock = smu7_get_xclk(hwmgr); | 2161 | reference_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
2162 | 2162 | ||
2163 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr->thermal_controller.advanceFanControlParameters.ulCycleDelay * reference_clock) / 1600); | 2163 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr->thermal_controller.advanceFanControlParameters.ulCycleDelay * reference_clock) / 1600); |
2164 | 2164 | ||
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c index 03ec1e59876b..f6b12980c87c 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c | |||
@@ -811,7 +811,7 @@ static void polaris10_get_sclk_range_table(struct pp_hwmgr *hwmgr, | |||
811 | 811 | ||
812 | struct pp_atom_ctrl_sclk_range_table range_table_from_vbios = { { {0} } }; | 812 | struct pp_atom_ctrl_sclk_range_table range_table_from_vbios = { { {0} } }; |
813 | 813 | ||
814 | ref_clk = smu7_get_xclk(hwmgr); | 814 | ref_clk = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
815 | 815 | ||
816 | if (0 == atomctrl_get_smc_sclk_range_table(hwmgr, &range_table_from_vbios)) { | 816 | if (0 == atomctrl_get_smc_sclk_range_table(hwmgr, &range_table_from_vbios)) { |
817 | for (i = 0; i < NUM_SCLK_RANGE; i++) { | 817 | for (i = 0; i < NUM_SCLK_RANGE; i++) { |
@@ -876,7 +876,7 @@ static int polaris10_calculate_sclk_params(struct pp_hwmgr *hwmgr, | |||
876 | return result; | 876 | return result; |
877 | } | 877 | } |
878 | 878 | ||
879 | ref_clock = smu7_get_xclk(hwmgr); | 879 | ref_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
880 | 880 | ||
881 | for (i = 0; i < NUM_SCLK_RANGE; i++) { | 881 | for (i = 0; i < NUM_SCLK_RANGE; i++) { |
882 | if (clock > smu_data->range_table[i].trans_lower_frequency | 882 | if (clock > smu_data->range_table[i].trans_lower_frequency |
@@ -2132,7 +2132,7 @@ static int polaris10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) | |||
2132 | 2132 | ||
2133 | fan_table.TempRespLim = cpu_to_be16(5); | 2133 | fan_table.TempRespLim = cpu_to_be16(5); |
2134 | 2134 | ||
2135 | reference_clock = smu7_get_xclk(hwmgr); | 2135 | reference_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
2136 | 2136 | ||
2137 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr-> | 2137 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr-> |
2138 | thermal_controller.advanceFanControlParameters.ulCycleDelay * | 2138 | thermal_controller.advanceFanControlParameters.ulCycleDelay * |
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c index 26cca8cce8f1..b51d7468c3e7 100644 --- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c +++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c | |||
@@ -2574,7 +2574,7 @@ static int tonga_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) | |||
2574 | 2574 | ||
2575 | fan_table.TempRespLim = cpu_to_be16(5); | 2575 | fan_table.TempRespLim = cpu_to_be16(5); |
2576 | 2576 | ||
2577 | reference_clock = smu7_get_xclk(hwmgr); | 2577 | reference_clock = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); |
2578 | 2578 | ||
2579 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr->thermal_controller.advanceFanControlParameters.ulCycleDelay * reference_clock) / 1600); | 2579 | fan_table.RefreshPeriod = cpu_to_be32((hwmgr->thermal_controller.advanceFanControlParameters.ulCycleDelay * reference_clock) / 1600); |
2580 | 2580 | ||