mirror of
https://github.com/torvalds/linux.git
synced 2026-09-28 20:12:01 +02:00
drm/amd/pm/smu7: Fix AC/DC switch notification
There were two mistakes in the previous implementation: The check for AutomaticDCTransition should be inverted. We recently learned that the kernel should send PPSMC_MSG_RunningOnAC when the flag is set, and not the other way around. The clocks also need to be recomputed, because the code in the smu7_apply_state_adjust_rules() function selects different limits on AC and DC. Fixes:96da0d8661("drm/amd/pm/smu7: Notify SMU7 of DC->AC switch") Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit516f8fc30a) Cc: stable@vger.kernel.org
This commit is contained in:
parent
0148ac3354
commit
ec917f19ff
|
|
@ -5857,15 +5857,19 @@ static int smu7_power_off_asic(struct pp_hwmgr *hwmgr)
|
|||
static void smu7_notify_ac_dc(struct pp_hwmgr *hwmgr)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev);
|
||||
const struct amd_pm_funcs *pp_funcs = adev->powerplay.pp_funcs;
|
||||
|
||||
/* Check if the platform already manages the AC/DC switch via dedicated GPIO. */
|
||||
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
|
||||
/*
|
||||
* Check if the platform already manages the AC/DC switch via dedicated GPIO.
|
||||
* Otherwise SMU automatically notices DC, but needs to be notified of AC.
|
||||
*/
|
||||
if (adev->pm.ac_power &&
|
||||
phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
|
||||
PHM_PlatformCaps_AutomaticDCTransition))
|
||||
return;
|
||||
|
||||
/* The SMU automatically notices DC, but needs to be notified when switching to AC. */
|
||||
if (adev->pm.ac_power)
|
||||
smum_send_msg_to_smc(hwmgr, PPSMC_MSG_RunningOnAC, NULL);
|
||||
|
||||
/* Recompute clocks with updated max_limits. */
|
||||
pp_funcs->pm_compute_clocks(adev->powerplay.pp_handle);
|
||||
}
|
||||
|
||||
static const struct pp_hwmgr_func smu7_hwmgr_funcs = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user