gpio: fix build errors for drivers not strictly requiring GPIOs
PATCH 1/1 gpio: fix build errors for drivers not strictly requiring GPIOs
Since commit 7560fa60fcdcdb0da662f6a9fad9064b554ef46c (gpio: <linux/gpio.h> and "no GPIO support here" stubs) drivers can use GPIOs if they're available, but don't require them.
This patch actually enables this feature, otherwise drivers will stumble against this:
include/asm-generic/gpio.h:111: error: redefinition of 'gpio_is_valid' include/linux/gpio.h:21: error: previous definition of 'gpio_is_valid' was here include/asm-generic/gpio.h:121: error: redefinition of 'gpio_cansleep' include/linux/gpio.h:60: error: previous definition of 'gpio_cansleep' was here include/asm-generic/gpio.h:126: error: redefinition of 'gpio_get_value_cansleep' include/linux/gpio.h:67: error: previous definition of 'gpio_get_value_cansleep' was here include/asm-generic/gpio.h:132: error: redefinition of 'gpio_set_value_cansleep' include/linux/gpio.h:74: error: previous definition of 'gpio_set_value_cansleep' was here
--- include/asm-generic/gpio.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
include/asm-generic/gpio.h +1 -1
@@ -105,7 +105,7 @@ extern void __gpio_set_value(unsigned gpio, int value);extern int __gpio_cansleep (unsigned gpio); -#else +#elif defined(CONFIG_GENERIC_GPIO )static inline int gpio_is_valid (int number) {
Signature · 1 line
1.5.5.1
Quoted 9 lines · Anton Vorontsov
Since commit
7560fa60fcdcdb0da662f6a9fad9064b554ef46c(gpio: <linux/gpio.h> and "no GPIO support here" stubs) drivers can use GPIOs if they're available, but don't require them.This patch actually enables this feature, otherwise drivers will stumble against this:
include/asm-generic/gpio.h:111: error: redefinition of 'gpio_is_valid'include/linux/gpio.h:21: error: previous definition of 'gpio_is_valid' was here
This looks to me like pure user error ... what was anyone doing including <asm-generic/gpio.h> in that way? There are a *lot* of bogus include combinations, and we don't try to "fix" them.
It should suffice to #include <linux/gpio.h> ... that causes the definition of either (a) stubs in that file, *OR* else (b) the platform-specific implementation of the GPIO calls, which may (if that platform chooses) use <asm-generic/gpio.h> utilities.
NAK on this patch.
- dave
Quoted 8 lines · David Brownell
Quoted 7 lines · Anton Vorontsov
Since commit
7560fa60fcdcdb0da662f6a9fad9064b554ef46c(gpio: <linux/gpio.h> and "no GPIO support here" stubs) drivers can use GPIOs if they're available, but don't require them.This patch actually enables this feature, otherwise drivers will stumble against this:
Quoted 6 lines
Quoted 2 lines
include/asm-generic/gpio.h:111: error: redefinition of 'gpio_is_valid'include/linux/gpio.h:21: error: previous definition of 'gpio_is_valid' was hereThis looks to me like pure user error ... what was anyone doing including <
asm-generic/gpio.h> in that way? There are a *lot* of bogus include combinations, and we don't try to "fix" them.
This is true, partially. I saw these errors for the drivers using linux/of_gpio.h, it includes asm/gpio.h, which includes asm-generic/gpio.h (I submitted of_gpio.h patch before linux/gpio.h work, though git log might say otherwise). And yes, I should fix of_gpio.h too.
The thing is, I always thought that it is _good_ practice for the nested headers to declare/define things conditionally by themselves. That way you'll not have to fix all combinations, everything will (should) just work. I.e.
#include <linux/of_gpio.h>
#include <asm-generic/gpio.h>
#include <asm/gpio.h>
#include <linux/gpio.h>
^^ This insanity will work.
Though with current headers, you'll easily catch the bogus users of the asm/gpio.h thus will discipline the users, that might be a plus too... ;-)
Signature · 3 lines
Anton Vorontsov email: [email protected] irc://irc.freenode.net/bd2