mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 16:44:10 +08:00
pinctrl: change the signature of pinctrl_ready_for_gpio_range()
Modify pinctrl_ready_for_gpio_range() to be in line with public GPIO helpers and take a pair of GPIO chip & offset as arguments Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
31d4e8d101
commit
6042aaef31
@ -322,7 +322,8 @@ pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, struct gpio_chip *gc,
|
|||||||
/**
|
/**
|
||||||
* pinctrl_ready_for_gpio_range() - check if other GPIO pins of
|
* pinctrl_ready_for_gpio_range() - check if other GPIO pins of
|
||||||
* the same GPIO chip are in range
|
* the same GPIO chip are in range
|
||||||
* @gpio: gpio pin to check taken from the global GPIO pin space
|
* @gc: GPIO chip structure from the GPIO subsystem
|
||||||
|
* @offset: hardware offset of the GPIO relative to the controller
|
||||||
*
|
*
|
||||||
* This function is complement of pinctrl_match_gpio_range(). If the return
|
* This function is complement of pinctrl_match_gpio_range(). If the return
|
||||||
* value of pinctrl_match_gpio_range() is NULL, this function could be used
|
* value of pinctrl_match_gpio_range() is NULL, this function could be used
|
||||||
@ -333,19 +334,11 @@ pinctrl_match_gpio_range(struct pinctrl_dev *pctldev, struct gpio_chip *gc,
|
|||||||
* is false, it means that pinctrl device may not be ready.
|
* is false, it means that pinctrl device may not be ready.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_GPIOLIB
|
#ifdef CONFIG_GPIOLIB
|
||||||
static bool pinctrl_ready_for_gpio_range(unsigned gpio)
|
static bool pinctrl_ready_for_gpio_range(struct gpio_chip *gc,
|
||||||
|
unsigned int offset)
|
||||||
{
|
{
|
||||||
struct pinctrl_dev *pctldev;
|
struct pinctrl_dev *pctldev;
|
||||||
struct pinctrl_gpio_range *range = NULL;
|
struct pinctrl_gpio_range *range = NULL;
|
||||||
/*
|
|
||||||
* FIXME: "gpio" here is a number in the global GPIO numberspace.
|
|
||||||
* get rid of this from the ranges eventually and get the GPIO
|
|
||||||
* descriptor from the gpio_chip.
|
|
||||||
*/
|
|
||||||
struct gpio_chip *chip = gpiod_to_chip(gpio_to_desc(gpio));
|
|
||||||
|
|
||||||
if (WARN(!chip, "no gpio_chip for gpio%i?", gpio))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
mutex_lock(&pinctrldev_list_mutex);
|
mutex_lock(&pinctrldev_list_mutex);
|
||||||
|
|
||||||
@ -355,8 +348,8 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio)
|
|||||||
mutex_lock(&pctldev->mutex);
|
mutex_lock(&pctldev->mutex);
|
||||||
list_for_each_entry(range, &pctldev->gpio_ranges, node) {
|
list_for_each_entry(range, &pctldev->gpio_ranges, node) {
|
||||||
/* Check if any gpio range overlapped with gpio chip */
|
/* Check if any gpio range overlapped with gpio chip */
|
||||||
if (range->base + range->npins - 1 < chip->base ||
|
if (range->base + range->npins - 1 < gc->base ||
|
||||||
range->base > chip->base + chip->ngpio - 1)
|
range->base > gc->base + gc->ngpio - 1)
|
||||||
continue;
|
continue;
|
||||||
mutex_unlock(&pctldev->mutex);
|
mutex_unlock(&pctldev->mutex);
|
||||||
mutex_unlock(&pinctrldev_list_mutex);
|
mutex_unlock(&pinctrldev_list_mutex);
|
||||||
@ -370,7 +363,11 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static bool pinctrl_ready_for_gpio_range(unsigned gpio) { return true; }
|
static inline bool
|
||||||
|
pinctrl_ready_for_gpio_range(struct gpio_chip *gc, unsigned int offset)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -805,7 +802,7 @@ int pinctrl_gpio_request(struct gpio_chip *gc, unsigned int offset)
|
|||||||
|
|
||||||
ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range);
|
ret = pinctrl_get_device_gpio_range(gc, offset, &pctldev, &range);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (pinctrl_ready_for_gpio_range(gc->base + offset))
|
if (pinctrl_ready_for_gpio_range(gc, offset))
|
||||||
ret = 0;
|
ret = 0;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user