From 6c339dda4ecd1ce7fba5e1181b3e3d8ede1e8710 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Tue, 20 Nov 2012 14:25:07 +0100 Subject: [PATCH] --- yaml --- r: 336431 b: refs/heads/master c: 9afbefb227792a3c195085d662050dcca748f521 h: refs/heads/master i: 336429: f77e119de376310319a8d6492bf9f6e95679f064 336427: 178248c4177c6ec1c14f8ad13b927167262825c0 336423: e2ac5020ca2757f70d862c1108aaf8a48abf2373 336415: 939191060dd1ebd69b046d8ebdfa21c46fd91543 v: v3 --- [refs] | 2 +- trunk/drivers/pinctrl/core.c | 24 ++++++++++++++++++++++++ trunk/include/linux/pinctrl/pinctrl.h | 3 +++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b8db6f2d6aba..53ac3561d345 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8f23ca1a73a096f21e6618d8e23df613daa5e532 +refs/heads/master: 9afbefb227792a3c195085d662050dcca748f521 diff --git a/trunk/drivers/pinctrl/core.c b/trunk/drivers/pinctrl/core.c index 33af811a6a3c..5cdee8669ea3 100644 --- a/trunk/drivers/pinctrl/core.c +++ b/trunk/drivers/pinctrl/core.c @@ -363,6 +363,30 @@ struct pinctrl_dev *pinctrl_find_and_add_gpio_range(const char *devname, } EXPORT_SYMBOL_GPL(pinctrl_find_and_add_gpio_range); +/** + * pinctrl_find_gpio_range_from_pin() - locate the GPIO range for a pin + * @pctldev: the pin controller device to look in + * @pin: a controller-local number to find the range for + */ +struct pinctrl_gpio_range * +pinctrl_find_gpio_range_from_pin(struct pinctrl_dev *pctldev, + unsigned int pin) +{ + struct pinctrl_gpio_range *range = NULL; + + /* Loop over the ranges */ + list_for_each_entry(range, &pctldev->gpio_ranges, node) { + /* Check if we're in the valid range */ + if (pin >= range->pin_base && + pin < range->pin_base + range->npins) { + return range; + } + } + + return NULL; +} +EXPORT_SYMBOL_GPL(pinctrl_find_gpio_range_from_pin); + /** * pinctrl_remove_gpio_range() - remove a range of GPIOs fro a pin controller * @pctldev: pin controller device to remove the range from diff --git a/trunk/include/linux/pinctrl/pinctrl.h b/trunk/include/linux/pinctrl/pinctrl.h index 7dee9acbd271..04d6700d99af 100644 --- a/trunk/include/linux/pinctrl/pinctrl.h +++ b/trunk/include/linux/pinctrl/pinctrl.h @@ -139,6 +139,9 @@ extern void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, extern struct pinctrl_dev *pinctrl_find_and_add_gpio_range(const char *devname, struct pinctrl_gpio_range *range); +extern struct pinctrl_gpio_range * +pinctrl_find_gpio_range_from_pin(struct pinctrl_dev *pctldev, + unsigned int pin); #ifdef CONFIG_OF extern struct pinctrl_dev *of_pinctrl_get(struct device_node *np);