summaryrefslogtreecommitdiff
path: root/src/mainboard/google
diff options
context:
space:
mode:
authorYidi Lin <yidilin@chromium.org>2024-05-17 15:35:54 +0800
committerYu-Ping Wu <yupingso@google.com>2024-10-19 04:37:10 +0000
commitd96cc8d2df38d1850e38da909cb7e00c2d6c50a4 (patch)
treeff7e2a271299b0d1a78fbe96ad8ed9319a21fd92 /src/mainboard/google
parentf789d41539a72d71bad97ce5e19566a05a952244 (diff)
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>
Diffstat (limited to 'src/mainboard/google')
-rw-r--r--src/mainboard/google/rauru/chromeos.c3
-rw-r--r--src/mainboard/google/rauru/gpio.h3
-rw-r--r--src/mainboard/google/rauru/mainboard.c11
3 files changed, 17 insertions, 0 deletions
diff --git a/src/mainboard/google/rauru/chromeos.c b/src/mainboard/google/rauru/chromeos.c
index b6aaefbead..35bbcd67f0 100644
--- a/src/mainboard/google/rauru/chromeos.c
+++ b/src/mainboard/google/rauru/chromeos.c
@@ -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);
}
diff --git a/src/mainboard/google/rauru/gpio.h b/src/mainboard/google/rauru/gpio.h
index f05a3779fe..9d0c722a65 100644
--- a/src/mainboard/google/rauru/gpio.h
+++ b/src/mainboard/google/rauru/gpio.h
@@ -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);
diff --git a/src/mainboard/google/rauru/mainboard.c b/src/mainboard/google/rauru/mainboard.c
index 195ce67e5a..f15dd312f0 100644
--- a/src/mainboard/google/rauru/mainboard.c
+++ b/src/mainboard/google/rauru/mainboard.c
@@ -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)