drm/amdgpu: expose amdgpu_sensors on pre-powerplay chips
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 15 Feb 2017 18:32:29 +0000 (19:32 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:53:04 +0000 (23:53 -0400)
read_sensor() has been recently implemented for dpm based boards
which means amdgpu_sensors can now be exposed.

v2: - make sure read_sensor is not NULL on dpm chips
    - keep sanity check for powerplay chips
v3: - make sure amdgpu_dpm != 0

Cc: Tom St Denis <tom.stdenis@amd.com>
Reviewed-by: Tom St Denis <tom.stdenis@amd.com>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index f186c20f636b1e83ec932eed9a851241439f6dcc..c2491a4e9ce728218de8a69d605388b9cb34851f 100644 (file)
@@ -3112,12 +3112,18 @@ static ssize_t amdgpu_debugfs_sensor_read(struct file *f, char __user *buf,
        if (size & 3 || *pos & 0x3)
                return -EINVAL;
 
+       if (amdgpu_dpm == 0)
+               return -EINVAL;
+
        /* convert offset to sensor number */
        idx = *pos >> 2;
 
        valuesize = sizeof(values);
        if (adev->powerplay.pp_funcs && adev->powerplay.pp_funcs->read_sensor)
                r = adev->powerplay.pp_funcs->read_sensor(adev->powerplay.pp_handle, idx, &values[0], &valuesize);
+       else if (adev->pm.funcs && adev->pm.funcs->read_sensor)
+               r = adev->pm.funcs->read_sensor(adev, idx, &values[0],
+                                               &valuesize);
        else
                return -EINVAL;