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.c30
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;