diff options
-rw-r--r-- | arch/i386/kernel/scx200.c | 3 | ||||
-rw-r--r-- | drivers/char/scx200_gpio.c | 16 |
2 files changed, 17 insertions, 2 deletions
diff --git a/arch/i386/kernel/scx200.c b/arch/i386/kernel/scx200.c index 9e96a785dd0..009e6aa16f7 100644 --- a/arch/i386/kernel/scx200.c +++ b/arch/i386/kernel/scx200.c @@ -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); diff --git a/drivers/char/scx200_gpio.c b/drivers/char/scx200_gpio.c index e6e52c48697..a1a56c5c8a8 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, { 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; } |