Loading arch/blackfin/kernel/bfin_gpio.c +20 −11 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ #include <linux/module.h> #include <linux/err.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <asm/blackfin.h> #include <asm/gpio.h> #include <asm/portmux.h> Loading Loading @@ -1204,35 +1205,43 @@ void bfin_reset_boot_spi_cs(unsigned short pin) } #if defined(CONFIG_PROC_FS) static int gpio_proc_read(char *buf, char **start, off_t offset, int len, int *unused_i, void *unused_v) static int gpio_proc_show(struct seq_file *m, void *v) { int c, irq, gpio, outlen = 0; int c, irq, gpio; for (c = 0; c < MAX_RESOURCES; c++) { irq = is_reserved(gpio_irq, c, 1); gpio = is_reserved(gpio, c, 1); if (!check_gpio(c) && (gpio || irq)) len = sprintf(buf, "GPIO_%d: \t%s%s \t\tGPIO %s\n", c, seq_printf(m, "GPIO_%d: \t%s%s \t\tGPIO %s\n", c, get_label(c), (gpio && irq) ? " *" : "", get_gpio_dir(c) ? "OUTPUT" : "INPUT"); else if (is_reserved(peri, c, 1)) len = sprintf(buf, "GPIO_%d: \t%s \t\tPeripheral\n", c, get_label(c)); seq_printf(m, "GPIO_%d: \t%s \t\tPeripheral\n", c, get_label(c)); else continue; buf += len; outlen += len; } return outlen; return 0; } static int gpio_proc_open(struct inode *inode, struct file *file) { return single_open(file, gpio_proc_show, NULL); } static const struct file_operations gpio_proc_ops = { .open = gpio_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; static __init int gpio_register_proc(void) { struct proc_dir_entry *proc_gpio; proc_gpio = create_proc_entry("gpio", S_IRUGO, NULL); if (proc_gpio) proc_gpio->read_proc = gpio_proc_read; proc_gpio = proc_create("gpio", S_IRUGO, NULL, &gpio_proc_ops); return proc_gpio != NULL; } __initcall(gpio_register_proc); Loading Loading
arch/blackfin/kernel/bfin_gpio.c +20 −11 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ #include <linux/module.h> #include <linux/err.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <asm/blackfin.h> #include <asm/gpio.h> #include <asm/portmux.h> Loading Loading @@ -1204,35 +1205,43 @@ void bfin_reset_boot_spi_cs(unsigned short pin) } #if defined(CONFIG_PROC_FS) static int gpio_proc_read(char *buf, char **start, off_t offset, int len, int *unused_i, void *unused_v) static int gpio_proc_show(struct seq_file *m, void *v) { int c, irq, gpio, outlen = 0; int c, irq, gpio; for (c = 0; c < MAX_RESOURCES; c++) { irq = is_reserved(gpio_irq, c, 1); gpio = is_reserved(gpio, c, 1); if (!check_gpio(c) && (gpio || irq)) len = sprintf(buf, "GPIO_%d: \t%s%s \t\tGPIO %s\n", c, seq_printf(m, "GPIO_%d: \t%s%s \t\tGPIO %s\n", c, get_label(c), (gpio && irq) ? " *" : "", get_gpio_dir(c) ? "OUTPUT" : "INPUT"); else if (is_reserved(peri, c, 1)) len = sprintf(buf, "GPIO_%d: \t%s \t\tPeripheral\n", c, get_label(c)); seq_printf(m, "GPIO_%d: \t%s \t\tPeripheral\n", c, get_label(c)); else continue; buf += len; outlen += len; } return outlen; return 0; } static int gpio_proc_open(struct inode *inode, struct file *file) { return single_open(file, gpio_proc_show, NULL); } static const struct file_operations gpio_proc_ops = { .open = gpio_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; static __init int gpio_register_proc(void) { struct proc_dir_entry *proc_gpio; proc_gpio = create_proc_entry("gpio", S_IRUGO, NULL); if (proc_gpio) proc_gpio->read_proc = gpio_proc_read; proc_gpio = proc_create("gpio", S_IRUGO, NULL, &gpio_proc_ops); return proc_gpio != NULL; } __initcall(gpio_register_proc); Loading