gpio: Move devres calls to devres file
These two devres functions devm_gpiochip_[add|remove]() were in the wrong file. They should be in gpiolib-devres.c not gpiolib.c. Link: https://lore.kernel.org/r/20200313081522.35143-1-linus.walleij@linaro.org Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Родитель
347ae6e291
Коммит
a28e1c0505
|
@ -478,3 +478,49 @@ void devm_gpio_free(struct device *dev, unsigned int gpio)
|
||||||
&gpio));
|
&gpio));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(devm_gpio_free);
|
EXPORT_SYMBOL_GPL(devm_gpio_free);
|
||||||
|
|
||||||
|
static void devm_gpio_chip_release(struct device *dev, void *res)
|
||||||
|
{
|
||||||
|
struct gpio_chip *gc = *(struct gpio_chip **)res;
|
||||||
|
|
||||||
|
gpiochip_remove(gc);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* devm_gpiochip_add_data() - Resource managed gpiochip_add_data()
|
||||||
|
* @dev: pointer to the device that gpio_chip belongs to.
|
||||||
|
* @gc: the GPIO chip to register
|
||||||
|
* @data: driver-private data associated with this chip
|
||||||
|
*
|
||||||
|
* Context: potentially before irqs will work
|
||||||
|
*
|
||||||
|
* The gpio chip automatically be released when the device is unbound.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* A negative errno if the chip can't be registered, such as because the
|
||||||
|
* gc->base is invalid or already associated with a different chip.
|
||||||
|
* Otherwise it returns zero as a success code.
|
||||||
|
*/
|
||||||
|
int devm_gpiochip_add_data(struct device *dev, struct gpio_chip *gc,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
struct gpio_chip **ptr;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ptr = devres_alloc(devm_gpio_chip_release, sizeof(*ptr),
|
||||||
|
GFP_KERNEL);
|
||||||
|
if (!ptr)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
ret = gpiochip_add_data(gc, data);
|
||||||
|
if (ret < 0) {
|
||||||
|
devres_free(ptr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ptr = gc;
|
||||||
|
devres_add(dev, ptr);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(devm_gpiochip_add_data);
|
||||||
|
|
|
@ -1838,52 +1838,6 @@ void gpiochip_remove(struct gpio_chip *chip)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(gpiochip_remove);
|
EXPORT_SYMBOL_GPL(gpiochip_remove);
|
||||||
|
|
||||||
static void devm_gpio_chip_release(struct device *dev, void *res)
|
|
||||||
{
|
|
||||||
struct gpio_chip *chip = *(struct gpio_chip **)res;
|
|
||||||
|
|
||||||
gpiochip_remove(chip);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* devm_gpiochip_add_data() - Resource managed gpiochip_add_data()
|
|
||||||
* @dev: pointer to the device that gpio_chip belongs to.
|
|
||||||
* @chip: the chip to register, with chip->base initialized
|
|
||||||
* @data: driver-private data associated with this chip
|
|
||||||
*
|
|
||||||
* Context: potentially before irqs will work
|
|
||||||
*
|
|
||||||
* The gpio chip automatically be released when the device is unbound.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* A negative errno if the chip can't be registered, such as because the
|
|
||||||
* chip->base is invalid or already associated with a different chip.
|
|
||||||
* Otherwise it returns zero as a success code.
|
|
||||||
*/
|
|
||||||
int devm_gpiochip_add_data(struct device *dev, struct gpio_chip *chip,
|
|
||||||
void *data)
|
|
||||||
{
|
|
||||||
struct gpio_chip **ptr;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ptr = devres_alloc(devm_gpio_chip_release, sizeof(*ptr),
|
|
||||||
GFP_KERNEL);
|
|
||||||
if (!ptr)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
ret = gpiochip_add_data(chip, data);
|
|
||||||
if (ret < 0) {
|
|
||||||
devres_free(ptr);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ptr = chip;
|
|
||||||
devres_add(dev, ptr);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(devm_gpiochip_add_data);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpiochip_find() - iterator for locating a specific gpio_chip
|
* gpiochip_find() - iterator for locating a specific gpio_chip
|
||||||
* @data: data to pass to match function
|
* @data: data to pass to match function
|
||||||
|
|
Загрузка…
Ссылка в новой задаче