diff options
author | Huang Rui <ray.huang@amd.com> | 2017-03-23 23:04:27 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-03-29 23:55:20 -0400 |
commit | 2eba890cb8f026f979df8e25ea4acd25088a82ae (patch) | |
tree | be7d04d095f1682a7d432d64798d4fbe4241f437 /drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | |
parent | f9abe35c307e26c16d4eade33b2904d9ff665116 (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.c | 20 |
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 | ||
1411 | static 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 | |||
1411 | const struct amd_ip_funcs sdma_v4_0_ip_funcs = { | 1430 | const 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 | ||
1428 | static const struct amdgpu_ring_funcs sdma_v4_0_ring_funcs = { | 1448 | static const struct amdgpu_ring_funcs sdma_v4_0_ring_funcs = { |