Input: adp5588-keys - get value from data out when dir is out

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@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by Jean-Francois Dagenais and committed by Dmitry Torokhov 910a9f56 55df811f

Changed files
+11 -1
drivers
input
keyboard
+11 -1
drivers/input/keyboard/adp5588-keys.c
··· 76 76 struct adp5588_kpad *kpad = container_of(chip, struct adp5588_kpad, gc); 77 77 unsigned int bank = ADP5588_BANK(kpad->gpiomap[off]); 78 78 unsigned int bit = ADP5588_BIT(kpad->gpiomap[off]); 79 + int val; 79 80 80 - return !!(adp5588_read(kpad->client, GPIO_DAT_STAT1 + bank) & bit); 81 + mutex_lock(&kpad->gpio_lock); 82 + 83 + if (kpad->dir[bank] & bit) 84 + val = kpad->dat_out[bank]; 85 + else 86 + val = adp5588_read(kpad->client, GPIO_DAT_STAT1 + bank); 87 + 88 + mutex_unlock(&kpad->gpio_lock); 89 + 90 + return !!(val & bit); 81 91 } 82 92 83 93 static void adp5588_gpio_set_value(struct gpio_chip *chip,