On Sat, Oct 29, 2016 at 4:28 PM, Grazvydas Ignotas <[email protected]> wrote:
> Only for cards that are supported by powerplay.
>
> Signed-off-by: Grazvydas Ignotas <[email protected]>
Applied the series. Thanks!
Alex
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h | 5 +++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 21 +++++++++++++++++++++
> 2 files changed, 26 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> index bd85e35..e45bd05 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> @@ -317,6 +317,11 @@ struct amdgpu_dpm_funcs {
>
> (adev)->powerplay.pp_funcs->get_fan_speed_percent((adev)->powerplay.pp_handle,
> (s)) : \
> (adev)->pm.funcs->get_fan_speed_percent((adev), (s)))
>
> +#define amdgpu_dpm_get_fan_speed_rpm(adev, s) \
> + ((adev)->pp_enabled ? \
> +
> (adev)->powerplay.pp_funcs->get_fan_speed_rpm((adev)->powerplay.pp_handle,
> (s)) : \
> + -EINVAL)
> +
> #define amdgpu_dpm_get_sclk(adev, l) \
> ((adev)->pp_enabled ? \
>
> (adev)->powerplay.pp_funcs->get_sclk((adev)->powerplay.pp_handle, (l)) : \
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> index 274f330..723ae68 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> @@ -737,6 +737,21 @@ static ssize_t amdgpu_hwmon_get_pwm1(struct device *dev,
> return sprintf(buf, "%i\n", speed);
> }
>
> +static ssize_t amdgpu_hwmon_get_fan1_input(struct device *dev,
> + struct device_attribute *attr,
> + char *buf)
> +{
> + struct amdgpu_device *adev = dev_get_drvdata(dev);
> + int err;
> + u32 speed;
> +
> + err = amdgpu_dpm_get_fan_speed_rpm(adev, &speed);
> + if (err)
> + return err;
> +
> + return sprintf(buf, "%i\n", speed);
> +}
> +
> static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, amdgpu_hwmon_show_temp,
> NULL, 0);
> static SENSOR_DEVICE_ATTR(temp1_crit, S_IRUGO,
> amdgpu_hwmon_show_temp_thresh, NULL, 0);
> static SENSOR_DEVICE_ATTR(temp1_crit_hyst, S_IRUGO,
> amdgpu_hwmon_show_temp_thresh, NULL, 1);
> @@ -744,6 +759,7 @@ static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR,
> amdgpu_hwmon_get_pwm1, amdgpu
> static SENSOR_DEVICE_ATTR(pwm1_enable, S_IRUGO | S_IWUSR,
> amdgpu_hwmon_get_pwm1_enable, amdgpu_hwmon_set_pwm1_enable, 0);
> static SENSOR_DEVICE_ATTR(pwm1_min, S_IRUGO, amdgpu_hwmon_get_pwm1_min,
> NULL, 0);
> static SENSOR_DEVICE_ATTR(pwm1_max, S_IRUGO, amdgpu_hwmon_get_pwm1_max,
> NULL, 0);
> +static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, amdgpu_hwmon_get_fan1_input,
> NULL, 0);
>
> static struct attribute *hwmon_attributes[] = {
> &sensor_dev_attr_temp1_input.dev_attr.attr,
> @@ -753,6 +769,7 @@ static struct attribute *hwmon_attributes[] = {
> &sensor_dev_attr_pwm1_enable.dev_attr.attr,
> &sensor_dev_attr_pwm1_min.dev_attr.attr,
> &sensor_dev_attr_pwm1_max.dev_attr.attr,
> + &sensor_dev_attr_fan1_input.dev_attr.attr,
> NULL
> };
>
> @@ -804,6 +821,10 @@ static umode_t hwmon_attributes_visible(struct kobject
> *kobj,
> attr == &sensor_dev_attr_pwm1_min.dev_attr.attr))
> return 0;
>
> + /* requires powerplay */
> + if (attr == &sensor_dev_attr_fan1_input.dev_attr.attr)
> + return 0;
> +
> return effective_mode;
> }
>
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx