[PART1 PATCH 2/8] drm/amdgpu: add parse clock gating state

Huang Rui ray.huang at amd.com
Thu Jan 5 13:49:47 UTC 2017


Signed-off-by: Huang Rui <ray.huang at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 95 ++++++++++++++++++++++++++++++++++
 1 file changed, 95 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index 7aa561d..431bae4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -1536,6 +1536,99 @@ static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *a
 	return 0;
 }
 
+static void amdgpu_parse_cg_state(struct seq_file *m, u32 flags)
+{
+       if (flags & AMD_CG_SUPPORT_GFX_MGCG)
+               seq_printf(m, "\tMedium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tMedium Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_MGLS)
+               seq_printf(m, "\tMedium Grain memory Light Sleep: On\n");
+       else
+               seq_printf(m, "\tMedium Grain memory Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_CGCG)
+               seq_printf(m, "\tCoarse Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tCoarse Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_CGLS)
+               seq_printf(m, "\tCoarse Grain memory Light Sleep: On\n");
+       else
+               seq_printf(m, "\tCoarse Grain memory Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_CGTS)
+               seq_printf(m, "\tCoarse Grain Tree Shader: On\n");
+       else
+               seq_printf(m, "\tCoarse Grain Tree Shader: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_CGTS_LS)
+               seq_printf(m, "\tCoarse Grain Tree Shader Light Sleep: On\n");
+       else
+               seq_printf(m, "\tCoarse Grain Tree Shader Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_CP_LS)
+               seq_printf(m, "\tCommand Processor Light Sleep: On\n");
+       else
+               seq_printf(m, "\tCommand Processor Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_GFX_RLC_LS)
+               seq_printf(m, "\tRun List Controller Light Sleep: On\n");
+       else
+               seq_printf(m, "\tRun List Controller Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_MC_LS)
+               seq_printf(m, "\tMemory Controller Light Sleep: On\n");
+       else
+               seq_printf(m, "\tMemory Controller Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_MC_MGCG)
+               seq_printf(m, "\tMemory Controller Medium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tMemory Controller Medium Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_SDMA_LS)
+               seq_printf(m, "\tSystem Direct Memory Access Light Sleep: On\n");
+       else
+               seq_printf(m, "\tSystem Direct Memory Access Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_SDMA_MGCG)
+               seq_printf(m, "\tSystem Direct Memory Access Medium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tSystem Direct Memory Access Medium Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_BIF_LS)
+               seq_printf(m, "\tBus Interface Light Sleep: On\n");
+       else
+               seq_printf(m, "\tBus Interface Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_UVD_MGCG)
+               seq_printf(m, "\tUniversal Video Decoder Medium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tUniversal Video Decoder Medium Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_VCE_MGCG)
+               seq_printf(m, "\tVideo Coding Engine Medium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tVideo Coding Engine Medium Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_HDP_LS)
+               seq_printf(m, "\tHost Data Path Light Sleep: On\n");
+       else
+               seq_printf(m, "\tHost Data Path Light Sleep: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_HDP_MGCG)
+               seq_printf(m, "\tHost Data Path Medium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tHost Data Path Medium Grain Clock Gating: Off\n");
+
+       if (flags & AMD_CG_SUPPORT_ROM_MGCG)
+               seq_printf(m, "\tRom Medium Grain Clock Gating: On\n");
+       else
+               seq_printf(m, "\tRom Medium Grain Clock Gating: Off\n");
+}
+
 static int amdgpu_debugfs_pm_info(struct seq_file *m, void *data)
 {
 	struct drm_info_node *node = (struct drm_info_node *) m->private;
@@ -1546,6 +1639,8 @@ static int amdgpu_debugfs_pm_info(struct seq_file *m, void *data)
 
 	amdgpu_clockgating_state(adev, &flags);
 	seq_printf(m, "Clock Gating Flags Mask: 0x%x\n", flags);
+	amdgpu_parse_cg_state(m, flags);
+	seq_printf(m, "\n");
 
 	if (!adev->pm.dpm_enabled) {
 		seq_printf(m, "dpm not enabled\n");
-- 
2.7.4



More information about the amd-gfx mailing list