aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
diff options
context:
space:
mode:
authorHuang Rui <ray.huang@amd.com>2017-03-23 23:04:27 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-03-29 23:55:20 -0400
commit2eba890cb8f026f979df8e25ea4acd25088a82ae (patch)
treebe7d04d095f1682a7d432d64798d4fbe4241f437 /drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
parentf9abe35c307e26c16d4eade33b2904d9ff665116 (diff)
drm/amdgpu: add get_clockgating for sdma v4
Signed-off-by: Huang Rui <ray.huang@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 45c79f8950aa..46d45cb69070 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1408,6 +1408,25 @@ static int sdma_v4_0_set_powergating_state(void *handle,
1408 return 0; 1408 return 0;
1409} 1409}
1410 1410
1411static void sdma_v4_0_get_clockgating_state(void *handle, u32 *flags)
1412{
1413 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
1414 int data;
1415
1416 if (amdgpu_sriov_vf(adev))
1417 *flags = 0;
1418
1419 /* AMD_CG_SUPPORT_SDMA_MGCG */
1420 data = RREG32(SOC15_REG_OFFSET(SDMA0, 0, mmSDMA0_CLK_CTRL));
1421 if (!(data & SDMA0_CLK_CTRL__SOFT_OVERRIDE7_MASK))
1422 *flags |= AMD_CG_SUPPORT_SDMA_MGCG;
1423
1424 /* AMD_CG_SUPPORT_SDMA_LS */
1425 data = RREG32(SOC15_REG_OFFSET(SDMA0, 0, mmSDMA0_POWER_CNTL));
1426 if (data & SDMA0_POWER_CNTL__MEM_POWER_OVERRIDE_MASK)
1427 *flags |= AMD_CG_SUPPORT_SDMA_LS;
1428}
1429
1411const struct amd_ip_funcs sdma_v4_0_ip_funcs = { 1430const struct amd_ip_funcs sdma_v4_0_ip_funcs = {
1412 .name = "sdma_v4_0", 1431 .name = "sdma_v4_0",
1413 .early_init = sdma_v4_0_early_init, 1432 .early_init = sdma_v4_0_early_init,
@@ -1423,6 +1442,7 @@ const struct amd_ip_funcs sdma_v4_0_ip_funcs = {
1423 .soft_reset = sdma_v4_0_soft_reset, 1442 .soft_reset = sdma_v4_0_soft_reset,
1424 .set_clockgating_state = sdma_v4_0_set_clockgating_state, 1443 .set_clockgating_state = sdma_v4_0_set_clockgating_state,
1425 .set_powergating_state = sdma_v4_0_set_powergating_state, 1444 .set_powergating_state = sdma_v4_0_set_powergating_state,
1445 .get_clockgating_state = sdma_v4_0_get_clockgating_state,
1426}; 1446};
1427 1447
1428static const struct amdgpu_ring_funcs sdma_v4_0_ring_funcs = { 1448static const struct amdgpu_ring_funcs sdma_v4_0_ring_funcs = {