From 47133a716d70a15a39a550d406e2c1381c0edcf8 Mon Sep 17 00:00:00 2001 From: Zhaoxiong Lv Date: Fri, 16 May 2025 14:51:55 +0800 Subject: [PATCH] mb/google/trulo/var/pujjocento: Add P-sensor support Apply DRIVERS_I2C_SX9324 Apply DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER GPIO changes: GPP_B7 ==> I2C_P_SENSOR_SDA GPP_B8 ==> I2C_P_SENSOR_SCL GPP_H19 ==> P_SENSOR_INT_L BUG=b:417176908 TEST=Build and verify on pujjocento Device list: cat /sys/bus/iio/devices/iio\:device0/name sx9324 The value of register 01 when away: i2cget -f -y 13 0x28 01 0x00 The value of register 01 when approaching: i2cget -f -y 13 0x28 01 0x01 Change-Id: Ie5543f592876c1ebfbb39049f00fe7fe171c8e2f Signed-off-by: Zhaoxiong Lv Reviewed-on: https://review.coreboot.org/c/coreboot/+/87743 Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik Reviewed-by: Eric Lai --- src/mainboard/google/brya/Kconfig | 2 + .../google/brya/variants/pujjocento/gpio.c | 4 +- .../brya/variants/pujjocento/overridetree.cb | 75 ++++++++++++++++++- 3 files changed, 78 insertions(+), 3 deletions(-) diff --git a/src/mainboard/google/brya/Kconfig b/src/mainboard/google/brya/Kconfig index 59895cc839..a02f06f48d 100644 --- a/src/mainboard/google/brya/Kconfig +++ b/src/mainboard/google/brya/Kconfig @@ -516,6 +516,8 @@ config BOARD_GOOGLE_PUJJONIRU config BOARD_GOOGLE_PUJJOCENTO select BOARD_GOOGLE_BASEBOARD_TRULO + select DRIVERS_I2C_SX9324 + select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER select MAINBOARD_HAS_GOOGLE_STRAUSS_KEYBOARD select SOC_INTEL_COMMON_BLOCK_HDA_VERB select SOC_INTEL_TCSS_USE_PDC_PMC_USBC_MUX_CONFIGURATION diff --git a/src/mainboard/google/brya/variants/pujjocento/gpio.c b/src/mainboard/google/brya/variants/pujjocento/gpio.c index efa8249e88..ea8d9bbe2d 100644 --- a/src/mainboard/google/brya/variants/pujjocento/gpio.c +++ b/src/mainboard/google/brya/variants/pujjocento/gpio.c @@ -66,9 +66,9 @@ static const struct pad_config gpio_table[] = { /* B6 : GPP_B6 ==> ISH_I2C0_SENSOR_SDA */ PAD_CFG_NF_IOSTANDBY_IGNORE(GPP_B6, NONE, DEEP, NF1), /* B7 : I2C3_SDA ==> SOC_I2C_SAR_SDA */ - PAD_CFG_NF_LOCK(GPP_B7, NONE, NF2, LOCK_CONFIG), + PAD_CFG_NF(GPP_B7, NONE, DEEP, NF2), /* B8 : I2C3_SCL ==> SOC_I2C_SAR_SCL */ - PAD_CFG_NF_LOCK(GPP_B8, NONE, NF2, LOCK_CONFIG), + PAD_CFG_NF(GPP_B8, NONE, DEEP, NF2), /* B9 : Not available */ PAD_NC(GPP_B9, NONE), /* B10 : Not available */ diff --git a/src/mainboard/google/brya/variants/pujjocento/overridetree.cb b/src/mainboard/google/brya/variants/pujjocento/overridetree.cb index c3753fac6f..68a7526fb7 100644 --- a/src/mainboard/google/brya/variants/pujjocento/overridetree.cb +++ b/src/mainboard/google/brya/variants/pujjocento/overridetree.cb @@ -81,7 +81,7 @@ chip soc/intel/alderlake [PchSerialIoIndexI2C0] = PchSerialIoPci, [PchSerialIoIndexI2C1] = PchSerialIoPci, [PchSerialIoIndexI2C2] = PchSerialIoDisabled, - [PchSerialIoIndexI2C3] = PchSerialIoDisabled, + [PchSerialIoIndexI2C3] = PchSerialIoPci, [PchSerialIoIndexI2C4] = PchSerialIoDisabled, [PchSerialIoIndexI2C5] = PchSerialIoPci, }" @@ -109,6 +109,7 @@ chip soc/intel/alderlake #| | required to set up a BAR | #| | for TPM communication | #| I2C1 | Trackpad | + #| I2C3 | P-sensor | #+-------------------+---------------------------+ register "common_soc_config" = "{ .i2c[0] = { @@ -130,6 +131,15 @@ chip soc/intel/alderlake .sda_hold = 7, } }, + .i2c[3] = { + .speed = I2C_SPEED_FAST, + .speed_config[0] = { + .speed = I2C_SPEED_FAST, + .scl_lcnt = 158, + .scl_hcnt = 79, + .sda_hold = 7, + } + }, .i2c[5] = { .speed = I2C_SPEED_FAST, .speed_config[0] = { @@ -539,6 +549,69 @@ chip soc/intel/alderlake device i2c 24 on end end end #I2C1 + device ref i2c3 on + chip drivers/i2c/sx9324 + register "desc" = ""SAR Proximity Sensor"" + register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_H19_IRQ)" + register "speed" = "I2C_SPEED_FAST" + register "uid" = "1" + register "reg_irq_cfg0" = "0x00" + register "reg_irq_cfg1" = "0x80" + register "reg_irq_cfg2" = "0x00" + register "reg_gnrl_ctrl0" = "0x16" + register "reg_gnrl_ctrl1" = "0x25" + register "reg_afe_ctrl0" = "0x20" + register "reg_afe_ctrl1" = "0x10" + register "reg_afe_ctrl2" = "0x00" + register "reg_afe_ctrl3" = "0x00" + register "reg_afe_ctrl4" = "0x86" + register "reg_afe_ctrl5" = "0x00" + register "reg_afe_ctrl6" = "0x00" + register "reg_afe_ctrl7" = "0x86" + register "reg_afe_ctrl8" = "0x12" + register "reg_afe_ctrl9" = "0x0F" + register "reg_prox_ctrl0" = "0x09" + register "reg_prox_ctrl1" = "0x09" + register "reg_prox_ctrl2" = "0x20" + register "reg_prox_ctrl3" = "0x60" + register "reg_prox_ctrl4" = "0x0c" + register "reg_prox_ctrl5" = "0x00" + register "reg_prox_ctrl6" = "0x2C" + register "reg_prox_ctrl7" = "0xFF" + register "reg_adv_ctrl0" = "0x00" + register "reg_adv_ctrl1" = "0x00" + register "reg_adv_ctrl2" = "0x04" + register "reg_adv_ctrl3" = "0x00" + register "reg_adv_ctrl4" = "0x00" + register "reg_adv_ctrl5" = "0x05" + register "reg_adv_ctrl6" = "0x00" + register "reg_adv_ctrl7" = "0x00" + register "reg_adv_ctrl8" = "0x00" + register "reg_adv_ctrl9" = "0x00" + register "reg_adv_ctrl10" = "0x00" + register "reg_adv_ctrl11" = "0x00" + register "reg_adv_ctrl12" = "0x00" + register "reg_adv_ctrl16" = "0x00" + register "reg_adv_ctrl17" = "0x00" + register "reg_adv_ctrl18" = "0x00" + + register "ph0_pin" = "{3, 1, 3}" + register "ph1_pin" = "{1, 3, 3}" + register "ph2_pin" = "{3, 3, 1}" + register "ph3_pin" = "{3, 3, 3}" + register "ph01_resolution" = "512" + register "ph23_resolution" = "512" + register "startup_sensor" = "1" + register "ph01_proxraw_strength" = "1" + register "ph23_proxraw_strength" = "1" + register "avg_pos_strength" = "256" + register "cs_idle_sleep" = ""gnd"" + register "int_comp_resistor" = ""lowest"" + register "input_precharge_resistor_ohms" = "4000" + register "input_analog_gain" = "3" + device i2c 28 on end + end + end device ref i2c5 on chip drivers/i2c/hid register "generic.hid" = ""FTCS1000""