On Mon, Feb 10, 2014 at 12:05:29PM -0500, Jean-Francois Dagenais wrote: > As discussed here: http://ez.analog.com/message/35852, > the 5587 revC and 5588 revB spec sheets contain a mistake > in the GPIO_DAT_STATx register description. > > According to R.Shnell at ADI, as well as my own > observations, it should read: > "GPIO data status (shows GPIO state when read for inputs)". > > This commit changes the get value function accordingly. > > Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@xxxxxxxxx> Applied, thank you. > --- > drivers/input/keyboard/adp5588-keys.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/input/keyboard/adp5588-keys.c b/drivers/input/keyboard/adp5588-keys.c > index bb3b57b..5ef7fcf 100644 > --- a/drivers/input/keyboard/adp5588-keys.c > +++ b/drivers/input/keyboard/adp5588-keys.c > @@ -76,8 +76,18 @@ static int adp5588_gpio_get_value(struct gpio_chip *chip, unsigned off) > struct adp5588_kpad *kpad = container_of(chip, struct adp5588_kpad, gc); > unsigned int bank = ADP5588_BANK(kpad->gpiomap[off]); > unsigned int bit = ADP5588_BIT(kpad->gpiomap[off]); > + int val; > > - return !!(adp5588_read(kpad->client, GPIO_DAT_STAT1 + bank) & bit); > + mutex_lock(&kpad->gpio_lock); > + > + if (kpad->dir[bank] & bit) > + val = kpad->dat_out[bank]; > + else > + val = adp5588_read(kpad->client, GPIO_DAT_STAT1 + bank); > + > + mutex_unlock(&kpad->gpio_lock); > + > + return !!(val & bit); > } > > static void adp5588_gpio_set_value(struct gpio_chip *chip, > -- > 1.8.5.3 > -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html