mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 06:10:56 +00:00
gpio: sprd: Fix the incorrect data register
Since differnt type EICs have its own data register to read, thus fix the
incorrect data register.
Fixes: 25518e024e
("gpio: Add Spreadtrum EIC driver support")
Cc: <stable@vger.kernel.org>
Signed-off-by: Neo Hou <neo.hou@unisoc.com>
Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This commit is contained in:
parent
1033be5899
commit
09d158d52d
1 changed files with 12 additions and 1 deletions
|
@ -180,7 +180,18 @@ static void sprd_eic_free(struct gpio_chip *chip, unsigned int offset)
|
||||||
|
|
||||||
static int sprd_eic_get(struct gpio_chip *chip, unsigned int offset)
|
static int sprd_eic_get(struct gpio_chip *chip, unsigned int offset)
|
||||||
{
|
{
|
||||||
return sprd_eic_read(chip, offset, SPRD_EIC_DBNC_DATA);
|
struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
|
||||||
|
|
||||||
|
switch (sprd_eic->type) {
|
||||||
|
case SPRD_EIC_DEBOUNCE:
|
||||||
|
return sprd_eic_read(chip, offset, SPRD_EIC_DBNC_DATA);
|
||||||
|
case SPRD_EIC_ASYNC:
|
||||||
|
return sprd_eic_read(chip, offset, SPRD_EIC_ASYNC_DATA);
|
||||||
|
case SPRD_EIC_SYNC:
|
||||||
|
return sprd_eic_read(chip, offset, SPRD_EIC_SYNC_DATA);
|
||||||
|
default:
|
||||||
|
return -ENOTSUPP;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sprd_eic_direction_input(struct gpio_chip *chip, unsigned int offset)
|
static int sprd_eic_direction_input(struct gpio_chip *chip, unsigned int offset)
|
||||||
|
|
Loading…
Reference in a new issue