@@ -158,6 +158,30 @@ static void dwapb_irq_handler(u32 irq, struct
irq_desc *desc)
chip->irq_eoi(irq_desc_get_irq_data(desc));
}
+static void dwapb_irq_mask(struct irq_data *d)
+{
+ struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d);
+ struct dwapb_gpio *gpio = igc->private;
+
+ spin_lock_irqsave(&bgc->lock, flags);
+ val = dwapb_read(gpio, GPIO_INTMASK);
+ val |= BIT(d->hwirq);
+ dwapb_write(gpio, GPIO_INTMASK, val);
+ spin_unlock_irqrestore(&bgc->lock, flags);
+}
+
+static void dwapb_irq_unmask(struct irq_data *d)
+{
+ struct irq_chip_generic *igc = irq_data_get_irq_chip_data(d);
+ struct dwapb_gpio *gpio = igc->private;
+
+ spin_lock_irqsave(&bgc->lock, flags);
+ val = dwapb_read(gpio, GPIO_INTMASK);
+ val &= ~BIT(d->hwirq);
+ dwapb_write(gpio, GPIO_INTMASK, val);
+ spin_unlock_irqrestore(&bgc->lock, flags);
+}
+
static void dwapb_irq_enable(struct irq_data *d)
{