summaryrefslogtreecommitdiff
path: root/src/mainboard/google
diff options
context:
space:
mode:
authorMartin Roth <martinroth@chromium.org>2020-10-30 16:43:31 -0600
committerPaul Fagerburg <pfagerburg@chromium.org>2020-11-17 16:54:16 +0000
commitd5c3d9ca82c89830f33ec62dcb15c50ca9ae2523 (patch)
tree67fe7b48d3febc183485a401f0af5d6424907430 /src/mainboard/google
parent6aaf7db7195659fd2484d60a457275c7eb4b14c7 (diff)
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>
Diffstat (limited to 'src/mainboard/google')
-rw-r--r--src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c b/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c
index 9e980dbe8b..14b85b0da9 100644
--- a/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c
+++ b/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c
@@ -350,8 +350,25 @@ static const struct soc_amd_gpio gpio_sleep_table[] = {
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)
{
+ if (slp_typ == SLP_TYP_S5) {
+ *size = ARRAY_SIZE(gpio_fp_shutdown_table);
+ return gpio_fp_shutdown_table;
+ }
+
*size = ARRAY_SIZE(gpio_sleep_table);
return gpio_sleep_table;
}