From ec2875e38f0d376375c6ddfcb2fe84b81453d076 Mon Sep 17 00:00:00 2001 From: Varun Upadhyay Date: Wed, 24 Sep 2025 09:42:15 +0530 Subject: [PATCH] mb/google/ocelot/var/ojal: Enable FPS and update FW config This patch enables fingerprint sensor in devicetree for ojal and updates FW config for GPIO's config according to schematics revision 0.9. RDC kit no:840138 BUG=b:437459757 TEST=Build ojal board and check dmesg for FPS detection. Change-Id: I44a24423f4d5b1fc85a5b3bb51f2d6646c82f9dc Signed-off-by: Varun Upadhyay Reviewed-on: https://review.coreboot.org/c/coreboot/+/89324 Reviewed-by: Pranava Y N Tested-by: build bot (Jenkins) --- .../google/ocelot/variants/ojal/fw_config.c | 48 +++++++++++++++++++ .../ocelot/variants/ojal/overridetree.cb | 17 +++++++ 2 files changed, 65 insertions(+) diff --git a/src/mainboard/google/ocelot/variants/ojal/fw_config.c b/src/mainboard/google/ocelot/variants/ojal/fw_config.c index d374cf1dba..36bc5183a9 100644 --- a/src/mainboard/google/ocelot/variants/ojal/fw_config.c +++ b/src/mainboard/google/ocelot/variants/ojal/fw_config.c @@ -93,6 +93,45 @@ static const struct pad_config touchpad_i2c_disable_pads[] = { PAD_NC(GPP_VGPIO3_THC1, NONE), }; +static const struct pad_config fp_disable_pads[] = { + /* GPP_C15: FPS_RST_N */ + PAD_NC(GPP_C15, NONE), + /* GPP_E19: FPS_SOC_INT_L */ + PAD_NC(GPP_E19, NONE), + /* GPP_E20: FPMCU_FW_UPDATE */ + PAD_NC(GPP_E20, NONE), + /* GPP_F14: GPP_F14_GPSI0A_MOSI */ + PAD_NC(GPP_F14, NONE), + /* GPP_F15: GPP_F15_GSPI0A_MISO */ + PAD_NC(GPP_F15, NONE), + /* GPP_F16: GPP_F16_GPSI0A_CLK */ + PAD_NC(GPP_F16, NONE), + /* GPP_F18: GPP_F18_GSPI0_CS0 */ + PAD_NC(GPP_F18, NONE), +}; + +static const struct pad_config fp_enable_pads[] = { + /* GPP_C15: FPS_RST_N */ + PAD_CFG_GPO_LOCK(GPP_C15, 1, LOCK_CONFIG), + /* GPP_E19: FPS_SOC_INT_L */ + PAD_CFG_GPI_IRQ_WAKE(GPP_E19, NONE, PWROK, LEVEL, INVERT), + /* GPP_E20: FPMCU_FW_UPDATE */ + PAD_CFG_GPO_LOCK(GPP_E20, 0, LOCK_CONFIG), + /* GPP_F14: GPP_F14_GPSI0A_MOSI */ + PAD_CFG_NF(GPP_F14, NONE, DEEP, NF8), + /* GPP_F15: GPP_F15_GSPI0A_MISO */ + PAD_CFG_NF(GPP_F15, NONE, DEEP, NF8), + /* GPP_F16: GPP_F16_GPSI0A_CLK */ + PAD_CFG_NF(GPP_F16, NONE, DEEP, NF8), + /* GPP_F18: GPP_F18_GSPI0_CS0 */ + PAD_CFG_NF(GPP_F18, NONE, DEEP, NF8), +}; + +static const struct pad_config pre_mem_fp_enable_pads[] = { + /* GPP_C15: FPS_RST_N */ + PAD_CFG_GPO(GPP_C15, 0, DEEP), +}; + void fw_config_configure_pre_mem_gpio(void) { if (!fw_config_is_provisioned()) { @@ -105,6 +144,9 @@ void fw_config_configure_pre_mem_gpio(void) } else if (fw_config_probe(FW_CONFIG(STORAGE, STORAGE_UNKNOWN))) { GPIO_CONFIGURE_PADS(pre_mem_gen4_ssd_pwr_pads); } + + if (fw_config_probe(FW_CONFIG(FP, FP_PRESENT))) + GPIO_CONFIGURE_PADS(pre_mem_fp_enable_pads); } void fw_config_gpio_padbased_override(struct pad_config *padbased_table) @@ -137,4 +179,10 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) } else { GPIO_PADBASED_OVERRIDE(padbased_table, touchpad_i2c_disable_pads); } + + if (fw_config_probe(FW_CONFIG(FP, FP_PRESENT))) { + GPIO_PADBASED_OVERRIDE(padbased_table, fp_enable_pads); + } else { + GPIO_PADBASED_OVERRIDE(padbased_table, fp_disable_pads); + } } diff --git a/src/mainboard/google/ocelot/variants/ojal/overridetree.cb b/src/mainboard/google/ocelot/variants/ojal/overridetree.cb index bf174848ef..641acbf9ea 100644 --- a/src/mainboard/google/ocelot/variants/ojal/overridetree.cb +++ b/src/mainboard/google/ocelot/variants/ojal/overridetree.cb @@ -284,6 +284,23 @@ chip soc/intel/pantherlake end end + device ref gspi0 on + chip drivers/spi/acpi + register "name" = ""CRFP"" + register "hid" = "ACPI_DT_NAMESPACE_HID" + register "uid" = "1" + register "compat_string" = ""google,cros-ec-spi"" + register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_E19_IRQ)" + register "wake" = "GPE0_DW2_19" + register "has_power_resource" = "true" + register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C15)" + register "enable_delay_ms" = "3" + device spi 0 on + probe FP FP_PRESENT + end + end # FPMCU + end + device ref smbus on end end end