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:
Bartosz Golaszewski 2023-10-10 16:22:16 +02:00
parent 31d4e8d101
commit 6042aaef31

View File

@ -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;
} }