|
|
@@ -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)
|
|
|
{
|
|
|
- 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)
|