mb/google/hatch: Re-configure GPP_A12 as GPO before entering sleep

GPP_A12 has a Native3 (SX_EXIT_HOLDOFF#) mode, which allows to delay
resuming to S0. If this pad is not locked and platform was not initially
designed for this functionality, malware could reconfigure this pads
setting under OS (switch to Native3), which would make platform not able
to resume until G3 is applied. To prevent misuse of this pad,
re-configure this pad before entering S3 and S5 to guarantee that the
pad configuration is correct.

BUG=b:128686027

Change-Id: I1e7979baa491acf2c56d223afb4618f0f6429e37
Signed-off-by: Krishna Prasad Bhat <krishna.p.bhat.d@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/32111
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
Krishna Prasad Bhat 2019-03-28 23:09:24 +05:30 committed by Patrick Georgi
parent 51c8532c6b
commit c41b0e8ea3
1 changed files with 6 additions and 1 deletions

View File

@ -411,8 +411,12 @@ const struct pad_config *__weak variant_gpio_table(size_t *num)
return gpio_table; return gpio_table;
} }
/* Default GPIO settings before entering sleep. */ /*
* Default GPIO settings before entering sleep. Configure A12: FPMCU_RST_ODL
* as GPO before entering sleep.
*/
static const struct pad_config default_sleep_gpio_table[] = { static const struct pad_config default_sleep_gpio_table[] = {
PAD_CFG_GPO(GPP_A12, 1, DEEP), /* FPMCU_RST_ODL */
}; };
/* /*
@ -421,6 +425,7 @@ static const struct pad_config default_sleep_gpio_table[] = {
* turn off EN_PP3300_WWAN. * turn off EN_PP3300_WWAN.
*/ */
static const struct pad_config s5_sleep_gpio_table[] = { static const struct pad_config s5_sleep_gpio_table[] = {
PAD_CFG_GPO(GPP_A12, 1, DEEP), /* FPMCU_RST_ODL */
PAD_CFG_GPO(GPP_A18, 0, DEEP), /* EN_PP3300_WWAN */ PAD_CFG_GPO(GPP_A18, 0, DEEP), /* EN_PP3300_WWAN */
}; };