diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 6c53c6bc03eb..f12b9e777703 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
@@ -1246,9 +1246,19 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, | |||
1246 | struct amdgpu_device *adev = dev_get_drvdata(dev); | 1246 | struct amdgpu_device *adev = dev_get_drvdata(dev); |
1247 | umode_t effective_mode = attr->mode; | 1247 | umode_t effective_mode = attr->mode; |
1248 | 1248 | ||
1249 | /* no skipping for powerplay */ | 1249 | /* handle non-powerplay limitations */ |
1250 | if (adev->powerplay.cgs_device) | 1250 | if (!adev->powerplay.cgs_device) { |
1251 | return effective_mode; | 1251 | /* Skip fan attributes if fan is not present */ |
1252 | if (adev->pm.no_fan && | ||
1253 | (attr == &sensor_dev_attr_pwm1.dev_attr.attr || | ||
1254 | attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr || | ||
1255 | attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || | ||
1256 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | ||
1257 | return 0; | ||
1258 | /* requires powerplay */ | ||
1259 | if (attr == &sensor_dev_attr_fan1_input.dev_attr.attr) | ||
1260 | return 0; | ||
1261 | } | ||
1252 | 1262 | ||
1253 | /* Skip limit attributes if DPM is not enabled */ | 1263 | /* Skip limit attributes if DPM is not enabled */ |
1254 | if (!adev->pm.dpm_enabled && | 1264 | if (!adev->pm.dpm_enabled && |
@@ -1260,14 +1270,6 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, | |||
1260 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | 1270 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) |
1261 | return 0; | 1271 | return 0; |
1262 | 1272 | ||
1263 | /* Skip fan attributes if fan is not present */ | ||
1264 | if (adev->pm.no_fan && | ||
1265 | (attr == &sensor_dev_attr_pwm1.dev_attr.attr || | ||
1266 | attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr || | ||
1267 | attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || | ||
1268 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | ||
1269 | return 0; | ||
1270 | |||
1271 | /* mask fan attributes if we have no bindings for this asic to expose */ | 1273 | /* mask fan attributes if we have no bindings for this asic to expose */ |
1272 | if ((!adev->powerplay.pp_funcs->get_fan_speed_percent && | 1274 | if ((!adev->powerplay.pp_funcs->get_fan_speed_percent && |
1273 | attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't query fan */ | 1275 | attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't query fan */ |
@@ -1288,8 +1290,10 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, | |||
1288 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | 1290 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) |
1289 | return 0; | 1291 | return 0; |
1290 | 1292 | ||
1291 | /* requires powerplay */ | 1293 | /* only APUs have vddnb */ |
1292 | if (attr == &sensor_dev_attr_fan1_input.dev_attr.attr) | 1294 | if (!(adev->flags & AMD_IS_APU) && |
1295 | (attr == &sensor_dev_attr_in1_input.dev_attr.attr || | ||
1296 | attr == &sensor_dev_attr_in1_label.dev_attr.attr)) | ||
1293 | return 0; | 1297 | return 0; |
1294 | 1298 | ||
1295 | return effective_mode; | 1299 | return effective_mode; |