drm/amd/powerplay: implement sysfs of get num states function
add function smu_get_power_num_state function for sw-smu. it's only for sysfs interface, the power state feature is not ready for sw-smu. Signed-off-by: Kevin Wang <Kevin1.Wang@amd.com> Reviewed-by: Huang Rui <ray.huang@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -350,9 +350,13 @@ static ssize_t amdgpu_get_pp_num_states(struct device *dev,
|
|||||||
struct drm_device *ddev = dev_get_drvdata(dev);
|
struct drm_device *ddev = dev_get_drvdata(dev);
|
||||||
struct amdgpu_device *adev = ddev->dev_private;
|
struct amdgpu_device *adev = ddev->dev_private;
|
||||||
struct pp_states_info data;
|
struct pp_states_info data;
|
||||||
int i, buf_len;
|
int i, buf_len, ret;
|
||||||
|
|
||||||
if (adev->powerplay.pp_funcs->get_pp_num_states)
|
if (is_support_sw_smu(adev)) {
|
||||||
|
ret = smu_get_power_num_states(&adev->smu, &data);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
} else if (adev->powerplay.pp_funcs->get_pp_num_states)
|
||||||
amdgpu_dpm_get_pp_num_states(adev, &data);
|
amdgpu_dpm_get_pp_num_states(adev, &data);
|
||||||
|
|
||||||
buf_len = snprintf(buf, PAGE_SIZE, "states: %d\n", data.nums);
|
buf_len = snprintf(buf, PAGE_SIZE, "states: %d\n", data.nums);
|
||||||
|
|||||||
@@ -29,6 +29,19 @@
|
|||||||
#include "smu_v11_0.h"
|
#include "smu_v11_0.h"
|
||||||
#include "atom.h"
|
#include "atom.h"
|
||||||
|
|
||||||
|
int smu_get_power_num_states(struct smu_context *smu,
|
||||||
|
struct pp_states_info *state_info)
|
||||||
|
{
|
||||||
|
if (!state_info)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
/* not support power state */
|
||||||
|
memset(state_info, 0, sizeof(struct pp_states_info));
|
||||||
|
state_info->nums = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
|
int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
|
||||||
void *data, uint32_t *size)
|
void *data, uint32_t *size)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -381,5 +381,6 @@ int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor,
|
|||||||
void *data, uint32_t *size);
|
void *data, uint32_t *size);
|
||||||
int smu_sys_get_pp_table(struct smu_context *smu, void **table);
|
int smu_sys_get_pp_table(struct smu_context *smu, void **table);
|
||||||
int smu_sys_set_pp_table(struct smu_context *smu, void *buf, size_t size);
|
int smu_sys_set_pp_table(struct smu_context *smu, void *buf, size_t size);
|
||||||
|
int smu_get_power_num_states(struct smu_context *smu, struct pp_states_info *state_info);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user