drm/radeon/pm: move pm handling into the asic specific code
We need more control over the ordering of dpm init with respect to the rest of the asic. Specifically, the SMC has to be initialized before the rlc and cg/pg. The pm code currently initializes late in the driver, but we need it to happen much earlier so move pm handling into the asic specific callbacks. This makes dpm more reliable and makes clockgating work properly on CIK parts and should help on SI parts as well. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
e14cd2bbcb
commit
6c7bccea39
21 changed files with 158 additions and 24 deletions
|
@ -2881,6 +2881,8 @@ int r600_resume(struct radeon_device *rdev)
|
|||
/* post card */
|
||||
atom_asic_init(rdev->mode_info.atom_context);
|
||||
|
||||
radeon_pm_resume(rdev);
|
||||
|
||||
rdev->accel_working = true;
|
||||
r = r600_startup(rdev);
|
||||
if (r) {
|
||||
|
@ -2894,6 +2896,7 @@ int r600_resume(struct radeon_device *rdev)
|
|||
|
||||
int r600_suspend(struct radeon_device *rdev)
|
||||
{
|
||||
radeon_pm_suspend(rdev);
|
||||
r600_audio_fini(rdev);
|
||||
r600_cp_stop(rdev);
|
||||
r600_dma_stop(rdev);
|
||||
|
@ -2970,6 +2973,9 @@ int r600_init(struct radeon_device *rdev)
|
|||
}
|
||||
}
|
||||
|
||||
/* Initialize power management */
|
||||
radeon_pm_init(rdev);
|
||||
|
||||
rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
|
||||
r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);
|
||||
|
||||
|
@ -3002,6 +3008,7 @@ int r600_init(struct radeon_device *rdev)
|
|||
|
||||
void r600_fini(struct radeon_device *rdev)
|
||||
{
|
||||
radeon_pm_fini(rdev);
|
||||
r600_audio_fini(rdev);
|
||||
r600_cp_fini(rdev);
|
||||
r600_dma_fini(rdev);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue