diff options
Diffstat (limited to 'drivers/gpio/gpio-merrifield.c')
-rw-r--r-- | drivers/gpio/gpio-merrifield.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-merrifield.c b/drivers/gpio/gpio-merrifield.c index 69e0f4ace465..f40088d268c1 100644 --- a/drivers/gpio/gpio-merrifield.c +++ b/drivers/gpio/gpio-merrifield.c | |||
@@ -190,6 +190,18 @@ static int mrfld_gpio_set_debounce(struct gpio_chip *chip, unsigned int offset, | |||
190 | return 0; | 190 | return 0; |
191 | } | 191 | } |
192 | 192 | ||
193 | static int mrfld_gpio_set_config(struct gpio_chip *chip, unsigned int offset, | ||
194 | unsigned long config) | ||
195 | { | ||
196 | u32 debounce; | ||
197 | |||
198 | if (pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE) | ||
199 | return -ENOTSUPP; | ||
200 | |||
201 | debounce = pinconf_to_config_argument(config); | ||
202 | return mrfld_gpio_set_debounce(chip, offset, debounce); | ||
203 | } | ||
204 | |||
193 | static void mrfld_irq_ack(struct irq_data *d) | 205 | static void mrfld_irq_ack(struct irq_data *d) |
194 | { | 206 | { |
195 | struct mrfld_gpio *priv = irq_data_get_irq_chip_data(d); | 207 | struct mrfld_gpio *priv = irq_data_get_irq_chip_data(d); |
@@ -414,7 +426,7 @@ static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id | |||
414 | priv->chip.get = mrfld_gpio_get; | 426 | priv->chip.get = mrfld_gpio_get; |
415 | priv->chip.set = mrfld_gpio_set; | 427 | priv->chip.set = mrfld_gpio_set; |
416 | priv->chip.get_direction = mrfld_gpio_get_direction; | 428 | priv->chip.get_direction = mrfld_gpio_get_direction; |
417 | priv->chip.set_debounce = mrfld_gpio_set_debounce; | 429 | priv->chip.set_config = mrfld_gpio_set_config; |
418 | priv->chip.base = gpio_base; | 430 | priv->chip.base = gpio_base; |
419 | priv->chip.ngpio = MRFLD_NGPIO; | 431 | priv->chip.ngpio = MRFLD_NGPIO; |
420 | priv->chip.can_sleep = false; | 432 | priv->chip.can_sleep = false; |