diff --git a/package/kernel/modules/other.mk b/package/kernel/modules/other.mk index 925f87b9e7..3b8a3b3146 100644 --- a/package/kernel/modules/other.mk +++ b/package/kernel/modules/other.mk @@ -432,6 +432,22 @@ endef $(eval $(call KernelPackage,ledtrig-morse)) +define KernelPackage/gpio-dev + SUBMENU:=$(OTHER_MENU) + TITLE:=Generic GPIO char device support + DEPENDS:=@GPIO_SUPPORT + KCONFIG:=CONFIG_GPIO_DEVICE + FILES:=$(LINUX_DIR)/drivers/char/gpio_dev.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,40,gpio_dev) +endef + +define KernelPackage/gpio-dev/description + Kernel module to allows control of GPIO pins using a character device. +endef + +$(eval $(call KernelPackage,gpio-dev)) + + define KernelPackage/nsc-gpio SUBMENU:=$(OTHER_MENU) TITLE:=Natsemi GPIO support diff --git a/target/linux/generic-2.6/config-2.6.23 b/target/linux/generic-2.6/config-2.6.23 index 2f479f1ff3..0d9352b759 100644 --- a/target/linux/generic-2.6/config-2.6.23 +++ b/target/linux/generic-2.6/config-2.6.23 @@ -355,6 +355,7 @@ CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_TIME=y # CONFIG_GFS2_FS is not set +CONFIG_GPIO_DEVICE=m # CONFIG_HAMACHI is not set CONFIG_HAMRADIO=y # CONFIG_HAPPYMEAL is not set @@ -1754,4 +1755,3 @@ CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA_FLAG=1 -# CONFIG_GPIO_DEVICE is not set diff --git a/target/linux/generic-2.6/config-2.6.24 b/target/linux/generic-2.6/config-2.6.24 index c9036f97e3..f6d0a46c75 100644 --- a/target/linux/generic-2.6/config-2.6.24 +++ b/target/linux/generic-2.6/config-2.6.24 @@ -365,6 +365,7 @@ CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_TIME=y # CONFIG_GFS2_FS is not set +CONFIG_GPIO_DEVICE=m # CONFIG_HAMACHI is not set CONFIG_HAMRADIO=y # CONFIG_HAPPYMEAL is not set @@ -1806,4 +1807,3 @@ CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA_FLAG=1 -# CONFIG_GPIO_DEVICE is not set diff --git a/target/linux/generic-2.6/config-2.6.25 b/target/linux/generic-2.6/config-2.6.25 index 097b5a6750..41836c7d6b 100644 --- a/target/linux/generic-2.6/config-2.6.25 +++ b/target/linux/generic-2.6/config-2.6.25 @@ -375,6 +375,7 @@ CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_TIME=y # CONFIG_GFS2_FS is not set +CONFIG_GPIO_DEVICE=m # CONFIG_GROUP_SCHED is not set # CONFIG_HAMACHI is not set CONFIG_HAMRADIO=y @@ -1856,4 +1857,3 @@ CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA_FLAG=1 -# CONFIG_GPIO_DEVICE is not set diff --git a/target/linux/generic-2.6/config-2.6.26 b/target/linux/generic-2.6/config-2.6.26 index daffb987b0..7582e47d18 100644 --- a/target/linux/generic-2.6/config-2.6.26 +++ b/target/linux/generic-2.6/config-2.6.26 @@ -387,6 +387,7 @@ CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_TIME=y # CONFIG_GFS2_FS is not set +CONFIG_GPIO_DEVICE=m # CONFIG_GROUP_SCHED is not set # CONFIG_HAMACHI is not set CONFIG_HAMRADIO=y @@ -1900,4 +1901,3 @@ CONFIG_ZLIB_DEFLATE=y CONFIG_ZLIB_INFLATE=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA_FLAG=1 -# CONFIG_GPIO_DEVICE is not set diff --git a/target/linux/generic-2.6/config-default b/target/linux/generic-2.6/config-default index eb3e738faf..1908e5aade 100644 --- a/target/linux/generic-2.6/config-default +++ b/target/linux/generic-2.6/config-default @@ -327,6 +327,7 @@ CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_TIME=y # CONFIG_GFS2_FS is not set +CONFIG_GPIO_DEVICE=m # CONFIG_HAMACHI is not set CONFIG_HAMRADIO=y # CONFIG_HAPPYMEAL is not set diff --git a/target/linux/generic-2.6/files/drivers/gpio/gpio_dev.c b/target/linux/generic-2.6/files/drivers/char/gpio_dev.c similarity index 100% rename from target/linux/generic-2.6/files/drivers/gpio/gpio_dev.c rename to target/linux/generic-2.6/files/drivers/char/gpio_dev.c diff --git a/target/linux/generic-2.6/files/drivers/gpio/Kconfig b/target/linux/generic-2.6/files/drivers/gpio/Kconfig deleted file mode 100644 index d97fc1b4f1..0000000000 --- a/target/linux/generic-2.6/files/drivers/gpio/Kconfig +++ /dev/null @@ -1,15 +0,0 @@ -menuconfig NEW_GPIO - bool "GPIO Support" - depends on GENERIC_GPIO - help - Say Y to enable Linux GPIO device support. This allows control of - GPIO pins using a character device - -if NEW_GPIO - -config GPIO_DEVICE - tristate "GPIO device support" - help - This option enables the gpio character device - -endif # NEW_GPIO diff --git a/target/linux/generic-2.6/files/drivers/gpio/Makefile b/target/linux/generic-2.6/files/drivers/gpio/Makefile deleted file mode 100644 index 166c5c7434..0000000000 --- a/target/linux/generic-2.6/files/drivers/gpio/Makefile +++ /dev/null @@ -1 +0,0 @@ -obj-$(CONFIG_GPIO_DEVICE) += gpio_dev.o diff --git a/target/linux/generic-2.6/patches-2.6.23/420-gpiodev.patch b/target/linux/generic-2.6/patches-2.6.23/420-gpiodev.patch new file mode 100644 index 0000000000..1508685b65 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.23/420-gpiodev.patch @@ -0,0 +1,26 @@ +--- a/drivers/char/Kconfig ++++ b/drivers/char/Kconfig +@@ -970,6 +970,13 @@ + + If compiled as a module, it will be called cs5535_gpio. + ++config GPIO_DEVICE ++ tristate "GPIO device support" ++ depends on GENERIC_GPIO ++ help ++ Say Y to enable Linux GPIO device support. This allows control of ++ GPIO pins using a character device ++ + config GPIO_VR41XX + tristate "NEC VR4100 series General-purpose I/O Unit support" + depends on CPU_VR41XX +--- a/drivers/char/Makefile ++++ b/drivers/char/Makefile +@@ -93,6 +93,7 @@ + obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o + obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o + obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio.o ++obj-$(CONFIG_GPIO_DEVICE) += gpio_dev.o + obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o + obj-$(CONFIG_GPIO_TB0219) += tb0219.o + obj-$(CONFIG_TELCLOCK) += tlclk.o diff --git a/target/linux/generic-2.6/patches-2.6.23/920-gpio_dev.patch b/target/linux/generic-2.6/patches-2.6.23/920-gpio_dev.patch deleted file mode 100644 index dcbfaf588b..0000000000 --- a/target/linux/generic-2.6/patches-2.6.23/920-gpio_dev.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -1039,6 +1039,8 @@ - - source "drivers/leds/Kconfig" - -+source "drivers/gpio/Kconfig" -+ - source "drivers/media/Kconfig" - - source "drivers/video/Kconfig" ---- a/drivers/Kconfig -+++ b/drivers/Kconfig -@@ -76,6 +76,8 @@ - - source "drivers/leds/Kconfig" - -+source "drivers/gpio/Kconfig" -+ - source "drivers/infiniband/Kconfig" - - source "drivers/edac/Kconfig" ---- a/drivers/Makefile -+++ b/drivers/Makefile -@@ -89,3 +89,4 @@ - obj-$(CONFIG_HID) += hid/ - obj-$(CONFIG_PPC_PS3) += ps3/ - obj-$(CONFIG_OF) += of/ -+obj-$(CONFIG_GPIO_DEVICE) += gpio/ diff --git a/target/linux/generic-2.6/patches-2.6.24/420-gpiodev.patch b/target/linux/generic-2.6/patches-2.6.24/420-gpiodev.patch new file mode 100644 index 0000000000..98187413b3 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.24/420-gpiodev.patch @@ -0,0 +1,26 @@ +--- a/drivers/char/Kconfig ++++ b/drivers/char/Kconfig +@@ -946,6 +946,13 @@ + + If compiled as a module, it will be called cs5535_gpio. + ++config GPIO_DEVICE ++ tristate "GPIO device support" ++ depends on GENERIC_GPIO ++ help ++ Say Y to enable Linux GPIO device support. This allows control of ++ GPIO pins using a character device ++ + config GPIO_VR41XX + tristate "NEC VR4100 series General-purpose I/O Unit support" + depends on CPU_VR41XX +--- a/drivers/char/Makefile ++++ b/drivers/char/Makefile +@@ -93,6 +93,7 @@ + obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o + obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o + obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio.o ++obj-$(CONFIG_GPIO_DEVICE) += gpio_dev.o + obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o + obj-$(CONFIG_GPIO_TB0219) += tb0219.o + obj-$(CONFIG_TELCLOCK) += tlclk.o diff --git a/target/linux/generic-2.6/patches-2.6.24/920-gpio_dev.patch b/target/linux/generic-2.6/patches-2.6.24/920-gpio_dev.patch deleted file mode 100644 index e0a8aa3f55..0000000000 --- a/target/linux/generic-2.6/patches-2.6.24/920-gpio_dev.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -1054,6 +1054,8 @@ - - source "drivers/mfd/Kconfig" - -+source "drivers/gpio/Kconfig" -+ - source "drivers/media/Kconfig" - - source "drivers/video/Kconfig" ---- a/drivers/Kconfig -+++ b/drivers/Kconfig -@@ -78,6 +78,8 @@ - - source "drivers/leds/Kconfig" - -+source "drivers/gpio/Kconfig" -+ - source "drivers/infiniband/Kconfig" - - source "drivers/edac/Kconfig" ---- a/drivers/Makefile -+++ b/drivers/Makefile -@@ -91,3 +91,4 @@ - obj-$(CONFIG_OF) += of/ - obj-$(CONFIG_SSB) += ssb/ - obj-$(CONFIG_VIRTIO) += virtio/ -+obj-$(CONFIG_GPIO_DEVICE) += gpio/ diff --git a/target/linux/generic-2.6/patches/420-gpiodev.patch b/target/linux/generic-2.6/patches/420-gpiodev.patch new file mode 100644 index 0000000000..a4f2236f70 --- /dev/null +++ b/target/linux/generic-2.6/patches/420-gpiodev.patch @@ -0,0 +1,26 @@ +--- a/drivers/char/Kconfig ++++ b/drivers/char/Kconfig +@@ -984,6 +984,13 @@ + + If compiled as a module, it will be called cs5535_gpio. + ++config GPIO_DEVICE ++ tristate "GPIO device support" ++ depends on GENERIC_GPIO ++ help ++ Say Y to enable Linux GPIO device support. This allows control of ++ GPIO pins using a character device ++ + config GPIO_VR41XX + tristate "NEC VR4100 series General-purpose I/O Unit support" + depends on CPU_VR41XX +--- a/drivers/char/Makefile ++++ b/drivers/char/Makefile +@@ -90,6 +90,7 @@ + obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o + obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o + obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio.o ++obj-$(CONFIG_GPIO_DEVICE) += gpio_dev.o + obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o + obj-$(CONFIG_TANBAC_TB0219) += tb0219.o + obj-$(CONFIG_TELCLOCK) += tlclk.o diff --git a/target/linux/pxa/patches-2.6.21/011-proc-gpio.patch b/target/linux/pxa/patches-2.6.21/011-proc-gpio.patch index 8b4383cd51..479a070b55 100644 --- a/target/linux/pxa/patches-2.6.21/011-proc-gpio.patch +++ b/target/linux/pxa/patches-2.6.21/011-proc-gpio.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.21.7/arch/arm/Kconfig -=================================================================== ---- linux-2.6.21.7.orig/arch/arm/Kconfig -+++ linux-2.6.21.7/arch/arm/Kconfig -@@ -505,6 +505,8 @@ config PCI_HOST_VIA82C505 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -505,6 +505,8 @@ depends on PCI && ARCH_SHARK default y @@ -11,38 +9,16 @@ Index: linux-2.6.21.7/arch/arm/Kconfig source "drivers/pci/Kconfig" source "drivers/pcmcia/Kconfig" -Index: linux-2.6.21.7/drivers/Makefile -=================================================================== ---- linux-2.6.21.7.orig/drivers/Makefile -+++ linux-2.6.21.7/drivers/Makefile -@@ -81,3 +81,4 @@ obj-$(CONFIG_GENERIC_TIME) += clocksourc +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -81,3 +81,4 @@ obj-$(CONFIG_DMA_ENGINE) += dma/ obj-$(CONFIG_HID) += hid/ obj-$(CONFIG_PPC_PS3) += ps3/ +obj-$(CONFIG_PROC_GPIO) += gpio/ -Index: linux-2.6.21.7/drivers/gpio/Kconfig -=================================================================== ---- linux-2.6.21.7.orig/drivers/gpio/Kconfig -+++ linux-2.6.21.7/drivers/gpio/Kconfig -@@ -2,14 +2,27 @@ menuconfig NEW_GPIO - bool "GPIO Support" - depends on GENERIC_GPIO - help -- Say Y to enable Linux GPIO device support. This allows control of -- GPIO pins using a character device -+ Say Y to enable Linux GPIO device support. This allows control of -+ GPIO pins using a character device - - if NEW_GPIO - - config GPIO_DEVICE - tristate "GPIO device support" - help -- This option enables the gpio character device -+ This option enables the gpio character device - - endif # NEW_GPIO -+ +--- /dev/null ++++ b/drivers/gpio/Kconfig +@@ -0,0 +1,13 @@ +config PROC_GPIO + tristate "GPIO /proc interface" + depends on PXA25x || PXA27x @@ -55,19 +31,14 @@ Index: linux-2.6.21.7/drivers/gpio/Kconfig + depends on PROC_GPIO + help + This enables printk logging of activity done through /proc/gpio -Index: linux-2.6.21.7/drivers/gpio/Makefile -=================================================================== ---- linux-2.6.21.7.orig/drivers/gpio/Makefile -+++ linux-2.6.21.7/drivers/gpio/Makefile -@@ -1 +1,4 @@ - obj-$(CONFIG_GPIO_DEVICE) += gpio_dev.o + +--- /dev/null ++++ b/drivers/gpio/Makefile +@@ -0,0 +1,2 @@ +# Expose GPIOs under /proc +obj-$(CONFIG_PROC_GPIO) += proc_gpio.o -Index: linux-2.6.21.7/drivers/gpio/proc_gpio.c -=================================================================== --- /dev/null -+++ linux-2.6.21.7/drivers/gpio/proc_gpio.c ++++ b/drivers/gpio/proc_gpio.c @@ -0,0 +1,276 @@ +/* + *