|
|
@@ -1160,8 +1160,6 @@ static unsigned int cp2112_gpio_irq_startup(struct irq_data *d)
|
|
|
|
|
|
INIT_DELAYED_WORK(&dev->gpio_poll_worker, cp2112_gpio_poll_callback);
|
|
|
|
|
|
- cp2112_gpio_direction_input(gc, d->hwirq);
|
|
|
-
|
|
|
if (!dev->gpio_poll) {
|
|
|
dev->gpio_poll = true;
|
|
|
schedule_delayed_work(&dev->gpio_poll_worker, 0);
|
|
|
@@ -1209,6 +1207,12 @@ static int __maybe_unused cp2112_allocate_irq(struct cp2112_device *dev,
|
|
|
return PTR_ERR(dev->desc[pin]);
|
|
|
}
|
|
|
|
|
|
+ ret = cp2112_gpio_direction_input(&dev->gc, pin);
|
|
|
+ if (ret < 0) {
|
|
|
+ dev_err(dev->gc.parent, "Failed to set GPIO to input dir\n");
|
|
|
+ goto err_desc;
|
|
|
+ }
|
|
|
+
|
|
|
ret = gpiochip_lock_as_irq(&dev->gc, pin);
|
|
|
if (ret) {
|
|
|
dev_err(dev->gc.parent, "Failed to lock GPIO as interrupt\n");
|