Message ID | 20240325-gpiolib-find-by-fwnode-stub-v2-1-c843288cb01f@kernel.org |
---|---|
State | Accepted |
Commit | 52464f59a361a3ba49d6eabc4f65d5c0b9d1de39 |
Headers | show |
Series | [v2] gpiolib: Add stubs for GPIO lookup functions | expand |
On Mon, Mar 25, 2024 at 6:01 PM Mark Brown <broonie@kernel.org> wrote: > > The gpio_device_find_by_() functions do not have stubs which means that if > they are referenced from code with an optiona dependency on gpiolib then > the code will fail to link. Add stubs for lookups via fwnode and label. I > have not added a stub for plain gpio_device_find() since it seems harder to > see a use case for that which does not depend on gpiolib. > > With the addition of the GPIO reset controller (which lacks a gpiolib > dependency) to the arm64 defconfig this is causing build breaks for arm64 > virtconfig in -next: > > aarch64-linux-gnu-ld: drivers/reset/core.o: in function `__reset_add_reset_gpio_lookup': > /build/stage/linux/drivers/reset/core.c:861:(.text+0xccc): undefined reference to `gpio_device_find_by_fwnode' > > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > Signed-off-by: Mark Brown <broonie@kernel.org> > --- Applied, thanks! Bart
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index dc75f802e284..f8617eaf08ba 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -646,8 +646,6 @@ int devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip *gc, struct gpio_device *gpio_device_find(const void *data, int (*match)(struct gpio_chip *gc, const void *data)); -struct gpio_device *gpio_device_find_by_label(const char *label); -struct gpio_device *gpio_device_find_by_fwnode(const struct fwnode_handle *fwnode); struct gpio_device *gpio_device_get(struct gpio_device *gdev); void gpio_device_put(struct gpio_device *gdev); @@ -814,6 +812,9 @@ struct gpio_device *gpiod_to_gpio_device(struct gpio_desc *desc); int gpio_device_get_base(struct gpio_device *gdev); const char *gpio_device_get_label(struct gpio_device *gdev); +struct gpio_device *gpio_device_find_by_label(const char *label); +struct gpio_device *gpio_device_find_by_fwnode(const struct fwnode_handle *fwnode); + #else /* CONFIG_GPIOLIB */ #include <asm/bug.h> @@ -843,6 +844,18 @@ static inline const char *gpio_device_get_label(struct gpio_device *gdev) return NULL; } +static inline struct gpio_device *gpio_device_find_by_label(const char *label) +{ + WARN_ON(1); + return NULL; +} + +static inline struct gpio_device *gpio_device_find_by_fwnode(const struct fwnode_handle *fwnode) +{ + WARN_ON(1); + return NULL; +} + static inline int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) {