diff options
author | Subrata Banik <subrata.banik@intel.com> | 2021-03-25 20:01:47 +0530 |
---|---|---|
committer | Subrata Banik <subrata.banik@intel.com> | 2021-03-27 04:23:12 +0000 |
commit | 2ccc0a4d9fc91a57e1dec8913e6d999402e927a2 (patch) | |
tree | ef7fd8df9392e99315651d5d45dcf9f975ef3c39 /src/soc/intel/cannonlake | |
parent | 299ee183c49d22cc90b4289789d8bb6d66145b97 (diff) |
soc/intel: Rename and move MISCCFG_GPIO_PM_CONFIG_BITS definition to soc/gpio.h
Lists of changes:
1. Rename MISCCFG_ENABLE_GPIO_PM_CONFIG -> MISCCFG_GPIO_PM_CONFIG_BITS
2. Move MISCCFG_GPIO_PM_CONFIG_BITS definition from intelblock/gpio.h to
soc/gpio.h. Refer to detailed description below to understand the
motivation behind this change.
An advanced GPIO PM capabilities has been introduced since CNP PCH,
refer to 'include/intelblock/gpio.h' for detailed GPIO PM bit definitions.
Now with TGP PCH, additional bits are defined in the MISCCFG register
for GPIO PM control. This results in different SoCs supporting
different number of bits. The bits defined in earlier platforms
(CNL, CML, ICL) are present on TGL, JSL and ADL too. Hence, refactor the
common GPIO code to keep the bit definitions in intelblock/gpio.h, but
the definition of MISCCFG_GPIO_PM_CONFIG_BITS is moved to soc/gpio.h so
that each SoC can provide this as per hardware support.
TEST=On ADL, TGL and JSL platform.
Without this CL :
GPIO COMM 0 MISCCFG:0xC0 (Bit 6 and 7 enable)
With this CL :
GPIO COMM 0 MISCCFG: 0x00 (Bit 6 and 7 disable)
Change-Id: Ie027cbd7b99b39752941384339a34f8995c10c94
Signed-off-by: Subrata Banik <subrata.banik@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/51767
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src/soc/intel/cannonlake')
-rw-r--r-- | src/soc/intel/cannonlake/acpi/gpio.asl | 6 | ||||
-rw-r--r-- | src/soc/intel/cannonlake/gpio_common.c | 2 | ||||
-rw-r--r-- | src/soc/intel/cannonlake/include/soc/gpio.h | 5 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/soc/intel/cannonlake/acpi/gpio.asl b/src/soc/intel/cannonlake/acpi/gpio.asl index f1284e1412..7776acc553 100644 --- a/src/soc/intel/cannonlake/acpi/gpio.asl +++ b/src/soc/intel/cannonlake/acpi/gpio.asl @@ -138,9 +138,9 @@ Method (CGPM, 2, Serialized) Store (GPID (Arg0), Local0) If (LNotEqual (Local0, 0)) { /* Mask off current PM bits */ - PCRA (Local0, GPIO_MISCCFG, Not (MISCCFG_ENABLE_GPIO_PM_CONFIG)) + PCRA (Local0, GPIO_MISCCFG, Not (MISCCFG_GPIO_PM_CONFIG_BITS)) /* Mask in requested bits */ - PCRO (Local0, GPIO_MISCCFG, And (Arg1, MISCCFG_ENABLE_GPIO_PM_CONFIG)) + PCRO (Local0, GPIO_MISCCFG, And (Arg1, MISCCFG_GPIO_PM_CONFIG_BITS)) } } @@ -181,6 +181,6 @@ Method (EGPM, 0, Serialized) /* Enable PM bits */ For (Local0 = 0, Local0 < TOTAL_GPIO_COMM, Local0++) { - CGPM (Local0, MISCCFG_ENABLE_GPIO_PM_CONFIG) + CGPM (Local0, MISCCFG_GPIO_PM_CONFIG_BITS) } } diff --git a/src/soc/intel/cannonlake/gpio_common.c b/src/soc/intel/cannonlake/gpio_common.c index 45331ec822..21a5801648 100644 --- a/src/soc/intel/cannonlake/gpio_common.c +++ b/src/soc/intel/cannonlake/gpio_common.c @@ -17,7 +17,7 @@ void soc_gpio_pm_configuration(void) memcpy(value, config->gpio_pm, sizeof(uint8_t) * TOTAL_GPIO_COMM); else - memset(value, MISCCFG_ENABLE_GPIO_PM_CONFIG, sizeof(uint8_t) * + memset(value, MISCCFG_GPIO_PM_CONFIG_BITS, sizeof(uint8_t) * TOTAL_GPIO_COMM); gpio_pm_configure(value, TOTAL_GPIO_COMM); diff --git a/src/soc/intel/cannonlake/include/soc/gpio.h b/src/soc/intel/cannonlake/include/soc/gpio.h index b39798e96d..9ffa8f1bc2 100644 --- a/src/soc/intel/cannonlake/include/soc/gpio.h +++ b/src/soc/intel/cannonlake/include/soc/gpio.h @@ -12,6 +12,11 @@ #endif #include <intelblocks/gpio.h> +/* Enable GPIO community power management configuration */ +#define MISCCFG_GPIO_PM_CONFIG_BITS (MISCCFG_GPSIDEDPCGEN | \ + MISCCFG_GPRCOMPCDLCGEN | MISCCFG_GPRTCDLCGEN | MISCCFG_GSXSLCGEN \ + | MISCCFG_GPDPCGEN | MISCCFG_GPDLCGEN) + #ifndef __ACPI__ struct pad_config; void cnl_configure_pads(const struct pad_config *cfg, size_t num_pads); |