From a603e443eb66e2454d7776ebc6684f4dd8a290ab Mon Sep 17 00:00:00 2001 From: Tim Wawrzynczak Date: Mon, 22 Mar 2021 10:40:51 -0600 Subject: soc/intel/common/gpio: Add function to get GPIO index in group The gpio_get_index_in_group function returns the index of the GPIO within its own group Signed-off-by: Tim Wawrzynczak Change-Id: I7f6b312bd1d0388ef799cd127c88b17bad6a3886 Reviewed-on: https://review.coreboot.org/c/coreboot/+/51647 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh --- src/soc/intel/common/block/gpio/gpio.c | 10 ++++++++++ src/soc/intel/common/block/include/intelblocks/gpio.h | 2 ++ 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/soc/intel/common/block/gpio/gpio.c b/src/soc/intel/common/block/gpio/gpio.c index 417dfb88b2..ca30fb5dc3 100644 --- a/src/soc/intel/common/block/gpio/gpio.c +++ b/src/soc/intel/common/block/gpio/gpio.c @@ -668,3 +668,13 @@ void gpio_pm_configure(const uint8_t *misccfg_pm_values, size_t num) pcr_rmw8(comm->port, GPIO_MISCCFG, misccfg_pm_mask, misccfg_pm_values[i]); } + +size_t gpio_get_index_in_group(gpio_t pad) +{ + const struct pad_community *comm; + size_t pin; + + comm = gpio_get_community(pad); + pin = relative_pad_in_comm(comm, pad); + return gpio_within_group(comm, pin); +} diff --git a/src/soc/intel/common/block/include/intelblocks/gpio.h b/src/soc/intel/common/block/include/intelblocks/gpio.h index 3f79b19f94..a7419dca59 100644 --- a/src/soc/intel/common/block/include/intelblocks/gpio.h +++ b/src/soc/intel/common/block/include/intelblocks/gpio.h @@ -235,5 +235,7 @@ void block_gpio_enable(struct device *dev); */ bool gpio_routes_ioapic_irq(unsigned int irq); +size_t gpio_get_index_in_group(gpio_t pad); + #endif #endif /* _SOC_INTELBLOCKS_GPIO_H_ */ -- cgit v1.2.3