|
@@ -1697,7 +1697,7 @@ static void cik_srbm_select(struct radeon_device *rdev,
|
|
|
* Load the GDDR MC ucode into the hw (CIK).
|
|
|
* Returns 0 on success, error on failure.
|
|
|
*/
|
|
|
-static int ci_mc_load_microcode(struct radeon_device *rdev)
|
|
|
+int ci_mc_load_microcode(struct radeon_device *rdev)
|
|
|
{
|
|
|
const __be32 *fw_data;
|
|
|
u32 running, blackout = 0;
|
|
@@ -7501,7 +7501,7 @@ static int cik_startup(struct radeon_device *rdev)
|
|
|
|
|
|
cik_mc_program(rdev);
|
|
|
|
|
|
- if (!(rdev->flags & RADEON_IS_IGP)) {
|
|
|
+ if (!(rdev->flags & RADEON_IS_IGP) && !rdev->pm.dpm_enabled) {
|
|
|
r = ci_mc_load_microcode(rdev);
|
|
|
if (r) {
|
|
|
DRM_ERROR("Failed to load MC firmware!\n");
|
|
@@ -7710,6 +7710,8 @@ int cik_resume(struct radeon_device *rdev)
|
|
|
/* init golden registers */
|
|
|
cik_init_golden_registers(rdev);
|
|
|
|
|
|
+ radeon_pm_resume(rdev);
|
|
|
+
|
|
|
rdev->accel_working = true;
|
|
|
r = cik_startup(rdev);
|
|
|
if (r) {
|
|
@@ -7733,6 +7735,7 @@ int cik_resume(struct radeon_device *rdev)
|
|
|
*/
|
|
|
int cik_suspend(struct radeon_device *rdev)
|
|
|
{
|
|
|
+ radeon_pm_suspend(rdev);
|
|
|
dce6_audio_fini(rdev);
|
|
|
radeon_vm_manager_fini(rdev);
|
|
|
cik_cp_enable(rdev, false);
|
|
@@ -7835,6 +7838,9 @@ int cik_init(struct radeon_device *rdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /* Initialize power management */
|
|
|
+ radeon_pm_init(rdev);
|
|
|
+
|
|
|
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
|
|
ring->ring_obj = NULL;
|
|
|
r600_ring_init(rdev, ring, 1024 * 1024);
|
|
@@ -7915,6 +7921,7 @@ int cik_init(struct radeon_device *rdev)
|
|
|
*/
|
|
|
void cik_fini(struct radeon_device *rdev)
|
|
|
{
|
|
|
+ radeon_pm_fini(rdev);
|
|
|
cik_cp_fini(rdev);
|
|
|
cik_sdma_fini(rdev);
|
|
|
cik_fini_pg(rdev);
|