Messages in this thread | | | Date | Tue, 8 Oct 2013 15:48:02 +0800 | Subject | Re: [PATCH] pinctrl: pinctrl-adi2: GPIO output value should be set after the GPIO interrupt is disabled. | From | Axel Lin <> |
| |
2013/10/8 Sonic Zhang <sonic.adi@gmail.com>: > From: Sonic Zhang <sonic.zhang@analog.com> > > Use BIT macro as well. > > Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> > --- > drivers/pinctrl/pinctrl-adi2.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/pinctrl/pinctrl-adi2.c b/drivers/pinctrl/pinctrl-adi2.c > index a74e6f4..7a39562 100644 > --- a/drivers/pinctrl/pinctrl-adi2.c > +++ b/drivers/pinctrl/pinctrl-adi2.c > @@ -766,9 +766,9 @@ static void adi_gpio_set_value(struct gpio_chip *chip, unsigned offset, > spin_lock_irqsave(&port->lock, flags); > > if (value) > - writew(1 << offset, ®s->data_set); > + writew(BIT(offset), ®s->data_set); > else > - writew(1 << offset, ®s->data_clear); > + writew(BIT(offset), ®s->data_clear); > > spin_unlock_irqrestore(&port->lock, flags); > } > @@ -780,12 +780,14 @@ static int adi_gpio_direction_output(struct gpio_chip *chip, unsigned offset, > struct gpio_port_t *regs = port->regs; > unsigned long flags; > > - adi_gpio_set_value(chip, offset, value); > - > spin_lock_irqsave(&port->lock, flags); > > - writew(readw(®s->inen) & ~(1 << offset), ®s->inen); > - writew(1 << offset, ®s->dir_set); > + writew(readw(®s->inen) & ~BIT(offset), ®s->inen); > + if (value) > + writew(BIT(offset), ®s->data_set); > + else > + writew(BIT(offset), ®s->data_clear);
I think we can add an unlocked version of adi_gpio_set_value() to avoid duplicated code.
| |