gpiolib: make gpio_device_get() and gpio_device_put() public
[ Upstream commit 36aa129f221c9070afd8dff03154ab49702a5b1b ] In order to start migrating away from accessing struct gpio_chip by users other than their owners, let's first make the reference management functions for the opaque struct gpio_device public in the driver.h header. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Stable-dep-of: 48e1b4d369cf ("gpiolib: remove the GPIO device from the list when it's unregistered") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
9b0cc30d26
commit
799233ad1e
|
@ -1058,6 +1058,30 @@ static struct gpio_chip *find_chip_by_name(const char *name)
|
|||
return gpiochip_find((void *)name, gpiochip_match_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* gpio_device_get() - Increase the reference count of this GPIO device
|
||||
* @gdev: GPIO device to increase the refcount for
|
||||
*
|
||||
* Returns:
|
||||
* Pointer to @gdev.
|
||||
*/
|
||||
struct gpio_device *gpio_device_get(struct gpio_device *gdev)
|
||||
{
|
||||
return to_gpio_device(get_device(&gdev->dev));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpio_device_get);
|
||||
|
||||
/**
|
||||
* gpio_device_put() - Decrease the reference count of this GPIO device and
|
||||
* possibly free all resources associated with it.
|
||||
* @gdev: GPIO device to decrease the reference count for
|
||||
*/
|
||||
void gpio_device_put(struct gpio_device *gdev)
|
||||
{
|
||||
put_device(&gdev->dev);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpio_device_put);
|
||||
|
||||
#ifdef CONFIG_GPIOLIB_IRQCHIP
|
||||
|
||||
/*
|
||||
|
|
|
@ -86,16 +86,6 @@ static inline struct gpio_device *to_gpio_device(struct device *dev)
|
|||
return container_of(dev, struct gpio_device, dev);
|
||||
}
|
||||
|
||||
static inline struct gpio_device *gpio_device_get(struct gpio_device *gdev)
|
||||
{
|
||||
return to_gpio_device(get_device(&gdev->dev));
|
||||
}
|
||||
|
||||
static inline void gpio_device_put(struct gpio_device *gdev)
|
||||
{
|
||||
put_device(&gdev->dev);
|
||||
}
|
||||
|
||||
/* gpio suffixes used for ACPI and device tree lookup */
|
||||
static __maybe_unused const char * const gpio_suffixes[] = { "gpios", "gpio" };
|
||||
|
||||
|
|
|
@ -607,6 +607,9 @@ extern int devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip
|
|||
extern struct gpio_chip *gpiochip_find(void *data,
|
||||
int (*match)(struct gpio_chip *gc, void *data));
|
||||
|
||||
struct gpio_device *gpio_device_get(struct gpio_device *gdev);
|
||||
void gpio_device_put(struct gpio_device *gdev);
|
||||
|
||||
bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset);
|
||||
int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset);
|
||||
void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset);
|
||||
|
|
Loading…
Reference in New Issue