Explanation of <asm/gpio.h> in Doc/gpio.txt seems out of date

Robert P. J. Day rpjday at crashcourse.ca
Tue Mar 12 08:08:11 EDT 2013


   (the first in probably a number of questions related to digging  
around in embedded linux-related code -- i know there's an  
embedded-linux list, if that's a better forum, i'll move stuff there.)

   currently writing an intro to GPIO for my new EL course, and ran  
across this in doc file gpio.txt:

"Platforms must declare GENERIC_GPIO support in their Kconfig (boolean  
true), and provide an <asm/gpio.h> file. Drivers that can't work  
without standard GPIO calls should have Kconfig entries which depend  
on GENERIC_GPIO.  The GPIO calls are available, either as "real code"  
or as optimized-away stubs, when drivers use the include file:

        #include <linux/gpio.h>"

   hang on ... that explanation might have been true at one time, but  
consider this snippet from <linux/gpio.h>:

... snip ...
#ifdef CONFIG_GENERIC_GPIO

#ifdef CONFIG_ARCH_HAVE_CUSTOM_GPIO_H
#include <asm/gpio.h>
#else

#include <asm-generic/gpio.h>
... snip ...

   the above clearly suggests that you need provide an <asm/gpio.h>  
only if you've explicitly selected that you have a custom gpio.h file,  
and that Kconfig directive is defined thusly in drivers/gpio/Kconfig:

config ARCH_HAVE_CUSTOM_GPIO_H
         bool
         help
           Selecting this config option from the architecture Kconfig allows
           the architecture to provide a custom asm/gpio.h implementation
           overriding the default implementations.  New uses of this are
           strongly discouraged.

so, if i read this correctly, you *don't* need to supply your own  
<asm/gpio.h> except under exceptional circumstances which, these days,  
is strongly discouraged, does that sound right?

   further, there are numerous kernel source files that explicitly have:

#include <asm/gpio.h>

when it would *seem* that the cleaner approach would be to simply:

#include <linux/gpio.h>

and set the Kconfig variable ARCH_HAVE_CUSTOM_GPIO_H, no? it just  
seems that the Doc/gpio.txt file could stand a bit of tweaking to be  
brought up to date.

rday




More information about the Kernelnewbies mailing list