Skip to content

Commit 09d158d

Browse files
Neo Houbrgl
authored andcommitted
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: 25518e0 ("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>
1 parent 1033be5 commit 09d158d

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

drivers/gpio/gpio-eic-sprd.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,18 @@ static void sprd_eic_free(struct gpio_chip *chip, unsigned int offset)
180180

181181
static int sprd_eic_get(struct gpio_chip *chip, unsigned int offset)
182182
{
183-
return sprd_eic_read(chip, offset, SPRD_EIC_DBNC_DATA);
183+
struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
184+
185+
switch (sprd_eic->type) {
186+
case SPRD_EIC_DEBOUNCE:
187+
return sprd_eic_read(chip, offset, SPRD_EIC_DBNC_DATA);
188+
case SPRD_EIC_ASYNC:
189+
return sprd_eic_read(chip, offset, SPRD_EIC_ASYNC_DATA);
190+
case SPRD_EIC_SYNC:
191+
return sprd_eic_read(chip, offset, SPRD_EIC_SYNC_DATA);
192+
default:
193+
return -ENOTSUPP;
194+
}
184195
}
185196

186197
static int sprd_eic_direction_input(struct gpio_chip *chip, unsigned int offset)

0 commit comments

Comments
 (0)