diff options
author | Julius Werner <jwerner@chromium.org> | 2021-02-10 14:25:21 -0800 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2021-02-12 22:17:53 +0000 |
commit | a39c5772572dff6f324ef5437d36223afa0f7f69 (patch) | |
tree | 2c83e3a1bb2baa525dea5ebc568345b10a25e814 /src/mainboard/google/trogdor/romstage.c | |
parent | 43ccd6a4ad09343dd914b9f4beb904768e191e74 (diff) | |
download | coreboot-a39c5772572dff6f324ef5437d36223afa0f7f69.tar.gz coreboot-a39c5772572dff6f324ef5437d36223afa0f7f69.tar.bz2 coreboot-a39c5772572dff6f324ef5437d36223afa0f7f69.zip |
trogdor: Add fingerprint power sequencing
Some Trogdor variants will include a fingerprint sensor, so this patch
adds support for its power sequencing. There is a requirement that the
fingerprint power needs to be *off* for at least 200ms, and when it is
turned back on it needs to stabilize for at least 3.5ms before taking
the FPMCU out of reset. We meet these timing requirements by splitting
the sequence across bootblock, romstage and ramstage. On current Trogdor
boards we measured <end of bootblock> to <end of romstage> at ~430ms and
<end of romstage> to <start of ramstage> at 12ms, so we easily meet the
required numbers this way.
BRANCH=trogdor
BUG=b:170284663
Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: Iccd77e6e1c378110fca2b2b7ff1f534fce54f8ea
Reviewed-on: https://review.coreboot.org/c/coreboot/+/50504
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Shelley Chen <shchen@google.com>
Diffstat (limited to 'src/mainboard/google/trogdor/romstage.c')
-rw-r--r-- | src/mainboard/google/trogdor/romstage.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mainboard/google/trogdor/romstage.c b/src/mainboard/google/trogdor/romstage.c index 8b6f1dec8da8..e110460a1b44 100644 --- a/src/mainboard/google/trogdor/romstage.c +++ b/src/mainboard/google/trogdor/romstage.c @@ -5,6 +5,8 @@ #include <soc/qclib_common.h> #include <soc/watchdog.h> +#include "board.h" + static void prepare_usb(void) { /* @@ -22,4 +24,10 @@ void platform_romstage_main(void) /* QCLib: DDR init & train */ qclib_load_and_run(); + + /* This rail needs to be stable by the time we take the FPMCU out of + reset in ramstage, so already turn it on here. This needs to happen + at least 200ms after this pin was first driven low in the bootblock. */ + if (CONFIG(TROGDOR_HAS_FINGERPRINT)) + gpio_output(GPIO_EN_FP_RAILS, 1); } |