mb/google/zork: Power off fingerprint sensor on shutdown

When the system shuts down, turn the fingerprint sensor off. This sets
the GPIOs correctly for the next boot.  The fingerprint sensor was
previously left on, and was just powering down when the rails went low.

On suspend, the fingerprint sensor stays awake and puts itself in a low
powerstate mode based on the SLP_Sx_L pin states.

BUG=b:171837716
TEST=Fingerprint sensor still works after S3, GPIO state on the boot
following a shutdown is low.
BRANCH=Zork

Signed-off-by: Martin Roth <martinroth@chromium.org>
Change-Id: I3837b58372d8f4a504535e76bd21c667d68f8995
Reviewed-on: https://review.coreboot.org/c/coreboot/+/47311
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Martin Roth 2020-10-30 16:43:31 -06:00 committed by Paul Fagerburg
parent 6aaf7db719
commit d5c3d9ca82
1 changed files with 17 additions and 0 deletions

View File

@ -350,8 +350,25 @@ static const struct soc_amd_gpio gpio_sleep_table[] = {
PAD_GPO(GPIO_76, LOW), PAD_GPO(GPIO_76, LOW),
}; };
static const struct soc_amd_gpio gpio_fp_shutdown_table[] = {
/* NVME_AUX_RESET_L */
PAD_GPO(GPIO_40, LOW),
/* EN_PWR_CAMERA */
PAD_GPO(GPIO_76, LOW),
/* FPMCU_RST_L */
PAD_GPO(GPIO_11, LOW),
/* EN_PWR_FP */
PAD_GPO(GPIO_32, LOW),
};
const __weak struct soc_amd_gpio *variant_sleep_gpio_table(size_t *size, int slp_typ) const __weak struct soc_amd_gpio *variant_sleep_gpio_table(size_t *size, int slp_typ)
{ {
if (slp_typ == SLP_TYP_S5) {
*size = ARRAY_SIZE(gpio_fp_shutdown_table);
return gpio_fp_shutdown_table;
}
*size = ARRAY_SIZE(gpio_sleep_table); *size = ARRAY_SIZE(gpio_sleep_table);
return gpio_sleep_table; return gpio_sleep_table;
} }