From: blogic Date: Thu, 11 Oct 2012 11:58:09 +0000 (+0000) Subject: [kernel] gpiodev/gpioctl RIP X-Git-Url: https://git.archive.openwrt.org/?p=openwrt.git;a=commitdiff_plain;h=19c78e190526b81e2c2fca6a53fcd141a8dd03b4 [kernel] gpiodev/gpioctl RIP git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33725 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/package/gpioctl/Makefile b/package/gpioctl/Makefile deleted file mode 100644 index 50c4d3c659..0000000000 --- a/package/gpioctl/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (C) 2008 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/kernel.mk - -PKG_NAME:=gpioctl -PKG_RELEASE:=1 -PKG_VERSION:=1.0 - -include $(INCLUDE_DIR)/package.mk - -define Package/gpioctl - SECTION:=utils - CATEGORY:=Utilities - TITLE:=Tool for controlling gpio pins - DEPENDS:=@GPIO_SUPPORT -endef - -define Package/gpioctl/description - Tool for controlling gpio pins -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) - $(CP) ./src/* $(PKG_BUILD_DIR)/ -endef - -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) \ - $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include" -endef - -define Package/gpioctl/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/gpioctl $(1)/usr/bin/ -endef - -$(eval $(call BuildPackage,gpioctl)) diff --git a/package/gpioctl/src/Makefile b/package/gpioctl/src/Makefile deleted file mode 100644 index 467697410a..0000000000 --- a/package/gpioctl/src/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -PROGS = gpioctl - -INSTDIR = $(prefix)/usr/bin -INSTMODE = 0755 -INSTOWNER = root -INSTGROUP = root - -OBJS = main.o - -all: $(PROGS) -$(PROGS): $(OBJS) - $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@ - $(STRIP) $@ - -%.o: %.c - $(CC) -c $(CFLAGS) $^ -o $@ - -install: $(PROGS) - $(INSTALL) -d $(INSTDIR) - $(INSTALL) -m $(INSTMODE) -o $(INSTOWNER) -g $(INSTGROUP) $(PROGS) $(INSTDIR) - -clean: - rm -f $(PROGS) *.o core - diff --git a/package/gpioctl/src/main.c b/package/gpioctl/src/main.c deleted file mode 100644 index 8ad27749b4..0000000000 --- a/package/gpioctl/src/main.c +++ /dev/null @@ -1,76 +0,0 @@ -/* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA -* -* Feedback, Bugs... blogic@openwrt.org -* -*/ - -#include -#include -#include -#include -#include -#include -#include - -void -print_usage() -{ - printf("gpioctl dirin|dirout|get|set|clear gpio\n"); - exit(0); -} - -int -main(int argc, char **argv) -{ - int gpio_pin; - int fd; - int result = 0; - - if (argc != 3) - { - print_usage(); - } - - if ((fd = open("/dev/gpio", O_RDWR)) < 0) - { - printf("Error whilst opening /dev/gpio\n"); - return -1; - } - - gpio_pin = atoi(argv[2]); - - printf("using gpio pin %d\n", gpio_pin); - - if (!strcmp(argv[1], "dirin")) - { - ioctl(fd, GPIO_DIR_IN, gpio_pin); - } else if (!strcmp(argv[1], "dirout")) - { - ioctl(fd, GPIO_DIR_OUT, gpio_pin); - } else if (!strcmp(argv[1], "get")) - { - result = ioctl(fd, GPIO_GET, gpio_pin); - printf("Pin %d is %s\n", gpio_pin, (result ? "HIGH" : "LOW")); - } else if (!strcmp(argv[1], "set")) - { - ioctl(fd, GPIO_SET, gpio_pin); - } else if (!strcmp(argv[1], "clear")) - { - ioctl(fd, GPIO_CLEAR, gpio_pin); - } else print_usage(); - - return result; -} diff --git a/target/linux/at91/9260/profiles/001-flexibity-xwrt.mk b/target/linux/at91/9260/profiles/001-flexibity-xwrt.mk index b1c5269292..fcd06999fd 100644 --- a/target/linux/at91/9260/profiles/001-flexibity-xwrt.mk +++ b/target/linux/at91/9260/profiles/001-flexibity-xwrt.mk @@ -13,7 +13,7 @@ define Profile/flexibity-xwrt usb-modem-nokia-5800 wpa-cli wpa-supplicant motion badblocks blkid cifsmount disktype dosfsck dosfslabel e2fsprogs \ fuse-utils mkdosfs nfs-utils ntfs-3g ntfs-3g-utils reiserfsprogs resize2fs sysfsutils tune2fs uuidgen certtool \ gnutls-utils picocom setterm unrar unzip sqlite3-cli alsa-utils anyremote bluez-utils bzip2 comgt crypto-tools \ - file flock gdbserver gnupg gpioctl gsm-utils gzip huaweiaktbbo hwclock i2c-tools input-utils ldd lsof mdadm \ + file flock gdbserver gnupg gsm-utils gzip huaweiaktbbo hwclock i2c-tools input-utils ldd lsof mdadm \ module-init-tools mount-utils openssl-util procps psmisc px5g screen strace stress sysstat uboot-envtools \ usb-modeswitch usb-modeswitch-data usbutils lua endef diff --git a/target/linux/at91/9260/profiles/002-flexibity-luci.mk b/target/linux/at91/9260/profiles/002-flexibity-luci.mk index 433239be65..7985990014 100644 --- a/target/linux/at91/9260/profiles/002-flexibity-luci.mk +++ b/target/linux/at91/9260/profiles/002-flexibity-luci.mk @@ -13,7 +13,7 @@ define Profile/flexibity-luci usb-modem-nokia-5800 wpa-cli wpa-supplicant motion badblocks blkid cifsmount disktype dosfsck dosfslabel e2fsprogs \ fuse-utils mkdosfs nfs-utils ntfs-3g ntfs-3g-utils reiserfsprogs resize2fs sysfsutils tune2fs uuidgen certtool \ gnutls-utils picocom setterm unrar unzip sqlite3-cli alsa-utils anyremote bluez-utils bzip2 comgt crypto-tools \ - file flock gdbserver gnupg gpioctl gsm-utils gzip huaweiaktbbo hwclock i2c-tools input-utils ldd lsof mdadm \ + file flock gdbserver gnupg gsm-utils gzip huaweiaktbbo hwclock i2c-tools input-utils ldd lsof mdadm \ module-init-tools mount-utils openssl-util procps psmisc px5g screen strace stress sysstat uboot-envtools \ usb-modeswitch usb-modeswitch-data usbutils lua endef diff --git a/target/linux/at91/config-default b/target/linux/at91/config-default index c30edb4585..97c98989a7 100644 --- a/target/linux/at91/config-default +++ b/target/linux/at91/config-default @@ -73,7 +73,6 @@ CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GPIOLIB=y -CONFIG_GPIO_DEVICE=y CONFIG_GPIO_SYSFS=y # CONFIG_HAMRADIO is not set CONFIG_HARDIRQS_SW_RESEND=y diff --git a/target/linux/atheros/Makefile b/target/linux/atheros/Makefile index ce2a90dc96..1fe2179854 100644 --- a/target/linux/atheros/Makefile +++ b/target/linux/atheros/Makefile @@ -15,7 +15,7 @@ LINUX_VERSION:=3.3.8 include $(INCLUDE_DIR)/target.mk -DEFAULT_PACKAGES += wpad-mini kmod-ath5k gpioctl swconfig +DEFAULT_PACKAGES += wpad-mini kmod-ath5k swconfig define Target/Description Build firmware images for Atheros SoC boards diff --git a/target/linux/atheros/config-3.3 b/target/linux/atheros/config-3.3 index 524965f5dd..9f68b4e62f 100644 --- a/target/linux/atheros/config-3.3 +++ b/target/linux/atheros/config-3.3 @@ -39,7 +39,6 @@ CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GPIOLIB=y -CONFIG_GPIO_DEVICE=y CONFIG_GPIO_SYSFS=y # CONFIG_HAMRADIO is not set CONFIG_HARDWARE_WATCHPOINTS=y diff --git a/target/linux/generic/config-3.3 b/target/linux/generic/config-3.3 index e21e17f70d..d52a3a542e 100644 --- a/target/linux/generic/config-3.3 +++ b/target/linux/generic/config-3.3 @@ -801,7 +801,6 @@ CONFIG_GENERIC_TIME=y # CONFIG_GPIO_ADP5588 is not set # CONFIG_GPIO_BT8XX is not set # CONFIG_GPIO_CS5535 is not set -# CONFIG_GPIO_DEVICE is not set # CONFIG_GPIO_GENERIC_PLATFORM is not set # CONFIG_GPIO_IT8761E is not set # CONFIG_GPIO_LANGWELL is not set diff --git a/target/linux/generic/files/drivers/char/gpio_dev.c b/target/linux/generic/files/drivers/char/gpio_dev.c deleted file mode 100644 index c741573026..0000000000 --- a/target/linux/generic/files/drivers/char/gpio_dev.c +++ /dev/null @@ -1,181 +0,0 @@ -/* - * character device wrapper for generic gpio layer - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA - * - * Feedback, Bugs... blogic@openwrt.org - * - * dpg 20100106 - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define DRVNAME "gpiodev" -#define DEVNAME "gpio" - -static int dev_major; -static struct class *gpiodev_class; - - -/* third argument of user space ioctl ('arg' here) contains the */ -static int -gpio_ioctl(struct file *file, unsigned int cmd, unsigned long arg) -{ - int retval = 0; - - switch (cmd) - { - case GPIO_GET: - retval = gpio_get_value(arg); - break; - case GPIO_SET: - gpio_set_value(arg, 1); - break; - case GPIO_CLEAR: - gpio_set_value(arg, 0); - break; - case GPIO_DIR_IN: - retval = gpio_direction_input(arg); - break; - case GPIO_DIR_OUT: - retval = gpio_direction_output(arg, 0); - break; - case GPIO_DIR_HIGH: - retval = gpio_direction_output(arg, 1); - break; - case GPIO_REQUEST: - /* should be first ioctl operation on */ - retval = gpio_request(arg, DRVNAME); - break; - case GPIO_FREE: - /* should be last ioctl operation on */ - /* may be needed first if previous user missed this ioctl */ - gpio_free(arg); - break; - case GPIO_CAN_SLEEP: - retval = gpio_cansleep(arg); - break; - default: - retval = -EINVAL; - /* = -ENOTTY; // correct return but ... */ - break; - } - return retval; -} - -/* Allow co-incident opens */ -static int -gpio_open(struct inode *inode, struct file *file) -{ - int result = 0; - unsigned int dev_minor = MINOR(inode->i_rdev); - - if (dev_minor != 0) - { - printk(KERN_ERR DRVNAME ": trying to access unknown minor device -> %d\n", dev_minor); - result = -ENODEV; - goto out; - } -out: - return result; -} - -static int -gpio_close(struct inode * inode, struct file * file) -{ - /* could track all s requested by this fd and gpio_free() - * them here - */ - return 0; -} - -struct file_operations gpio_fops = { - unlocked_ioctl: gpio_ioctl, - open: gpio_open, - release: gpio_close -}; - -static int -gpio_probe(struct platform_device *dev) -{ - int result = 0; - - dev_major = register_chrdev(0, DEVNAME, &gpio_fops); - if (!dev_major) - { - printk(KERN_ERR DRVNAME ": Error whilst opening %s \n", DEVNAME); - result = -ENODEV; - goto out; - } - gpiodev_class = class_create(THIS_MODULE, DRVNAME); - device_create(gpiodev_class, NULL, MKDEV(dev_major, 0), dev, DEVNAME); - printk(KERN_INFO DRVNAME ": gpio device registered with major %d\n", dev_major); -out: - return result; -} - -static int -gpio_remove(struct platform_device *dev) -{ - device_destroy(gpiodev_class, MKDEV(dev_major, 0)); - class_destroy(gpiodev_class); - unregister_chrdev(dev_major, DEVNAME); - return 0; -} - -static struct -platform_driver gpio_driver = { - .probe = gpio_probe, - .remove = gpio_remove, - .driver = { - .name = "GPIODEV", - .owner = THIS_MODULE, - }, -}; - -static int __init -gpio_mod_init(void) -{ - int ret = platform_driver_register(&gpio_driver); - if (ret) - printk(KERN_INFO DRVNAME ": Error registering platfom driver!\n"); - - return ret; -} - -static void __exit -gpio_mod_exit(void) -{ - platform_driver_unregister(&gpio_driver); -} - -module_init (gpio_mod_init); -module_exit (gpio_mod_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("John Crispin / OpenWrt +"); -MODULE_DESCRIPTION("Character device for for generic gpio api"); diff --git a/target/linux/generic/files/include/linux/gpio_dev.h b/target/linux/generic/files/include/linux/gpio_dev.h deleted file mode 100644 index a2a4b51c78..0000000000 --- a/target/linux/generic/files/include/linux/gpio_dev.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef _GPIO_DEV_H__ -#define _GPIO_DEV_H__ - -/********************************************************************* - * - * This Linux kernel header is expanded from the original driver - * (gpio_dev) by John Crispin. It provides an ioctl based interface to - * GPIO pins via the /dev/gpio char device and gpiolib within the kernel. - * The third argument to each ioctl is the GPIO pin number. - * - * This driver has been tested with lk 2.6.31 and works. The original - * driver fails quietly with this version. The protocol is now a bit - * different: the ioctl(fd, GPIO_REQUEST, ) should be called - * after the open("/dev/gpio", O_RDWR) to determine if the is - * already in use. If the ioctl is successful (i.e. returns 0 for not - * in use) then the is claimed by this driver and - * ioctl(fd, GPIO_FREE, ) should be called prior to close(fd) . - * - * See /Documentation/gpio.txt - * Note that kernel designers prefer the use of the sysfs gpio interface. - * This char driver is easier to use from code and faster. - ********************************************************************/ - -/* This header can be included in both the user and kernel spaces */ -/* The _IO macro is defined in sys/ioctl.h */ - -#define IOC_GPIODEV_MAGIC 'B' - -#define GPIO_GET _IO(IOC_GPIODEV_MAGIC, 10) -#define GPIO_SET _IO(IOC_GPIODEV_MAGIC, 11) -#define GPIO_CLEAR _IO(IOC_GPIODEV_MAGIC, 12) -#define GPIO_DIR_IN _IO(IOC_GPIODEV_MAGIC, 13) -#define GPIO_DIR_OUT _IO(IOC_GPIODEV_MAGIC, 14) - /* Sets the direction out and clears the (low) */ - -#define GPIO_DIR_HIGH _IO(IOC_GPIODEV_MAGIC, 15) - /* Sets the direction out and sets the (high) */ -#define GPIO_REQUEST _IO(IOC_GPIODEV_MAGIC, 16) -#define GPIO_FREE _IO(IOC_GPIODEV_MAGIC, 17) -#define GPIO_CAN_SLEEP _IO(IOC_GPIODEV_MAGIC, 18) - -#endif diff --git a/target/linux/generic/patches-3.3/835-gpiodev.patch b/target/linux/generic/patches-3.3/835-gpiodev.patch deleted file mode 100644 index f41d5a6850..0000000000 --- a/target/linux/generic/patches-3.3/835-gpiodev.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- a/drivers/char/Kconfig -+++ b/drivers/char/Kconfig -@@ -511,6 +511,14 @@ config NSC_GPIO - pc8736x_gpio drivers. If those drivers are built as - modules, this one will be too, named nsc_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 RAW_DRIVER - tristate "RAW driver (/dev/raw/rawN)" - depends on BLOCK ---- a/drivers/char/Makefile -+++ b/drivers/char/Makefile -@@ -47,6 +47,7 @@ obj-$(CONFIG_NWFLASH) += nwflash.o - obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o - obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o - obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o -+obj-$(CONFIG_GPIO_DEVICE) += gpio_dev.o - obj-$(CONFIG_GPIO_TB0219) += tb0219.o - obj-$(CONFIG_TELCLOCK) += tlclk.o - diff --git a/target/linux/ixp4xx/config-3.3 b/target/linux/ixp4xx/config-3.3 index 20dc4926d9..abe6c6d8ee 100644 --- a/target/linux/ixp4xx/config-3.3 +++ b/target/linux/ixp4xx/config-3.3 @@ -58,7 +58,6 @@ CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GPIOLIB=y -CONFIG_GPIO_DEVICE=y CONFIG_GPIO_GW_I2C_PLD=y CONFIG_GPIO_SYSFS=y # CONFIG_HAMRADIO is not set diff --git a/target/linux/mpc83xx/config-3.3 b/target/linux/mpc83xx/config-3.3 index 925274c47f..04f78ff231 100644 --- a/target/linux/mpc83xx/config-3.3 +++ b/target/linux/mpc83xx/config-3.3 @@ -106,7 +106,6 @@ CONFIG_GEN_RTC=y # CONFIG_GEN_RTC_X is not set CONFIG_GIANFAR=y CONFIG_GPIOLIB=y -CONFIG_GPIO_DEVICE=y CONFIG_GPIO_MPC8XXX=y CONFIG_GPIO_SYSFS=y # CONFIG_HAMRADIO is not set diff --git a/target/linux/omap35xx/config-2.6.32 b/target/linux/omap35xx/config-2.6.32 index cea215c6cf..f05758a701 100644 --- a/target/linux/omap35xx/config-2.6.32 +++ b/target/linux/omap35xx/config-2.6.32 @@ -394,7 +394,6 @@ CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_TIME=y -# CONFIG_GPIO_DEVICE is not set CONFIG_GPIOLIB=y # CONFIG_GPIO_MAX7301 is not set # CONFIG_GPIO_MAX732X is not set diff --git a/target/linux/orion/dns323/config-3.3 b/target/linux/orion/dns323/config-3.3 index b0daf7f223..cc5b4a679c 100644 --- a/target/linux/orion/dns323/config-3.3 +++ b/target/linux/orion/dns323/config-3.3 @@ -19,7 +19,6 @@ CONFIG_EXT2_FS=y CONFIG_EXT3_FS=y CONFIG_EXT4_FS=y CONFIG_FS_MBCACHE=y -CONFIG_GPIO_DEVICE=y CONFIG_INPUT=y CONFIG_INPUT_EVDEV=y CONFIG_INPUT_KEYBOARD=y diff --git a/target/linux/s3c24xx/openmoko-gta02/config-2.6.30 b/target/linux/s3c24xx/openmoko-gta02/config-2.6.30 index df5b6cafed..5e18640f3f 100644 --- a/target/linux/s3c24xx/openmoko-gta02/config-2.6.30 +++ b/target/linux/s3c24xx/openmoko-gta02/config-2.6.30 @@ -101,7 +101,6 @@ CONFIG_GENERIC_FIND_LAST_BIT=y CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y # CONFIG_GENERIC_TIME is not set -CONFIG_GPIO_DEVICE=y CONFIG_GPIOLIB=y CONFIG_GPIO_SYSFS=y # CONFIG_HAMRADIO is not set