From beb0951c1c56e15ac51adc66ccae3b306bd92e9f Mon Sep 17 00:00:00 2001 From: Varun Upadhyay Date: Tue, 23 Sep 2025 20:07:33 +0530 Subject: [PATCH] mb/google/ocelot/var/ojal: Update touchpad config This patch enables ELAN touchpad in devicetree on I2C0 interface and updates FW config for GPIO's according to schematics revision 0.9. Intel RDC kit no:840138 BUG=b:437459757 TEST=Build ojal board and test trackpad functionality Change-Id: Idf84165877e98df31f71c8df916637a455ce84dc Signed-off-by: Varun Upadhyay Reviewed-on: https://review.coreboot.org/c/coreboot/+/89323 Tested-by: build bot (Jenkins) Reviewed-by: Pranava Y N --- .../google/ocelot/variants/ojal/fw_config.c | 28 ++++++++++++++++ .../ocelot/variants/ojal/overridetree.cb | 32 ++++++++++++++----- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/mainboard/google/ocelot/variants/ojal/fw_config.c b/src/mainboard/google/ocelot/variants/ojal/fw_config.c index a658e76542..d374cf1dba 100644 --- a/src/mainboard/google/ocelot/variants/ojal/fw_config.c +++ b/src/mainboard/google/ocelot/variants/ojal/fw_config.c @@ -71,6 +71,28 @@ static const struct pad_config cnvi_disable_pads[] = { PAD_NC(GPP_F05, NONE), }; +static const struct pad_config touchpad_lpss_i2c_enable_pads[] = { + /* GPP_H20: SOC_I2C_0_SCL */ + PAD_CFG_NF(GPP_H20, NONE, DEEP, NF1), + /* GPP_H19: SOC_I2C_0_SDA */ + PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1), + /* GPP_A13: TCH_PAD_INT_N */ + PAD_CFG_GPI_APIC(GPP_A13, NONE, PLTRST, LEVEL, INVERT), + /* GPP_VGPIO3_THC1: THC1_WOT */ + PAD_NC(GPP_VGPIO3_THC1, NONE), +}; + +static const struct pad_config touchpad_i2c_disable_pads[] = { + /* GPP_H20: SOC_I2C_0_SCL */ + PAD_NC(GPP_H20, NONE), + /* GPP_H19: SOC_I2C_0_SDA */ + PAD_NC(GPP_H19, NONE), + /* GPP_A13: TCH_PAD_INT_N */ + PAD_NC(GPP_A13, NONE), + /* GPP_VGPIO3_THC1: THC1_WOT */ + PAD_NC(GPP_VGPIO3_THC1, NONE), +}; + void fw_config_configure_pre_mem_gpio(void) { if (!fw_config_is_provisioned()) { @@ -109,4 +131,10 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) } else if (fw_config_probe(FW_CONFIG(WIFI, WIFI_NONE))) { GPIO_PADBASED_OVERRIDE(padbased_table, cnvi_disable_pads); } + + if (fw_config_probe(FW_CONFIG(TOUCHPAD, TOUCHPAD_LPSS_I2C))) { + GPIO_PADBASED_OVERRIDE(padbased_table, touchpad_lpss_i2c_enable_pads); + } else { + GPIO_PADBASED_OVERRIDE(padbased_table, touchpad_i2c_disable_pads); + } } diff --git a/src/mainboard/google/ocelot/variants/ojal/overridetree.cb b/src/mainboard/google/ocelot/variants/ojal/overridetree.cb index 4394314a24..bf174848ef 100644 --- a/src/mainboard/google/ocelot/variants/ojal/overridetree.cb +++ b/src/mainboard/google/ocelot/variants/ojal/overridetree.cb @@ -56,6 +56,11 @@ chip soc/intel/pantherlake register "tcss_cap_policy[0]" = "TCSS_TYPE_C_PORT_FULL_FUN" register "tcss_cap_policy[1]" = "TCSS_TYPE_C_PORT_FULL_FUN" + #gpe configuration + register "pmc_gpe0_dw0" = "GPP_A" + register "pmc_gpe0_dw1" = "GPP_B" + register "pmc_gpe0_dw2" = "GPP_E" + # Enable EDP in PortA & HDMI in Port B register "ddi_port_A_config" = "1" register "ddi_port_B_config" = "1" @@ -70,7 +75,7 @@ chip soc/intel/pantherlake [PchSerialIoIndexI2C2] = PchSerialIoDisabled, [PchSerialIoIndexI2C3] = PchSerialIoDisabled, [PchSerialIoIndexI2C4] = PchSerialIoDisabled, - [PchSerialIoIndexI2C5] = PchSerialIoPci, + [PchSerialIoIndexI2C5] = PchSerialIoDisabled, }" register "serial_io_gspi_mode" = "{ @@ -90,13 +95,13 @@ chip soc/intel/pantherlake /* Render OEM footer logo 100px above from the edge */ .logo_bottom_margin = 100, .chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT, + .i2c[0] = { + .speed = I2C_SPEED_FAST, + }, .i2c[1] = { - .speed = I2C_SPEED_FAST, - .early_init = 1, - }, - .i2c[5] = { - .speed = I2C_SPEED_FAST, - }, + .speed = I2C_SPEED_FAST, + .early_init = 1, + }, }" device domain 0 on @@ -258,7 +263,18 @@ chip soc/intel/pantherlake probe WIFI WIFI_CNVI_7 end - device ref i2c0 on end + device ref i2c0 on + chip drivers/i2c/generic + register "hid" = ""ELAN0000"" + register "desc" = ""ELAN Touchpad"" + register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_A13_IRQ)" + register "wake" = "GPE0_DW0_13" + register "detect" = "1" + device i2c 15 on + probe TOUCHPAD TOUCHPAD_LPSS_I2C + end + end + end device ref i2c1 on chip drivers/i2c/tpm