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

Reply via email to