EricR Lai has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/32438
Change subject: mb/google/sarein: Disable touch by strap pin GPP_B4 ......................................................................
mb/google/sarein: Disable touch by strap pin GPP_B4
We want to disable touch for none touch sku. We can use strap pin GPP_B4 to identify it is connected with touch or not. If GPP_B4 is low level that means touch sku. If GPP_B4 is high level that means none-touch sku.
BUG=b:131132419 TEST=boot up and check no touch device exist
Signed-off-by: Eric Lai ericr_lai@compal.corp-partner.google.com Change-Id: If6681262c25e4b01e061a8520e38905d40345509 --- M src/drivers/i2c/hid/hid.c M src/mainboard/google/sarien/variants/sarien/devicetree.cb 2 files changed, 21 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/38/32438/1
diff --git a/src/drivers/i2c/hid/hid.c b/src/drivers/i2c/hid/hid.c index d570892..6d93e2a 100644 --- a/src/drivers/i2c/hid/hid.c +++ b/src/drivers/i2c/hid/hid.c @@ -60,6 +60,23 @@ { struct drivers_i2c_hid_config *config = dev->chip_info;
+ if (!config) + return; + + /* Check if device is present by reading GPIO */ + if (config->generic.device_present_gpio) { + int present = gpio_get(config->generic.device_present_gpio); + present ^= config->generic.device_present_gpio_invert; + + printk(BIOS_INFO, "%s is %spresent\n", + dev->chip_ops->name, present ? "" : "not "); + + if (!present) { + dev->enabled = 0; + return; + } + } + dev->ops = &i2c_hid_ops;
if (config && config->generic.desc) { diff --git a/src/mainboard/google/sarien/variants/sarien/devicetree.cb b/src/mainboard/google/sarien/variants/sarien/devicetree.cb index 1b72058..dab92f3 100644 --- a/src/mainboard/google/sarien/variants/sarien/devicetree.cb +++ b/src/mainboard/google/sarien/variants/sarien/devicetree.cb @@ -316,6 +316,8 @@ register "generic.enable_off_delay_ms" = "100" register "generic.has_power_resource" = "1" register "hid_desc_reg_offset" = "0x01" + register "generic.device_present_gpio" = "GPP_B4" + register "generic.device_present_gpio_invert" = "1" device i2c 10 on end end chip drivers/i2c/generic @@ -326,6 +328,8 @@ register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E7)" register "enable_delay_ms" = "5" register "has_power_resource" = "1" + register "generic.device_present_gpio" = "GPP_B4" + register "generic.device_present_gpio_invert" = "1" device i2c 34 on end end end # I2C #0