Skip to content

Commit

Permalink
drm/radeon/sumo: disable PG when changing UVD clocks
Browse files Browse the repository at this point in the history
Causes hangs for some people.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Alex Deucher committed Jul 3, 2013
1 parent 0124853 commit 2b90edd
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions drivers/gpu/drm/radeon/sumo_dpm.c
Original file line number Diff line number Diff line change
Expand Up @@ -811,6 +811,23 @@ static void sumo_program_bootup_state(struct radeon_device *rdev)
sumo_power_level_enable(rdev, i, false);
}

static void sumo_setup_uvd_clocks(struct radeon_device *rdev,
struct radeon_ps *new_rps,
struct radeon_ps *old_rps)
{
struct sumo_power_info *pi = sumo_get_pi(rdev);

if (pi->enable_gfx_power_gating) {
sumo_gfx_powergating_enable(rdev, false);
}

radeon_set_uvd_clocks(rdev, new_rps->vclk, new_rps->dclk);

if (pi->enable_gfx_power_gating) {
sumo_gfx_powergating_enable(rdev, true);
}
}

static void sumo_set_uvd_clock_before_set_eng_clock(struct radeon_device *rdev,
struct radeon_ps *new_rps,
struct radeon_ps *old_rps)
Expand All @@ -826,7 +843,7 @@ static void sumo_set_uvd_clock_before_set_eng_clock(struct radeon_device *rdev,
current_ps->levels[current_ps->num_levels - 1].sclk)
return;

radeon_set_uvd_clocks(rdev, new_rps->vclk, new_rps->dclk);
sumo_setup_uvd_clocks(rdev, new_rps, old_rps);
}

static void sumo_set_uvd_clock_after_set_eng_clock(struct radeon_device *rdev,
Expand All @@ -844,7 +861,7 @@ static void sumo_set_uvd_clock_after_set_eng_clock(struct radeon_device *rdev,
current_ps->levels[current_ps->num_levels - 1].sclk)
return;

radeon_set_uvd_clocks(rdev, new_rps->vclk, new_rps->dclk);
sumo_setup_uvd_clocks(rdev, new_rps, old_rps);
}

void sumo_take_smu_control(struct radeon_device *rdev, bool enable)
Expand Down

0 comments on commit 2b90edd

Please sign in to comment.