aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c78
1 files changed, 51 insertions, 27 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index 8b7efd0a7028..2b546567853b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -159,12 +159,16 @@ static ssize_t amdgpu_get_dpm_state(struct device *dev,
159 struct amdgpu_device *adev = ddev->dev_private; 159 struct amdgpu_device *adev = ddev->dev_private;
160 enum amd_pm_state_type pm; 160 enum amd_pm_state_type pm;
161 161
162 if (is_support_sw_smu(adev) && adev->smu.ppt_funcs->get_current_power_state) 162 if (is_support_sw_smu(adev)) {
163 pm = amdgpu_smu_get_current_power_state(adev); 163 if (adev->smu.ppt_funcs->get_current_power_state)
164 else if (adev->powerplay.pp_funcs->get_current_power_state) 164 pm = amdgpu_smu_get_current_power_state(adev);
165 else
166 pm = adev->pm.dpm.user_state;
167 } else if (adev->powerplay.pp_funcs->get_current_power_state) {
165 pm = amdgpu_dpm_get_current_power_state(adev); 168 pm = amdgpu_dpm_get_current_power_state(adev);
166 else 169 } else {
167 pm = adev->pm.dpm.user_state; 170 pm = adev->pm.dpm.user_state;
171 }
168 172
169 return snprintf(buf, PAGE_SIZE, "%s\n", 173 return snprintf(buf, PAGE_SIZE, "%s\n",
170 (pm == POWER_STATE_TYPE_BATTERY) ? "battery" : 174 (pm == POWER_STATE_TYPE_BATTERY) ? "battery" :
@@ -191,7 +195,11 @@ static ssize_t amdgpu_set_dpm_state(struct device *dev,
191 goto fail; 195 goto fail;
192 } 196 }
193 197
194 if (adev->powerplay.pp_funcs->dispatch_tasks) { 198 if (is_support_sw_smu(adev)) {
199 mutex_lock(&adev->pm.mutex);
200 adev->pm.dpm.user_state = state;
201 mutex_unlock(&adev->pm.mutex);
202 } else if (adev->powerplay.pp_funcs->dispatch_tasks) {
195 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_ENABLE_USER_STATE, &state); 203 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_ENABLE_USER_STATE, &state);
196 } else { 204 } else {
197 mutex_lock(&adev->pm.mutex); 205 mutex_lock(&adev->pm.mutex);
@@ -1734,7 +1742,7 @@ static ssize_t amdgpu_hwmon_get_fan1_input(struct device *dev,
1734 return -EINVAL; 1742 return -EINVAL;
1735 1743
1736 if (is_support_sw_smu(adev)) { 1744 if (is_support_sw_smu(adev)) {
1737 err = smu_get_current_rpm(&adev->smu, &speed); 1745 err = smu_get_fan_speed_rpm(&adev->smu, &speed);
1738 if (err) 1746 if (err)
1739 return err; 1747 return err;
1740 } else if (adev->powerplay.pp_funcs->get_fan_speed_rpm) { 1748 } else if (adev->powerplay.pp_funcs->get_fan_speed_rpm) {
@@ -1794,7 +1802,7 @@ static ssize_t amdgpu_hwmon_get_fan1_target(struct device *dev,
1794 return -EINVAL; 1802 return -EINVAL;
1795 1803
1796 if (is_support_sw_smu(adev)) { 1804 if (is_support_sw_smu(adev)) {
1797 err = smu_get_current_rpm(&adev->smu, &rpm); 1805 err = smu_get_fan_speed_rpm(&adev->smu, &rpm);
1798 if (err) 1806 if (err)
1799 return err; 1807 return err;
1800 } else if (adev->powerplay.pp_funcs->get_fan_speed_rpm) { 1808 } else if (adev->powerplay.pp_funcs->get_fan_speed_rpm) {
@@ -3067,28 +3075,44 @@ static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *a
3067 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK, (void *)&value64, &size)) 3075 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK, (void *)&value64, &size))
3068 seq_printf(m, "SMC Feature Mask: 0x%016llx\n", value64); 3076 seq_printf(m, "SMC Feature Mask: 0x%016llx\n", value64);
3069 3077
3070 /* UVD clocks */ 3078 if (adev->asic_type > CHIP_VEGA20) {
3071 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_POWER, (void *)&value, &size)) { 3079 /* VCN clocks */
3072 if (!value) { 3080 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCN_POWER_STATE, (void *)&value, &size)) {
3073 seq_printf(m, "UVD: Disabled\n"); 3081 if (!value) {
3074 } else { 3082 seq_printf(m, "VCN: Disabled\n");
3075 seq_printf(m, "UVD: Enabled\n"); 3083 } else {
3076 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_DCLK, (void *)&value, &size)) 3084 seq_printf(m, "VCN: Enabled\n");
3077 seq_printf(m, "\t%u MHz (DCLK)\n", value/100); 3085 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_DCLK, (void *)&value, &size))
3078 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_VCLK, (void *)&value, &size)) 3086 seq_printf(m, "\t%u MHz (DCLK)\n", value/100);
3079 seq_printf(m, "\t%u MHz (VCLK)\n", value/100); 3087 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_VCLK, (void *)&value, &size))
3088 seq_printf(m, "\t%u MHz (VCLK)\n", value/100);
3089 }
3080 } 3090 }
3081 } 3091 seq_printf(m, "\n");
3082 seq_printf(m, "\n"); 3092 } else {
3093 /* UVD clocks */
3094 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_POWER, (void *)&value, &size)) {
3095 if (!value) {
3096 seq_printf(m, "UVD: Disabled\n");
3097 } else {
3098 seq_printf(m, "UVD: Enabled\n");
3099 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_DCLK, (void *)&value, &size))
3100 seq_printf(m, "\t%u MHz (DCLK)\n", value/100);
3101 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_VCLK, (void *)&value, &size))
3102 seq_printf(m, "\t%u MHz (VCLK)\n", value/100);
3103 }
3104 }
3105 seq_printf(m, "\n");
3083 3106
3084 /* VCE clocks */ 3107 /* VCE clocks */
3085 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCE_POWER, (void *)&value, &size)) { 3108 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCE_POWER, (void *)&value, &size)) {
3086 if (!value) { 3109 if (!value) {
3087 seq_printf(m, "VCE: Disabled\n"); 3110 seq_printf(m, "VCE: Disabled\n");
3088 } else { 3111 } else {
3089 seq_printf(m, "VCE: Enabled\n"); 3112 seq_printf(m, "VCE: Enabled\n");
3090 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCE_ECCLK, (void *)&value, &size)) 3113 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCE_ECCLK, (void *)&value, &size))
3091 seq_printf(m, "\t%u MHz (ECCLK)\n", value/100); 3114 seq_printf(m, "\t%u MHz (ECCLK)\n", value/100);
3115 }
3092 } 3116 }
3093 } 3117 }
3094 3118