diff options
author | Subrata Banik <subratabanik@google.com> | 2022-01-11 09:51:52 +0000 |
---|---|---|
committer | Subrata Banik <subratabanik@google.com> | 2022-01-13 20:19:37 +0000 |
commit | 0c1c2decde678903f1387ad3056ee8e3c4d24a22 (patch) | |
tree | da41902e7bd5b44bcdac5a6951b5d515adca59d4 /Documentation/getting_started | |
parent | d8bcad594fc142e2ba374e04e311653bd664a803 (diff) |
Documentation: Capture anomalies between pad and lock reset type
This patch documents the recommendation as per Intel GPIO BWG on
GPIO PAD lock configuration.
As per GPIO BWG, it's recommended to change the Pad Reset Config
for lock GPP as `Power Good` so that pad configuration and lock
bit can be reset at the same time.
Refer to Intel doc:630603 for details.
Signed-off-by: Subrata Banik <subratabanik@google.com>
Change-Id: I3faf5dfc28c8c2dbc322db80a59f44a29002673c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61000
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: EricR Lai <ericr_lai@compal.corp-partner.google.com>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
Diffstat (limited to 'Documentation/getting_started')
-rw-r--r-- | Documentation/getting_started/gpio.md | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/Documentation/getting_started/gpio.md b/Documentation/getting_started/gpio.md index 5d5623a5d9..829c41a0fc 100644 --- a/Documentation/getting_started/gpio.md +++ b/Documentation/getting_started/gpio.md @@ -162,6 +162,80 @@ The first is configuring a pin as an output, when it was designed to be an input. There is a real risk in this case of short-circuiting a component which could cause catastrophic failures, up to and including your mainboard! +### Intel SoCs + +As per Intel Platform Controller Hub (PCH) EDS since Skylake, a GPIO PAD register +supports four different types of GPIO reset as: + ++------------------------+----------------+-------------+-------------+ +| | | PAD Reset ? | ++ PAD Reset Config + Platform Reset +-------------+-------------+ +| | | GPP | GPD | ++------------------------+----------------+-------------+-------------+ +| 00 - Power Good | Warm Reset | N | N | +| (GPP: RSMRST, +----------------+-------------+-------------+ +| GPD: DSW_PWROK) | Cold Reset | N | N | +| +----------------+-------------+-------------+ +| | S3/S4/S5 | N | N | +| +----------------+-------------+-------------+ +| | Global Reset | N | N | +| +----------------+-------------+-------------+ +| | Deep Sx | Y | N | +| +----------------+-------------+-------------+ +| | G3 | Y | Y | ++------------------------+----------------+-------------+-------------+ +| 01 - Deep | Warm Reset | Y | Y | +| +----------------+-------------+-------------+ +| | Cold Reset | Y | Y | +| +----------------+-------------+-------------+ +| | S3/S4/S5 | N | N | +| +----------------+-------------+-------------+ +| | Global Reset | Y | Y | +| +----------------+-------------+-------------+ +| | Deep Sx | Y | Y | +| +----------------+-------------+-------------+ +| | G3 | Y | Y | ++------------------------+----------------+-------------+-------------+ +| 10 - Host Reset/PLTRST | Warm Reset | Y | Y | +| +----------------+-------------+-------------+ +| | Cold Reset | Y | Y | +| +----------------+-------------+-------------+ +| | S3/S4/S5 | Y | Y | +| +----------------+-------------+-------------+ +| | Global Reset | Y | Y | +| +----------------+-------------+-------------+ +| | Deep Sx | Y | Y | +| +----------------+-------------+-------------+ +| | G3 | Y | Y | ++------------------------+----------------+-------------+-------------+ +| 11 - Resume Reset | Warm Reset | - | N | +| (GPP: Reserved, +----------------+-------------+-------------+ +| GPD: RSMRST) | Cold Reset | - | N | +| +----------------+-------------+-------------+ +| | S3/S4/S5 | - | N | +| +----------------+-------------+-------------+ +| | Global Reset | - | N | +| +----------------+-------------+-------------+ +| | Deep Sx | - | Y | +| +----------------+-------------+-------------+ +| | G3 | - | Y | ++------------------------+----------------+-------------+-------------+ + +Each GPIO Community has a Pad Configuration Lock register for a GPP allowing locking +specific register fields in the PAD configuration register. + +The Pad Config Lock registers reset type is default hardcoded to **Power Good** and +it's **not** configurable by GPIO PAD DW0.PadRstCfg. Hence, it may appear that for a GPP, +the Pad Reset Config (DW0 Bit 31) is configured differently from `Power Good`. + +This would create confusion where the Pad configuration is returned to its `default` +value but remains `locked`, this would prevent software to reprogram the GPP. +Additionally, this means software can't rely on GPIOs being reset by PLTRST# or Sx entry. + +Hence, as per GPIO BIOS Writers Guide (BWG) it's recommended to change the Pad Reset +Configuration for lock GPP as `Power Good` so that pad configuration and lock bit are +always in sync and can be reset at the same time. + ## Soft Straps Soft straps, that can be configured by the vendor in the Intel Flash Image Tool |