diff options
author | James Zhu <jzhums@gmail.com> | 2018-09-13 16:55:44 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-09-26 22:09:12 -0400 |
commit | c95f75f4e86c1c0d867b76f2a134dbeac099cf89 (patch) | |
tree | 8142d5a542f2b005e4b9110bef4a892ea638287c /drivers/gpu/drm/amd/amdgpu | |
parent | 2faec55c4d972a87a420301ec9e4556c79ee8b54 (diff) |
drm/amdgpu:No action when VCN PG state is unchanged
When VCN PG state is unchanged, it is unnecessary to reset power
gate state
Signed-off-by: James Zhu <James.Zhu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 12 |
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h index 0b0b8638d73f..d2219abd50f0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | |||
@@ -69,6 +69,7 @@ struct amdgpu_vcn { | |||
69 | struct amdgpu_ring ring_jpeg; | 69 | struct amdgpu_ring ring_jpeg; |
70 | struct amdgpu_irq_src irq; | 70 | struct amdgpu_irq_src irq; |
71 | unsigned num_enc_rings; | 71 | unsigned num_enc_rings; |
72 | enum amd_powergating_state cur_state; | ||
72 | }; | 73 | }; |
73 | 74 | ||
74 | int amdgpu_vcn_sw_init(struct amdgpu_device *adev); | 75 | int amdgpu_vcn_sw_init(struct amdgpu_device *adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c index 2664bb2c47c3..2cde0b4046db 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |||
@@ -1633,12 +1633,20 @@ static int vcn_v1_0_set_powergating_state(void *handle, | |||
1633 | * revisit this when there is a cleaner line between | 1633 | * revisit this when there is a cleaner line between |
1634 | * the smc and the hw blocks | 1634 | * the smc and the hw blocks |
1635 | */ | 1635 | */ |
1636 | int ret; | ||
1636 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 1637 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
1637 | 1638 | ||
1639 | if(state == adev->vcn.cur_state) | ||
1640 | return 0; | ||
1641 | |||
1638 | if (state == AMD_PG_STATE_GATE) | 1642 | if (state == AMD_PG_STATE_GATE) |
1639 | return vcn_v1_0_stop(adev); | 1643 | ret = vcn_v1_0_stop(adev); |
1640 | else | 1644 | else |
1641 | return vcn_v1_0_start(adev); | 1645 | ret = vcn_v1_0_start(adev); |
1646 | |||
1647 | if(!ret) | ||
1648 | adev->vcn.cur_state = state; | ||
1649 | return ret; | ||
1642 | } | 1650 | } |
1643 | 1651 | ||
1644 | static const struct amd_ip_funcs vcn_v1_0_ip_funcs = { | 1652 | static const struct amd_ip_funcs vcn_v1_0_ip_funcs = { |