mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
platform/x86/amd/pmc: Check for intermediate wakeup in function
Refactor code introduced by commit 9f5595d5f0 ("pmc: Require at
least 2.5 seconds between HW sleep cycles") to allow adding different
conditions for that delay in an upcoming change.
Signed-off-by: Daniel Gibson <daniel@gibson.sh>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260611150426.3683372-2-daniel@gibson.sh
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
01ffffc4d0
commit
3bdd6fc11f
|
|
@ -670,6 +670,19 @@ static int amd_pmc_verify_czn_rtc(struct amd_pmc_dev *pdev, u32 *arg)
|
|||
return rc;
|
||||
}
|
||||
|
||||
static bool amd_pmc_intermediate_wakeup_need_delay(struct amd_pmc_dev *pdev)
|
||||
{
|
||||
/*
|
||||
* Starting a new HW sleep cycle right after waking from one
|
||||
* can cause electrical problems triggering the over voltage protection.
|
||||
* That is avoided by delaying the next suspend a bit, see also
|
||||
* https://lore.kernel.org/all/20250414162446.3853194-1-superm1@kernel.org/
|
||||
*/
|
||||
struct smu_metrics table;
|
||||
|
||||
return get_metrics_table(pdev, &table) == 0 && table.s0i3_last_entry_status;
|
||||
}
|
||||
|
||||
static void amd_pmc_s2idle_prepare(void)
|
||||
{
|
||||
struct amd_pmc_dev *pdev = &pmc;
|
||||
|
|
@ -702,11 +715,9 @@ static void amd_pmc_s2idle_prepare(void)
|
|||
static void amd_pmc_s2idle_check(void)
|
||||
{
|
||||
struct amd_pmc_dev *pdev = &pmc;
|
||||
struct smu_metrics table;
|
||||
int rc;
|
||||
|
||||
/* Avoid triggering OVP */
|
||||
if (!get_metrics_table(pdev, &table) && table.s0i3_last_entry_status)
|
||||
if (amd_pmc_intermediate_wakeup_need_delay(pdev))
|
||||
msleep(2500);
|
||||
|
||||
/* Dump the IdleMask before we add to the STB */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user