forked from Minki/linux
drm/amdgpu: introduce an interface to get clock gating status dynamically
Signed-off-by: Huang Rui <ray.huang@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
c8394f38fa
commit
6cb2d4e4f3
@ -194,6 +194,7 @@ int amdgpu_set_clockgating_state(struct amdgpu_device *adev,
|
||||
int amdgpu_set_powergating_state(struct amdgpu_device *adev,
|
||||
enum amd_ip_block_type block_type,
|
||||
enum amd_powergating_state state);
|
||||
void amdgpu_get_clockgating_state(struct amdgpu_device *adev, u32 *flags);
|
||||
int amdgpu_wait_for_idle(struct amdgpu_device *adev,
|
||||
enum amd_ip_block_type block_type);
|
||||
bool amdgpu_is_idle(struct amdgpu_device *adev,
|
||||
|
@ -1131,6 +1131,18 @@ int amdgpu_set_powergating_state(struct amdgpu_device *adev,
|
||||
return r;
|
||||
}
|
||||
|
||||
void amdgpu_get_clockgating_state(struct amdgpu_device *adev, u32 *flags)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < adev->num_ip_blocks; i++) {
|
||||
if (!adev->ip_blocks[i].status.valid)
|
||||
continue;
|
||||
if (adev->ip_blocks[i].version->funcs->get_clockgating_state)
|
||||
adev->ip_blocks[i].version->funcs->get_clockgating_state((void *)adev, flags);
|
||||
}
|
||||
}
|
||||
|
||||
int amdgpu_wait_for_idle(struct amdgpu_device *adev,
|
||||
enum amd_ip_block_type block_type)
|
||||
{
|
||||
|
@ -1365,6 +1365,10 @@ static int amdgpu_debugfs_pm_info(struct seq_file *m, void *data)
|
||||
struct drm_device *dev = node->minor->dev;
|
||||
struct amdgpu_device *adev = dev->dev_private;
|
||||
struct drm_device *ddev = adev->ddev;
|
||||
u32 flags = 0;
|
||||
|
||||
amdgpu_get_clockgating_state(adev, &flags);
|
||||
seq_printf(m, "Clock Gating Flags Mask: 0x%x\n", flags);
|
||||
|
||||
if (!adev->pm.dpm_enabled) {
|
||||
seq_printf(m, "dpm not enabled\n");
|
||||
|
@ -214,6 +214,8 @@ struct amd_ip_funcs {
|
||||
/* enable/disable pg for the IP block */
|
||||
int (*set_powergating_state)(void *handle,
|
||||
enum amd_powergating_state state);
|
||||
/* get current clockgating status */
|
||||
void (*get_clockgating_state)(void *handle, u32 *flags);
|
||||
};
|
||||
|
||||
#endif /* __AMD_SHARED_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user