Message ID | 20200313081522.35143-1-linus.walleij@linaro.org |
---|---|
State | New |
Headers | show |
Series | gpio: Move devres calls to devres file | expand |
pt., 13 mar 2020 o 09:15 Linus Walleij <linus.walleij@linaro.org> napisaĆ(a): > > These two devres functions devm_gpiochip_[add|remove]() > were in the wrong file. They should be in gpiolib-devres.c > not gpiolib.c. > > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> > --- > drivers/gpio/gpiolib-devres.c | 46 +++++++++++++++++++++++++++++++++++ > drivers/gpio/gpiolib.c | 46 ----------------------------------- > 2 files changed, 46 insertions(+), 46 deletions(-) > > diff --git a/drivers/gpio/gpiolib-devres.c b/drivers/gpio/gpiolib-devres.c > index 72b6001c56ef..5c91c4365da1 100644 > --- a/drivers/gpio/gpiolib-devres.c > +++ b/drivers/gpio/gpiolib-devres.c > @@ -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); > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index 02f8b2b81199..00890f38f95f 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -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 > -- > 2.24.1 > Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
diff --git a/drivers/gpio/gpiolib-devres.c b/drivers/gpio/gpiolib-devres.c index 72b6001c56ef..5c91c4365da1 100644 --- a/drivers/gpio/gpiolib-devres.c +++ b/drivers/gpio/gpiolib-devres.c @@ -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); diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 02f8b2b81199..00890f38f95f 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -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
These two devres functions devm_gpiochip_[add|remove]() were in the wrong file. They should be in gpiolib-devres.c not gpiolib.c. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> --- drivers/gpio/gpiolib-devres.c | 46 +++++++++++++++++++++++++++++++++++ drivers/gpio/gpiolib.c | 46 ----------------------------------- 2 files changed, 46 insertions(+), 46 deletions(-)