Re: [PATCH 1/4 resend] [x86] Add generic GPIO support to x86

Andrew Morton
2008-02-13T22:07:33Z

On Thu, 18 Oct 2007 15:51:24 +0200
Florian Fainelli <florian.fainelli@telecomint.eu> wrote:

> This patch adds the generic GPIO support to the x86
> architecture. We do the same as for MIPS, we let
> the machine override the gpio callbacks and provide
> defaults one in mach-generic.
>
> Signed-off-by: Florian Fainelli <florian.fainelli@telecomint.eu>
> ---
> arch/i386/Kconfig | 4 ++++
> include/asm-x86/gpio.h | 6 ++++++
> include/asm-x86/mach-generic/gpio.h | 15 +++++++++++++++
> 3 files changed, 25 insertions(+), 0 deletions(-)
> create mode 100644 include/asm-x86/gpio.h
> create mode 100644 include/asm-x86/mach-generic/gpio.h
> ---
> diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
> index bf9aafa..501fd6d 100644
> --- a/arch/i386/Kconfig
> +++ b/arch/i386/Kconfig
> @@ -79,6 +79,10 @@ config GENERIC_BUG
> default y
> depends on BUG
>
> +config GENERIC_GPIO
> + bool
> + default n
> +
> config GENERIC_HWEIGHT
> bool
> default y
> diff --git a/include/asm-x86/gpio.h b/include/asm-x86/gpio.h
> new file mode 100644
> index 0000000..ff87fca
> --- /dev/null
> +++ b/include/asm-x86/gpio.h
> @@ -0,0 +1,6 @@
> +#ifndef _ASM_I386_GPIO_H
> +#define _ASM_I386_GPIO_H
> +
> +#include <gpio.h>
> +
> +#endif /* _ASM_I386_GPIO_H */
> diff --git a/include/asm-x86/mach-generic/gpio.h b/include/asm-x86/mach-generic/gpio.h
> new file mode 100644
> index 0000000..5305dcb
> --- /dev/null
> +++ b/include/asm-x86/mach-generic/gpio.h
> @@ -0,0 +1,15 @@
> +#ifndef __ASM_MACH_GENERIC_GPIO_H
> +#define __ASM_MACH_GENERIC_GPIO_H
> +
> +int gpio_request(unsigned gpio, const char *label);
> +void gpio_free(unsigned gpio);
> +int gpio_direction_input(unsigned gpio);
> +int gpio_direction_output(unsigned gpio, int value);
> +int gpio_get_value(unsigned gpio);
> +void gpio_set_value(unsigned gpio, int value);
> +int gpio_to_irq(unsigned gpio);
> +int irq_to_gpio(unsigned irq);
> +
> +#include <asm-generic/gpio.h> /* cansleep wrappers */
> +
> +#endif /* __ASM_MACH_GENERIC_GPIO_H */

There's a new driver in git-dvb which does a plain old

#include <asm/gpio.h>

and it explodes on i386 allmodconfig with:

In file included from drivers/media/video/mt9m001.c:20:
include/asm/gpio.h:4:18: error: gpio.h: No such file or directory

I don't even know how this was supposed to work. What does "#include
<gpio.h>" give us? Is the kbuild system supposed to have added
-Iinclude/asm/mach-generic? It obviously didn't.

Someone please fix.

It would be more modern to have a <linux/gpio.h> which takes care of
cruddy details, but it's getting too late for that.