forked from luck/tmp_suning_uos_patched
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:
parent
347ae6e291
commit
a28e1c0505
|
@ -478,3 +478,49 @@ void devm_gpio_free(struct device *dev, unsigned int gpio)
|
|||
&gpio));
|
||||
}
|
||||
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);
|
||||
|
||||
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
|
||||
* @data: data to pass to match function
|
||||
|
|
Loading…
Reference in New Issue
Block a user