mb/google/rauru: Configure the fingerprint pins

There is no powering-on control in the fingerprint kernel driver. The
fingerprint team of ChromeOS suggests powering-on FP MCU in the FW.
Follow trogdor to pull down FP_RST_1V8_S3_L, AP_FP_FW_UP_STRAP,
EN_PWR_FP and pull up EN_PWR_FP in ramstage for power rail to be stable.

BUG=b:340401582
TEST=measure waveform and the fingerprint works on ChromeOS

Change-Id: I05600d90fdf922faeb778a36d8a08f68c1bb4125
Signed-off-by: Yidi Lin <yidilin@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84692
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Yidi Lin <yidilin@google.com>
This commit is contained in:
Yidi Lin 2024-05-17 15:35:54 +08:00 committed by Yu-Ping Wu
commit d96cc8d2df
3 changed files with 17 additions and 0 deletions

View file

@ -7,6 +7,9 @@
void setup_chromeos_gpios(void)
{
gpio_output(GPIO_AP_FP_FW_UP_STRAP, 0);
gpio_output(GPIO_EN_PWR_FP, 0);
gpio_output(GPIO_FP_RST_1V8_S3_L, 0);
gpio_output(GPIO_XHCI_INIT_DONE, 0);
}

View file

@ -6,6 +6,9 @@
#include <soc/gpio.h>
#define GPIO_XHCI_INIT_DONE GPIO(EINT28)
#define GPIO_FP_RST_1V8_S3_L GPIO(EINT26)
#define GPIO_AP_FP_FW_UP_STRAP GPIO(EINT27)
#define GPIO_EN_PWR_FP GPIO(PERIPHERAL_EN3)
void setup_chromeos_gpios(void);

View file

@ -1,11 +1,22 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <device/device.h>
#include <gpio.h>
#include <soc/usb.h>
#include "gpio.h"
static void power_on_fpmcu(void)
{
/* Power on the fingerprint MCU */
gpio_output(GPIO_EN_PWR_FP, 1);
gpio_output(GPIO_FP_RST_1V8_S3_L, 1);
}
static void mainboard_init(struct device *dev)
{
setup_usb_host();
power_on_fpmcu();
}
static void mainboard_enable(struct device *dev)