mb/google/ocelot/var/ocicat: Add wake support for touchscreen

This commit introduces support for touch functionalities on the
ocicat board. Changes include:

- Support for touchscreen devices in THC-I2C
- Wake support from S0ix state for touchscreen
- PMC GPE DW0 is reconfigured to GPP_F for Touchscreen in
variant.c for wake support

BUG=b:444942125
TEST= Build Ocicat and Test wake from S0ix state via touchscreen inputs.

Change-Id: Icf6fb0e170a64a5aec05590450a3bd40ab95cbf3
Signed-off-by: Pierce Chou <chou.pierce@inventec.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90750
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Pranava Y N <pranavayn@google.com>
Reviewed-by: Avi Uday <aviuday@google.com>
This commit is contained in:
Pierce Chou 2026-01-14 10:13:31 +08:00 committed by Matt DeVillier
commit edae16f6f2
2 changed files with 26 additions and 1 deletions

View file

@ -246,6 +246,7 @@ chip soc/intel/pantherlake
device ref thc0 on
register "thc_wake_on_touch[0]" = "true"
register "thc_mode[0]" = "THC_HID_I2C_MODE"
# THC0 is function 0; hence it needs to be enabled when THC1 is to be enabled.
chip drivers/intel/touch
register "name" = "INTEL_THC0_NAME"
@ -265,6 +266,7 @@ chip soc/intel/pantherlake
end
device ref thc1 on
register "thc_wake_on_touch[1]" = "true"
register "thc_mode[1]" = "THC_HID_I2C_MODE"
chip drivers/intel/touch
register "name" = "INTEL_THC1_NAME"
register "mode" = "THC_HID_I2C_MODE"
@ -273,7 +275,7 @@ chip soc/intel/pantherlake
register "wake_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW_WAKE(GPP_VGPIO3_THC1)"
register "active_ltr" = "1"
register "idle_ltr" = "0"
register "connected_device" = "TH_SENSOR_HYNITRON"
register "connected_device" = "TH_SENSOR_ELAN"
register "add_acpi_dma_property" = "true"
device generic 0 alias touch_1_i2c_hynitron on end
end
@ -434,6 +436,8 @@ chip soc/intel/pantherlake
register "generic.hid" = ""ELAN2513""
register "generic.desc" = ""ELAN Touchscreen""
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_F18_IRQ)"
# NOTE: pmc_gpe0_dw0 will be overridden to GPP_F in variant.c.
register "generic.wake" = "GPE0_DW0_18"
register "generic.detect" = "1"
register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_F16)"
register "generic.reset_delay_ms" = "20"
@ -454,6 +458,8 @@ chip soc/intel/pantherlake
register "generic.hid" = ""ELAN2513""
register "generic.desc" = ""ELAN Touchscreen""
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_F18_IRQ)"
# NOTE: pmc_gpe0_dw0 will be overridden to GPP_F in variant.c.
register "generic.wake" = "GPE0_DW0_18"
register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_F16)"
register "generic.reset_delay_ms" = "20"
register "generic.reset_off_delay_ms" = "2"

View file

@ -15,6 +15,25 @@ const char *get_wifi_sar_cbfs_filename(void)
return get_wifi_sar_fw_config_filename(FW_CONFIG_FIELD(WIFI_INTERFACE));
}
void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config)
{
/* Touchscreen and Touchpad WOT support:
* +===================+==================+=================+========================+
* | Touchscreen | Touchpad | PMC_GPE0_DW0 | WOT |
* +===================+==================+=================+========================+
* | THC-SPI/THC-I2C | THC-I2C | VGPIO | TS, TP |
* +===================+==================+=================+========================+
* | THC-SPI/THC-I2C | LPSS-I2C | GPP_F18 | TP |
* +===================+==================+=================+========================+
*/
config->thc_mode[0] = THC_HID_I2C_MODE;
config->thc_mode[1] = THC_HID_I2C_MODE;
/* touchscreen: GPP_F18: GPE0_DW0_18 */
config->pmc_gpe0_dw0 = GPP_F;
}
void variant_update_soc_memory_init_params(FSPM_UPD *memupd)
{
FSP_M_CONFIG *m_cfg = &memupd->FspmConfig;