From 11a0f18dd6ba0e46c5d38b25b4262fc07274a1b7 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Mon, 16 May 2016 15:32:30 -0700 Subject: [PATCH] UPSTREAM: apollolake: Add handler for finding ACPI path for GPIO Add a handler for soc/intel/apollolake to return the ACPI path for GPIOs. There are 4 GPIO "communities" on apollolake that each have a different ACPI device so return the appropriate name for the different communities. BUG=None BRANCH=None TEST=None Change-Id: I596c178b7813ac6aaeb4f2685bb916f5b78e049b Original-Signed-off-by: Duncan Laurie Original-Reviewed-on: https://review.coreboot.org/14859 Original-Tested-by: build bot (Jenkins) Original-Reviewed-by: Aaron Durbin Signed-off-by: Aaron Durbin Reviewed-on: https://chromium-review.googlesource.com/346993 Commit-Ready: Martin Roth Tested-by: Martin Roth Reviewed-by: Martin Roth --- src/soc/intel/apollolake/gpio.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/soc/intel/apollolake/gpio.c b/src/soc/intel/apollolake/gpio.c index 06db8c965a..d0ef6482da 100644 --- a/src/soc/intel/apollolake/gpio.c +++ b/src/soc/intel/apollolake/gpio.c @@ -114,3 +114,21 @@ void gpio_set(gpio_t gpio_num, int value) reg |= !!value & PAD_CFG0_TX_STATE; iosf_write(comm->port, config_offset, reg); } + +const char *gpio_acpi_path(gpio_t gpio_num) +{ + const struct pad_community *comm = gpio_get_community(gpio_num); + + switch (comm->port) { + case GPIO_NORTH: + return "\\_SB.GPO0"; + case GPIO_NORTHWEST: + return "\\_SB.GPO1"; + case GPIO_WEST: + return "\\_SB.GPO2"; + case GPIO_SOUTHWEST: + return "\\_SB.GPO3"; + } + + return NULL; +}