drm/amd/powerplay: implement sysfs of pp_table for smu11 (v2)
add pp_table sysfs interface for new sw-smu. get: return pptable raw data set: write pptable raw data to pptable, then reset smu (hw_fini -> hw_init) v2: fix mutex lock issue 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:
@@ -464,7 +464,12 @@ static ssize_t amdgpu_get_pp_table(struct device *dev,
|
||||
char *table = NULL;
|
||||
int size;
|
||||
|
||||
if (adev->powerplay.pp_funcs->get_pp_table)
|
||||
if (is_support_sw_smu(adev)) {
|
||||
size = smu_sys_get_pp_table(&adev->smu, (void **)&table);
|
||||
if (size < 0)
|
||||
return size;
|
||||
}
|
||||
else if (adev->powerplay.pp_funcs->get_pp_table)
|
||||
size = amdgpu_dpm_get_pp_table(adev, &table);
|
||||
else
|
||||
return 0;
|
||||
@@ -484,8 +489,13 @@ static ssize_t amdgpu_set_pp_table(struct device *dev,
|
||||
{
|
||||
struct drm_device *ddev = dev_get_drvdata(dev);
|
||||
struct amdgpu_device *adev = ddev->dev_private;
|
||||
int ret = 0;
|
||||
|
||||
if (adev->powerplay.pp_funcs->set_pp_table)
|
||||
if (is_support_sw_smu(adev)) {
|
||||
ret = smu_sys_set_pp_table(&adev->smu, (void *)buf, count);
|
||||
if (ret)
|
||||
return ret;
|
||||
} else if (adev->powerplay.pp_funcs->set_pp_table)
|
||||
amdgpu_dpm_set_pp_table(adev, buf, count);
|
||||
|
||||
return count;
|
||||
|
Reference in New Issue
Block a user