Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8804b8d5 authored by Rex Zhu's avatar Rex Zhu Committed by Alex Deucher
Browse files

drm/amdgpu: enable sysfs interface for powerplay



Same interface exposed in pre-powerplay dpm code.

Signed-off-by: default avatarRex Zhu <Rex.Zhu@amd.com>
Reviewed-by: default avatarJammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3af76f23
Loading
Loading
Loading
Loading
+11 −9
Original line number Original line Diff line number Diff line
@@ -184,10 +184,10 @@ static ssize_t amdgpu_hwmon_show_temp(struct device *dev,
	struct amdgpu_device *adev = dev_get_drvdata(dev);
	struct amdgpu_device *adev = dev_get_drvdata(dev);
	int temp;
	int temp;


	if (adev->pm.funcs->get_temperature)
	if (!amdgpu_powerplay && !adev->pm.funcs->get_temperature)
		temp = amdgpu_dpm_get_temperature(adev);
	else
		temp = 0;
		temp = 0;
	else
		temp = amdgpu_dpm_get_temperature(adev);


	return snprintf(buf, PAGE_SIZE, "%d\n", temp);
	return snprintf(buf, PAGE_SIZE, "%d\n", temp);
}
}
@@ -215,7 +215,9 @@ static ssize_t amdgpu_hwmon_get_pwm1_enable(struct device *dev,
	struct amdgpu_device *adev = dev_get_drvdata(dev);
	struct amdgpu_device *adev = dev_get_drvdata(dev);
	u32 pwm_mode = 0;
	u32 pwm_mode = 0;


	if (adev->pm.funcs->get_fan_control_mode)
	if (!amdgpu_powerplay && !adev->pm.funcs->get_fan_control_mode)
		return -EINVAL;

	pwm_mode = amdgpu_dpm_get_fan_control_mode(adev);
	pwm_mode = amdgpu_dpm_get_fan_control_mode(adev);


	/* never 0 (full-speed), fuse or smc-controlled always */
	/* never 0 (full-speed), fuse or smc-controlled always */
@@ -231,7 +233,7 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct device *dev,
	int err;
	int err;
	int value;
	int value;


	if (!adev->pm.funcs->set_fan_control_mode)
	if (!amdgpu_powerplay && !adev->pm.funcs->set_fan_control_mode)
		return -EINVAL;
		return -EINVAL;


	err = kstrtoint(buf, 10, &value);
	err = kstrtoint(buf, 10, &value);
@@ -328,9 +330,6 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,
	struct amdgpu_device *adev = dev_get_drvdata(dev);
	struct amdgpu_device *adev = dev_get_drvdata(dev);
	umode_t effective_mode = attr->mode;
	umode_t effective_mode = attr->mode;


	if (amdgpu_powerplay)
		return 0;  /* to do */

	/* Skip limit attributes if DPM is not enabled */
	/* Skip limit attributes if DPM is not enabled */
	if (!adev->pm.dpm_enabled &&
	if (!adev->pm.dpm_enabled &&
	    (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr ||
	    (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr ||
@@ -341,6 +340,9 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,
	     attr == &sensor_dev_attr_pwm1_min.dev_attr.attr))
	     attr == &sensor_dev_attr_pwm1_min.dev_attr.attr))
		return 0;
		return 0;


	if (amdgpu_powerplay)
		return effective_mode;

	/* Skip fan attributes if fan is not present */
	/* Skip fan attributes if fan is not present */
	if (adev->pm.no_fan &&
	if (adev->pm.no_fan &&
	    (attr == &sensor_dev_attr_pwm1.dev_attr.attr ||
	    (attr == &sensor_dev_attr_pwm1.dev_attr.attr ||