aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/scx200_gpio.c
diff options
context:
space:
mode:
authorJim Cromie <jim.cromie@gmail.com>2006-06-27 05:54:16 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-27 20:32:42 -0400
commit9550a339e1ab1709dd53d92a1b76eecae2df9f3c (patch)
treea5bea006ebb482c6f4468816486254c401803282 /drivers/char/scx200_gpio.c
parentd424aa8744b7b7db1d32476ae6c8015d10eebe1c (diff)
[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: Jim Cromie <jim.cromie@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/scx200_gpio.c')
-rw-r--r--drivers/char/scx200_gpio.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/char/scx200_gpio.c b/drivers/char/scx200_gpio.c
index e6e52c48697b..a1a56c5c8a84 100644
--- a/drivers/char/scx200_gpio.c
+++ b/drivers/char/scx200_gpio.c
@@ -41,6 +41,7 @@ static ssize_t scx200_gpio_write(struct file *file, const char __user *data,
41{ 41{
42 unsigned m = iminor(file->f_dentry->d_inode); 42 unsigned m = iminor(file->f_dentry->d_inode);
43 size_t i; 43 size_t i;
44 int err = 0;
44 45
45 for (i = 0; i < len; ++i) { 46 for (i = 0; i < len; ++i) {
46 char c; 47 char c;
@@ -77,8 +78,23 @@ static ssize_t scx200_gpio_write(struct file *file, const char __user *data,
77 printk(KERN_INFO NAME ": GPIO%d pull up disabled\n", m); 78 printk(KERN_INFO NAME ": GPIO%d pull up disabled\n", m);
78 scx200_gpio_configure(m, ~4, 0); 79 scx200_gpio_configure(m, ~4, 0);
79 break; 80 break;
81
82 case 'v':
83 /* View Current pin settings */
84 scx200_gpio_dump(m);
85 break;
86 case '\n':
87 /* end of settings string, do nothing */
88 break;
89 default:
90 printk(KERN_ERR NAME
91 ": GPIO-%2d bad setting: chr<0x%2x>\n", m,
92 (int)c);
93 err++;
80 } 94 }
81 } 95 }
96 if (err)
97 return -EINVAL; /* full string handled, report error */
82 98
83 return len; 99 return len;
84} 100}