|
@@ -373,6 +373,7 @@ static void bcm_kona_gpio_irq_mask(struct irq_data *d)
|
|
|
val = readl(reg_base + GPIO_INT_MASK(bank_id));
|
|
|
val |= BIT(bit);
|
|
|
writel(val, reg_base + GPIO_INT_MASK(bank_id));
|
|
|
+ gpiochip_disable_irq(&kona_gpio->gpio_chip, gpio);
|
|
|
|
|
|
raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
|
|
|
}
|
|
@@ -394,6 +395,7 @@ static void bcm_kona_gpio_irq_unmask(struct irq_data *d)
|
|
|
val = readl(reg_base + GPIO_INT_MSKCLR(bank_id));
|
|
|
val |= BIT(bit);
|
|
|
writel(val, reg_base + GPIO_INT_MSKCLR(bank_id));
|
|
|
+ gpiochip_enable_irq(&kona_gpio->gpio_chip, gpio);
|
|
|
|
|
|
raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
|
|
|
}
|
|
@@ -485,23 +487,15 @@ static void bcm_kona_gpio_irq_handler(struct irq_desc *desc)
|
|
|
static int bcm_kona_gpio_irq_reqres(struct irq_data *d)
|
|
|
{
|
|
|
struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d);
|
|
|
- int ret;
|
|
|
|
|
|
- ret = gpiochip_lock_as_irq(&kona_gpio->gpio_chip, d->hwirq);
|
|
|
- if (ret) {
|
|
|
- dev_err(kona_gpio->gpio_chip.parent,
|
|
|
- "unable to lock HW IRQ %lu for IRQ\n",
|
|
|
- d->hwirq);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- return 0;
|
|
|
+ return gpiochip_reqres_irq(&kona_gpio->gpio_chip, d->hwirq);
|
|
|
}
|
|
|
|
|
|
static void bcm_kona_gpio_irq_relres(struct irq_data *d)
|
|
|
{
|
|
|
struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d);
|
|
|
|
|
|
- gpiochip_unlock_as_irq(&kona_gpio->gpio_chip, d->hwirq);
|
|
|
+ gpiochip_relres_irq(&kona_gpio->gpio_chip, d->hwirq);
|
|
|
}
|
|
|
|
|
|
static struct irq_chip bcm_gpio_irq_chip = {
|