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

Commit 9550a339 authored by Jim Cromie's avatar Jim Cromie Committed by Linus Torvalds
Browse files

[PATCH] chardev: GPIO for SCx200 & PC-8736x: add 'v' command to device-file



Add a new driver command: 'v' which calls gpio_dump() on the pin.  The output
goes to the log, like all other INFO messages in the original driver.  Giving
the user control over the feedback they 'need' is construed to be a
user-friendly feature, and allows us (later) to dial down many INFO messages
to DEBUG log-level.

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 d424aa87
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -105,7 +105,6 @@ u32 scx200_gpio_configure(unsigned index, u32 mask, u32 bits)
	return config;
}

#if 0
void scx200_gpio_dump(unsigned index)
{
        u32 config = scx200_gpio_configure(index, ~0, 0);
@@ -120,7 +119,6 @@ void scx200_gpio_dump(unsigned index)
               (config & 32) ? "HI"     : "LO",		/* trigger on rising/falling edge */
               (config & 64) ? "DEBOUNCE" : "");	/* debounce */
}
#endif  /*  0  */

static int __init scx200_init(void)
{
@@ -141,4 +139,5 @@ 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);
+16 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ static ssize_t scx200_gpio_write(struct file *file, const char __user *data,
{
	unsigned m = iminor(file->f_dentry->d_inode);
	size_t i;
	int err = 0;

	for (i = 0; i < len; ++i) {
		char c;
@@ -77,8 +78,23 @@ static ssize_t scx200_gpio_write(struct file *file, const char __user *data,
			printk(KERN_INFO NAME ": GPIO%d pull up disabled\n", m);
			scx200_gpio_configure(m, ~4, 0);
			break;

		case 'v':
			/* View Current pin settings */
			scx200_gpio_dump(m);
			break;
		case '\n':
			/* end of settings string, do nothing */
			break;
		default:
			printk(KERN_ERR NAME
			       ": GPIO-%2d bad setting: chr<0x%2x>\n", m,
			       (int)c);
			err++;
		}
	}
	if (err)
		return -EINVAL;	/* full string handled, report error */

	return len;
}