diff options
Diffstat (limited to 'packages/linux/linux-2.6.26/boc01/011-081105-gpio.patch')
-rw-r--r-- | packages/linux/linux-2.6.26/boc01/011-081105-gpio.patch | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/packages/linux/linux-2.6.26/boc01/011-081105-gpio.patch b/packages/linux/linux-2.6.26/boc01/011-081105-gpio.patch deleted file mode 100644 index 86bf4ff84b..0000000000 --- a/packages/linux/linux-2.6.26/boc01/011-081105-gpio.patch +++ /dev/null @@ -1,161 +0,0 @@ -diff -Nru linux-2.6.26-officiel/drivers/char/Kconfig /home/guilig/workspace/kernel-goobie-2.6.26/src/drivers/char/Kconfig ---- linux-2.6.26-officiel/drivers/char/Kconfig 2008-07-13 23:51:29.000000000 +0200 -+++ /home/guilig/workspace/kernel-goobie-2.6.26/src/drivers/char/Kconfig 2008-09-26 14:44:59.000000000 +0200 -@@ -1006,6 +1006,14 @@ - tristate "NEC VR4100 series General-purpose I/O Unit support" - depends on CPU_VR41XX - -+config GPIO_MPC8313 -+ tristate "mpc8313e gpio" -+ depends on PPC_MPC831x -+ select INPUT -+ default y -+ help -+ test -+ - config RAW_DRIVER - tristate "RAW driver (/dev/raw/rawN)" - depends on BLOCK -diff -Nru linux-2.6.26-officiel/drivers/char/Makefile /home/guilig/workspace/kernel-goobie-2.6.26/src/drivers/char/Makefile ---- linux-2.6.26-officiel/drivers/char/Makefile 2008-07-13 23:51:29.000000000 +0200 -+++ /home/guilig/workspace/kernel-goobie-2.6.26/src/drivers/char/Makefile 2008-09-26 14:44:59.000000000 +0200 -@@ -111,6 +111,8 @@ - obj-$(CONFIG_PS3_FLASH) += ps3flash.o - - obj-$(CONFIG_JS_RTC) += js-rtc.o -+ -+obj-$(CONFIG_GPIO_MPC8313) += mpc8313e_gpio.o - js-rtc-y = rtc.o - - # Files generated that shall be removed upon make clean -diff -Nru linux-2.6.26-officiel/drivers/char/mpc8313e_gpio.c /home/guilig/workspace/kernel-goobie-2.6.26/src/drivers/char/mpc8313e_gpio.c ---- linux-2.6.26-officiel/drivers/char/mpc8313e_gpio.c 1970-01-01 01:00:00.000000000 +0100 -+++ /home/guilig/workspace/kernel-goobie-2.6.26/src/drivers/char/mpc8313e_gpio.c 2008-09-26 14:44:59.000000000 +0200 -@@ -0,0 +1,127 @@ -+/* linux/drivers/char/mpc8313e_gpio.c -+ -+ Allows a user space process to control the GPIO pins. -+ -+ -+*/ -+ -+#include <linux/fs.h> -+#include <linux/module.h> -+#include <linux/errno.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <asm/uaccess.h> -+#include <asm/io.h> -+#include <linux/of_platform.h> -+#include <sysdev/fsl_soc.h> -+ -+MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>"); -+MODULE_DESCRIPTION("mpc8313e GPIO"); -+MODULE_LICENSE("GPL"); -+ -+static int major = 0; -+struct gpio { -+ __be32 gpdir; -+ __be32 gpodr; -+ __be32 gpdat; -+ __be32 gpier; -+ __be32 gpimr; -+ __be32 gpicr; -+} __attribute__ ((packed)); -+static struct gpio *gpio_regs; -+ -+static ssize_t mpc8313e_gpio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos) -+{ -+ unsigned m = iminor(file->f_path.dentry->d_inode); -+ size_t i; -+ int err = 0; -+ -+ for (i = 0; i < len; ++i) { -+ char c; -+ if (get_user(c, data + i)) -+ return -EFAULT; -+ /* set GPIO as output */ -+ setbits32(&gpio_regs->gpdir, 1 << (31 - m)); -+ clrbits32(&gpio_regs->gpodr, 1 << (31 - m)); -+ switch (c) { -+ case '0': -+ /*Set GPIO level */ -+ clrbits32(&gpio_regs->gpdat, 1 << (31 - m)); -+ break; -+ case '1': -+ /*Set GPIO level */ -+ setbits32(&gpio_regs->gpdat, 1 << (31 - m)); -+ break; -+ default: -+ printk(KERN_DEBUG "io%2d bad setting: chr<0x%2x>\n", -+ m, (int)c); -+ err++; -+ } -+ } -+ if (err) -+ return -EINVAL; -+ -+ return len; -+} -+ -+static ssize_t mpc8313e_gpio_read(struct file *file, char __user * buf, size_t len, loff_t * ppos) -+{ -+ unsigned m = iminor(file->f_path.dentry->d_inode); -+ int value; -+ value=in_be32(&gpio_regs->gpdat)&(1 << (31 - m)); -+ if (value) -+ put_user(1, buf); -+ else -+ put_user(0, buf); -+ -+ return 0; -+ -+} -+ -+static int mpc8313e_gpio_open(struct inode *inode, struct file *file) -+{ -+ return 0; -+} -+ -+static int mpc8313e_gpio_close(struct inode *inode, struct file *file) -+{ -+ printk(KERN_DEBUG "close()\n"); -+ return 0; -+} -+ -+struct file_operations fops = -+{ -+ .read = mpc8313e_gpio_read, -+ .write = mpc8313e_gpio_write, -+ .open = mpc8313e_gpio_open, -+ .release = mpc8313e_gpio_close /* correspond a close */ -+}; -+ -+static int __init mpc8313e_gpio_init(void) -+{ -+ int ret; -+ -+ ret = register_chrdev(major, "gpio", &fops); -+ if(ret < 0) -+ { -+ printk(KERN_WARNING "Probleme sur le major\n"); -+ return ret; -+ } -+ -+ /* System I/O Configuration Register Low */ -+ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20); -+ if (!gpio_regs) -+ return -ENOMEM; -+ return 0; -+ -+} -+ -+static void __exit mpc8313e_gpio_cleanup(void) -+{ -+ unregister_chrdev(major, "gpio"); -+} -+ -+module_init(mpc8313e_gpio_init); -+module_exit(mpc8313e_gpio_cleanup); -+ -+ |