gpio: Avoid kernel.h inclusion where it's possible
Subsystems (3)
PATCH v2 1/1 gpio: Avoid kernel.h inclusion where it's possible
Inclusion of kernel.h increases the mess with the header dependencies. Avoid kernel.h inclusion where it's possible.
Besides that, clean up a bit other inclusions inside GPIO subsystem headers. It includes:
- removal pin control bits (forward declaration and header) from linux/gpio.h
- removal of.h from asm-generic/gpio.h
- use of explicit headers in gpio/consumer.h
- add FIXME note with regard to gpio.h inclusion in of_gpio,h
---
v2: Elaborate changes in the commit message (Bartosz)
include/asm-generic/gpio.h | 4 ++-- include/linux/gpio.h | 2 -- include/linux/gpio/consumer.h | 5 ++++- include/linux/of_gpio.h | 9 ++++++--- 4 files changed, 12 insertions(+), 8 deletions(-)
include/asm-generic/gpio.h +2 -2
@@ -2,10 +2,8 @@#ifndef _ASM_GENERIC_GPIO_H#define _ASM_GENERIC_GPIO_H -#include <linux/kernel.h> #include <linux/types.h> #include <linux/errno.h> -#include <linux/of.h> #ifdef CONFIG_GPIOLIB
@@ -140,6 +138,8 @@ static inline void gpio_unexport(unsigned gpio)#else /* !CONFIG_GPIOLIB */ +#include <linux/kernel.h> +static inline bool gpio_is_valid (int number) {/* only non-negative numbers are valid */
include/linux/gpio.h +0 -2
@@ -102,11 +102,9 @@ void devm_gpio_free(struct device *dev, unsigned int gpio);#include <linux/kernel.h> #include <linux/types.h> #include <linux/bug.h> -#include <linux/pinctrl/pinctrl.h> struct device ;struct gpio_chip ; -struct pinctrl_dev ;static inline bool gpio_is_valid (int number) {
include/linux/gpio/consumer.h +4 -1
@@ -2,9 +2,10 @@#ifndef __LINUX_GPIO_CONSUMER_H#define __LINUX_GPIO_CONSUMER_H +#include <linux/bits.h> #include <linux/bug.h> +#include <linux/compiler_types.h> #include <linux/err.h> -#include <linux/kernel.h> struct device ;
@@ -189,6 +190,8 @@ struct gpio_desc *devm_fwnode_gpiod_get_index(struct device *dev,#else /* CONFIG_GPIOLIB */ +#include <linux/kernel.h> +static inline int gpiod_count (struct device *dev,const char *con_id) {return 0 ;
include/linux/of_gpio.h +6 -3
@@ -11,9 +11,8 @@#define __LINUX_OF_GPIO_H#include <linux/compiler.h> -#include <linux/kernel.h> -#include <linux/errno.h> -#include <linux/gpio.h> +#include <linux/gpio/driver.h> +#include <linux/gpio.h> /* FIXME: Shouldn't be here */ #include <linux/of.h> struct device_node ;
@@ -34,6 +33,8 @@ enum of_gpio_flags {#ifdef CONFIG_OF_GPIO +#include <linux/kernel.h> +/* * OF GPIO chip for memory mapped banks */
@@ -63,6 +64,8 @@ extern void of_mm_gpiochip_remove(struct of_mm_gpio_chip *mm_gc);#else /* CONFIG_OF_GPIO */ +#include <linux/errno.h> +/* Drivers may not strictly depend on the GPIO support, so let them link. */ static inline int of_get_named_gpio_flags (struct device_node *np,const char *list_name,int index,enum of_gpio_flags *flags)
Signature · 1 line
2.24.1
Rob Herring
maintainerQuoted 35 lines · Andy Shevchenko
Inclusion of
kernel.hincreases the mess with the header dependencies. Avoidkernel.hinclusion where it's possible.Besides that, clean up a bit other inclusions inside GPIO subsystem headers. It includes:
- removal pin control bits (forward declaration and header) fromlinux/gpio.h
- removalof.hfromasm-generic/gpio.h
- use of explicit headers ingpio/consumer.h
- add FIXME note with regard togpio.hinclusion in of_gpio,hSigned-off-by Andy Shevchenko <[email protected]>---
v2: Elaborate changes in the commit message (Bartosz)include/asm-generic/gpio.h | 4 ++-- include/linux/gpio.h | 2 -- include/linux/gpio/consumer.h | 5 ++++- include/linux/of_gpio.h | 9 ++++++--- 4 files changed, 12 insertions(+), 8 deletions(-)include/asm-generic/gpio.h +0
-2@@ -2,10 +2,8 @@#ifndef _ASM_GENERIC_GPIO_H#define _ASM_GENERIC_GPIO_H -#include <linux/kernel.h> #include <linux/types.h> #include <linux/errno.h> -#include <linux/of.h> #ifdef CONFIG_GPIOLIB
include/asm-generic/gpio.h static inline void gpio_unexport(unsigned gpio) · line 142
Quoted 5 lines
include/asm-generic/gpio.h +2
-0@@ -140,6 +138,8 @@ static inline void gpio_unexport(unsigned gpio)#else /* !CONFIG_GPIOLIB */ +#include <linux/kernel.h> +
I don't really think moving the includes inside #ifdef's is an improvment.
But I'll leave it to Linus.
Rob
Quoted 10 lines · Rob Herring
Quoted 9 lines · Andy Shevchenko
Inclusion of
kernel.hincreases the mess with the header dependencies. Avoidkernel.hinclusion where it's possible.Besides that, clean up a bit other inclusions inside GPIO subsystem headers. It includes:
- removal pin control bits (forward declaration and header) fromlinux/gpio.h
- removalof.hfromasm-generic/gpio.h
- use of explicit headers ingpio/consumer.h
- add FIXME note with regard togpio.hinclusion in of_gpio,h
...
Quoted 7 lines
Review
Quoted 4 lines
#else /* !CONFIG_GPIOLIB */
(quoted diff) +2
-0+#include <linux/kernel.h> +I don't really think moving the includes inside #ifdef's is an improvment.
I also not a big fun, but for now it removes in most cases when CONFIG_GPIOLIB=y. And this is already an improvement. Next step is to replace it with newly created (when it will be created) header might_sleep.h.
Quoted 1 line
But I'll leave it to Linus.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Quoted 10 lines · Andy Shevchenko
Inclusion of
kernel.hincreases the mess with the header dependencies. Avoidkernel.hinclusion where it's possible.Besides that, clean up a bit other inclusions inside GPIO subsystem headers. It includes:
- removal pin control bits (forward declaration and header) fromlinux/gpio.h
- removalof.hfromasm-generic/gpio.h
- use of explicit headers ingpio/consumer.h
- add FIXME note with regard togpio.hinclusion in of_gpio,h
Quoted 3 lines
Signed-off-by Andy Shevchenko <[email protected]>---
v2: Elaborate changes in the commit message (Bartosz)
Patch applied as clearly the kernel looks better after this patch than before this patch.
Thanks!
Linus Walleij