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

Commit 0e41ef3c authored by Jim Cromie's avatar Jim Cromie Committed by Linus Torvalds
Browse files

[PATCH] chardev: GPIO for SCx200 & PC-8736x: migrate gpio_dump to common module



Since the meaning of config-bits is the same for scx200 and pc8736x _gpios, we
can share a function to deliver this to user.  Since it is called via the
vtable, its also completely replaceable.  For now, we keep using printk...

Signed-off-by: default avatarJim Cromie <jim.cromie@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 1a66fdf0
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -110,21 +110,6 @@ u32 scx200_gpio_configure(unsigned index, u32 mask, u32 bits)
	return config;
}

void scx200_gpio_dump(unsigned index)
{
        u32 config = scx200_gpio_configure(index, ~0, 0);

        printk(KERN_INFO NAME ": GPIO-%02u: 0x%08lx %s %s %s %s %s %s %s\n",
               index, (unsigned long) config,
               (config & 1) ? "OE"      : "TS",		/* output enabled / tristate */
               (config & 2) ? "PP"      : "OD",		/* push pull / open drain */
               (config & 4) ? "PUE"     : "PUD",	/* pull up enabled/disabled */
               (config & 8) ? "LOCKED"  : "",		/* locked / unlocked */
               (config & 16) ? "LEVEL"  : "EDGE",	/* level/edge input */
               (config & 32) ? "HI"     : "LO",		/* trigger on rising/falling edge */
               (config & 64) ? "DEBOUNCE" : "");	/* debounce */
}

static int __init scx200_init(void)
{
	printk(KERN_INFO NAME ": NatSemi SCx200 Driver\n");
@@ -144,5 +129,4 @@ module_exit(scx200_cleanup);
EXPORT_SYMBOL(scx200_gpio_base);
EXPORT_SYMBOL(scx200_gpio_shadow);
EXPORT_SYMBOL(scx200_gpio_configure);
EXPORT_SYMBOL(scx200_gpio_dump);
EXPORT_SYMBOL(scx200_cb_base);
+15 −1
Original line number Diff line number Diff line
@@ -19,6 +19,19 @@

#define NAME "nsc_gpio"

void nsc_gpio_dump(unsigned index, u32 config)
{
	printk(KERN_INFO NAME ": GPIO-%02u: 0x%08lx %s %s %s %s %s %s %s\n",
	       index, (unsigned long)config,
	       (config & 1) ? "OE" : "TS",      /* output-enabled/tristate */
	       (config & 2) ? "PP" : "OD",      /* push pull / open drain */
	       (config & 4) ? "PUE" : "PUD",    /* pull up enabled/disabled */
	       (config & 8) ? "LOCKED" : "",    /* locked / unlocked */
	       (config & 16) ? "LEVEL" : "EDGE",/* level/edge input */
	       (config & 32) ? "HI" : "LO",     /* trigger on rise/fall edge */
	       (config & 64) ? "DEBOUNCE" : "");        /* debounce */
}

ssize_t nsc_gpio_write(struct file *file, const char __user *data,
		       size_t len, loff_t *ppos)
{
@@ -99,9 +112,10 @@ ssize_t nsc_gpio_read(struct file *file, char __user * buf,
	return 1;
}

/* common routines for both scx200_gpio and pc87360_gpio */
/* common file-ops routines for both scx200_gpio and pc87360_gpio */
EXPORT_SYMBOL(nsc_gpio_write);
EXPORT_SYMBOL(nsc_gpio_read);
EXPORT_SYMBOL(nsc_gpio_dump);

static int __init nsc_gpio_init(void)
{
+2 −2
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ static int major = 0; /* default to dynamic major */
module_param(major, int, 0);
MODULE_PARM_DESC(major, "Major device number");

extern void scx200_gpio_dump(unsigned index);
extern void nsc_gpio_dump(unsigned index);

extern ssize_t nsc_gpio_write(struct file *file, const char __user *data,
			      size_t len, loff_t *ppos);
@@ -46,7 +46,7 @@ extern ssize_t nsc_gpio_read(struct file *file, char __user *buf,
struct nsc_gpio_ops scx200_access = {
	.owner		= THIS_MODULE,
	.gpio_config	= scx200_gpio_configure,
	.gpio_dump	= scx200_gpio_dump,
	.gpio_dump	= nsc_gpio_dump,
	.gpio_get	= scx200_gpio_get,
	.gpio_set	= scx200_gpio_set,
	.gpio_set_high	= scx200_gpio_set_high,