Keith Short has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/30937
Change subject: src/mainboard/google/sarien: query recovery mode from Cr50 ......................................................................
src/mainboard/google/sarien: query recovery mode from Cr50
On the Sarien/Arcada platforms, the EC is not trusted to provide the state of the ESC+REFRESH+PWR recovery combination. On these platforms the Cr50 latches the state of REFRESH+PWR for use as the recovery mode key combination.
BUG=b:122715254 BRANCH=none TEST=Verify recovery mode screen shown after pressing REFRESH+PWR Change-Id: If336e9d7016987be151ab30d5c037ead3a998fe0 Signed-off-by: Keith Short keithshort@chromium.org --- M src/mainboard/google/sarien/chromeos.c 1 file changed, 12 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/37/30937/1
diff --git a/src/mainboard/google/sarien/chromeos.c b/src/mainboard/google/sarien/chromeos.c index 33647df..f1da3bb 100644 --- a/src/mainboard/google/sarien/chromeos.c +++ b/src/mainboard/google/sarien/chromeos.c @@ -20,6 +20,8 @@ #include <soc/gpio.h> #include <variant/gpio.h> #include <vendorcode/google/chromeos/chromeos.h> +#include <security/tpm/tss.h> +
void fill_lb_gpios(struct lb_gpios *gpios) { @@ -71,7 +73,16 @@
int get_recovery_mode_switch(void) { - return cros_get_gpio_value(CROS_GPIO_REC); + uint8_t recovery_button_state; + int recovery_mode_switch = 0; + + if (cros_get_gpio_value(CROS_GPIO_REC)) + recovery_mode_switch = 1; + else if (tlcl_cr50_get_recovery_button(&recovery_button_state) + == TPM_SUCCESS) + recovery_mode_switch = recovery_button_state; + + return recovery_mode_switch; }
int get_lid_switch(void)