Commit 36aa129f authored by Bartosz Golaszewski's avatar Bartosz Golaszewski
Browse files

gpiolib: make gpio_device_get() and gpio_device_put() public



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: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
parent 968118fc
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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

/*
+0 −10
Original line number Diff line number Diff line
@@ -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" };

+3 −0
Original line number Diff line number Diff line
@@ -606,6 +606,9 @@ int devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip *gc,
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);