Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6362ec27 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Mike Frysinger
Browse files

Blackfin: switch /proc/gpio to seq_file



->read_proc interface is going away, switch to seq_file.

Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent d763c58a
Loading
Loading
Loading
Loading
+20 −11
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/err.h>
#include <linux/err.h>
#include <linux/proc_fs.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <asm/blackfin.h>
#include <asm/blackfin.h>
#include <asm/gpio.h>
#include <asm/gpio.h>
#include <asm/portmux.h>
#include <asm/portmux.h>
@@ -1204,35 +1205,43 @@ void bfin_reset_boot_spi_cs(unsigned short pin)
}
}


#if defined(CONFIG_PROC_FS)
#if defined(CONFIG_PROC_FS)
static int gpio_proc_read(char *buf, char **start, off_t offset,
static int gpio_proc_show(struct seq_file *m, void *v)
			  int len, int *unused_i, void *unused_v)
{
{
	int c, irq, gpio, outlen = 0;
	int c, irq, gpio;


	for (c = 0; c < MAX_RESOURCES; c++) {
	for (c = 0; c < MAX_RESOURCES; c++) {
		irq = is_reserved(gpio_irq, c, 1);
		irq = is_reserved(gpio_irq, c, 1);
		gpio = is_reserved(gpio, c, 1);
		gpio = is_reserved(gpio, c, 1);
		if (!check_gpio(c) && (gpio || irq))
		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_label(c), (gpio && irq) ? " *" : "",
				 get_gpio_dir(c) ? "OUTPUT" : "INPUT");
				 get_gpio_dir(c) ? "OUTPUT" : "INPUT");
		else if (is_reserved(peri, c, 1))
		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
		else
			continue;
			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)
static __init int gpio_register_proc(void)
{
{
	struct proc_dir_entry *proc_gpio;
	struct proc_dir_entry *proc_gpio;


	proc_gpio = create_proc_entry("gpio", S_IRUGO, NULL);
	proc_gpio = proc_create("gpio", S_IRUGO, NULL, &gpio_proc_ops);
	if (proc_gpio)
		proc_gpio->read_proc = gpio_proc_read;
	return proc_gpio != NULL;
	return proc_gpio != NULL;
}
}
__initcall(gpio_register_proc);
__initcall(gpio_register_proc);