Prev: E-mail ID
Next: 2.6.35-rc3-git8 - include/linux/fdtable.h:88 invoked rcu_dereference_check() without protection!
From: Samuel Ortiz on 4 Jul 2010 18:10 On Sat, Jul 03, 2010 at 03:40:56PM +0200, Mark Brown wrote: > The debounce times are approximate, they can be selected using the two > input functions. Thanks Mark, patch applied. Cheers, Samuel. > Signed-off-by: Mark Brown <broonie(a)opensource.wolfsonmicro.com> > --- > drivers/gpio/wm831x-gpio.c | 32 ++++++++++++++++++++++++++++++++ > 1 files changed, 32 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpio/wm831x-gpio.c b/drivers/gpio/wm831x-gpio.c > index 1fa449a..309644c 100644 > --- a/drivers/gpio/wm831x-gpio.c > +++ b/drivers/gpio/wm831x-gpio.c > @@ -108,6 +108,37 @@ static int wm831x_gpio_to_irq(struct gpio_chip *chip, unsigned offset) > return wm831x->irq_base + WM831X_IRQ_GPIO_1 + offset; > } > > +static int wm831x_gpio_set_debounce(struct gpio_chip *chip, unsigned offset, > + unsigned debounce) > +{ > + struct wm831x_gpio *wm831x_gpio = to_wm831x_gpio(chip); > + struct wm831x *wm831x = wm831x_gpio->wm831x; > + int reg = WM831X_GPIO1_CONTROL + offset; > + int ret, fn; > + > + ret = wm831x_reg_read(wm831x, reg); > + if (ret < 0) > + return ret; > + > + switch (ret & WM831X_GPN_FN_MASK) { > + case 0: > + case 1: > + break; > + default: > + /* Not in GPIO mode */ > + return -EBUSY; > + } > + > + if (debounce >= 32 && debounce <= 64) > + fn = 0; > + else if (debounce >= 4000 && debounce <= 8000) > + fn = 1; > + else > + return -EINVAL; > + > + return wm831x_set_bits(wm831x, reg, WM831X_GPN_FN_MASK, fn); > +} > + > #ifdef CONFIG_DEBUG_FS > static void wm831x_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) > { > @@ -208,6 +239,7 @@ static struct gpio_chip template_chip = { > .direction_output = wm831x_gpio_direction_out, > .set = wm831x_gpio_set, > .to_irq = wm831x_gpio_to_irq, > + .set_debounce = wm831x_gpio_set_debounce, > .dbg_show = wm831x_gpio_dbg_show, > .can_sleep = 1, > }; > -- > 1.7.1 > -- Intel Open Source Technology Centre http://oss.intel.com/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |