Revert "soc/intel/adl: Drop SGPM, RGPM and EGPM methods"

This reverts commit 1399442289.

Reason for revert:
Some Cr50 chips with old firmware version (x.y.22) don't support
long pulse interrupt command, requiring dynamic GPIO PM to be disabled
to intercept short pulse interrupt.

Due to this coreboot needs to expose SGPM, RGPM and EGPM ACPI methods
to support power gating of GPIO communities from the kernel when dynamic
GPIO PM is disabled.

BUG=b:204832081
BRANCH=None
Test= S0ix works with dynamic PM disabled.

Signed-off-by: Maulik V Vaghela <maulik.v.vaghela@intel.com>
Change-Id: I2b5b00878062f8a499641d7a47db54ed078cd6cf
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58811
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Scott Chao <scott_chao@wistron.corp-partner.google.com>
Reviewed-by: Subrata Banik <subrata.banik@intel.com>
This commit is contained in:
Maulik V Vaghela 2021-11-08 07:53:37 +00:00 committed by Tim Wawrzynczak
parent d16a085110
commit 85d9f47014
1 changed files with 41 additions and 0 deletions

View File

@ -137,3 +137,44 @@ Method (GPID, 1, Serialized)
Return (Local0)
}
/* GPIO Power Management bits */
Name(GPMB, Package(TOTAL_GPIO_COMM) {0, 0, 0, 0, 0, 0})
/*
* Save GPIO Power Management bits
*/
Method (SGPM, 0, Serialized)
{
For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++)
{
Local1 = GPID (Local0)
GPMB[Local0] = PCRR (Local1, GPIO_MISCCFG)
}
}
/*
* Restore GPIO Power Management bits
*/
Method (RGPM, 0, Serialized)
{
For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++)
{
CGPM (Local0, DerefOf(GPMB[Local0]))
}
}
/*
* Save current setting of GPIO Power Management bits and
* enable all Power Management bits for all communities
*/
Method (EGPM, 0, Serialized)
{
/* Save current setting and will restore it when resuming */
SGPM ()
/* Enable PM bits */
For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++)
{
CGPM (Local0, MISCCFG_GPIO_PM_CONFIG_BITS)
}
}