Re: [patch 2.6.24-rc6-mm 1/9] gpiolib: add drivers/gpio directory

David Brownell
2008-01-05T20:16:19Z

From: David Brownell <dbrownell@users.sourceforge.net>

Add an empty drivers/gpio directory for gpiolib infrastructure
and GPIO expanders. It will be populated by later patches.

This won't be the only place to hold such gpio_chip code. Many
external chips add a few GPIOs as secondary functionality (such
as MFD drivers) and platform code frequently needs to closely
integrate GPIO and IRQ support.

This is placed *early* in the build/link sequence since it's common
for other drivers to depend on GPIOs to do their work, so they must
be initialized early in the device_initcall() sequence.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Jean Delvare <khali@linux-fr.org>
Cc: Eric Miao <eric.miao@marvell.com>
---
Incorporates cleanup as suggested by Sam Ravnborg: use HAVE_*
and a new idiom for adding "-DDEBUG".

arch/arm/Kconfig | 2 ++
drivers/Kconfig | 2 ++
drivers/Makefile | 1 +
drivers/gpio/Kconfig | 32 ++++++++++++++++++++++++++++++++
drivers/gpio/Makefile | 4 ++++
5 files changed, 41 insertions(+)

--- at91.orig/arch/arm/Kconfig 2008-01-05 12:00:45.000000000 -0800
+++ at91/arch/arm/Kconfig 2008-01-05 12:00:47.000000000 -0800
@@ -1040,6 +1040,8 @@ source "drivers/i2c/Kconfig"

source "drivers/spi/Kconfig"

+source "drivers/gpio/Kconfig"
+
source "drivers/w1/Kconfig"

source "drivers/power/Kconfig"
--- at91.orig/drivers/Kconfig 2008-01-05 12:00:45.000000000 -0800
+++ at91/drivers/Kconfig 2008-01-05 12:00:47.000000000 -0800
@@ -52,6 +52,8 @@ source "drivers/i2c/Kconfig"

source "drivers/spi/Kconfig"

+source "drivers/gpio/Kconfig"
+
source "drivers/w1/Kconfig"

source "drivers/power/Kconfig"
--- at91.orig/drivers/Makefile 2008-01-05 12:00:45.000000000 -0800
+++ at91/drivers/Makefile 2008-01-05 12:00:47.000000000 -0800
@@ -5,6 +5,7 @@
# Rewritten to use lists instead of if-statements.
#

+obj-$(CONFIG_HAVE_GPIO_LIB) += gpio/
obj-$(CONFIG_PCI) += pci/
obj-$(CONFIG_PARISC) += parisc/
obj-$(CONFIG_RAPIDIO) += rapidio/
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ at91/drivers/gpio/Kconfig 2008-01-05 12:00:47.000000000 -0800
@@ -0,0 +1,32 @@
+#
+# GPIO infrastructure and expanders
+#
+
+config HAVE_GPIO_LIB
+ bool
+ help
+ Platforms select gpiolib if they use this infrastructure
+ for all their GPIOs, usually starting with ones integrated
+ into SOC processors.
+
+menu "GPIO Support"
+ depends on HAVE_GPIO_LIB
+
+config DEBUG_GPIO
+ bool "Debug GPIO calls"
+ depends on DEBUG_KERNEL
+ help
+ Say Y here to add some extra checks and diagnostics to GPIO calls.
+ The checks help ensure that GPIOs have been properly initialized
+ before they are used and that sleeping calls aren not made from
+ nonsleeping contexts. They can make bitbanged serial protocols
+ slower. The diagnostics help catch the type of setup errors
+ that are most common when setting up new platforms or boards.
+
+# put expanders in the right section, in alphabetical order
+
+comment "I2C GPIO expanders:"
+
+comment "SPI GPIO expanders:"
+
+endmenu
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ at91/drivers/gpio/Makefile 2008-01-05 12:00:47.000000000 -0800
@@ -0,0 +1,4 @@
+# gpio support: dedicated expander chips, etc
+
+ccflags-$(CONFIG_DEBUG_GPIO) += -DDEBUG
+