|
@@ -320,11 +320,13 @@ static void mvebu_gpio_edge_irq_mask(struct irq_data *d)
|
|
|
{
|
|
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
|
|
|
struct mvebu_gpio_chip *mvchip = gc->private;
|
|
|
+ struct irq_chip_type *ct = irq_data_get_chip_type(d);
|
|
|
u32 mask = 1 << (d->irq - gc->irq_base);
|
|
|
|
|
|
irq_gc_lock(gc);
|
|
|
- gc->mask_cache &= ~mask;
|
|
|
- writel_relaxed(gc->mask_cache, mvebu_gpioreg_edge_mask(mvchip));
|
|
|
+ ct->mask_cache_priv &= ~mask;
|
|
|
+
|
|
|
+ writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip));
|
|
|
irq_gc_unlock(gc);
|
|
|
}
|
|
|
|
|
@@ -332,11 +334,13 @@ static void mvebu_gpio_edge_irq_unmask(struct irq_data *d)
|
|
|
{
|
|
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
|
|
|
struct mvebu_gpio_chip *mvchip = gc->private;
|
|
|
+ struct irq_chip_type *ct = irq_data_get_chip_type(d);
|
|
|
+
|
|
|
u32 mask = 1 << (d->irq - gc->irq_base);
|
|
|
|
|
|
irq_gc_lock(gc);
|
|
|
- gc->mask_cache |= mask;
|
|
|
- writel_relaxed(gc->mask_cache, mvebu_gpioreg_edge_mask(mvchip));
|
|
|
+ ct->mask_cache_priv |= mask;
|
|
|
+ writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip));
|
|
|
irq_gc_unlock(gc);
|
|
|
}
|
|
|
|
|
@@ -344,11 +348,13 @@ static void mvebu_gpio_level_irq_mask(struct irq_data *d)
|
|
|
{
|
|
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
|
|
|
struct mvebu_gpio_chip *mvchip = gc->private;
|
|
|
+ struct irq_chip_type *ct = irq_data_get_chip_type(d);
|
|
|
+
|
|
|
u32 mask = 1 << (d->irq - gc->irq_base);
|
|
|
|
|
|
irq_gc_lock(gc);
|
|
|
- gc->mask_cache &= ~mask;
|
|
|
- writel_relaxed(gc->mask_cache, mvebu_gpioreg_level_mask(mvchip));
|
|
|
+ ct->mask_cache_priv &= ~mask;
|
|
|
+ writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_level_mask(mvchip));
|
|
|
irq_gc_unlock(gc);
|
|
|
}
|
|
|
|
|
@@ -356,11 +362,13 @@ static void mvebu_gpio_level_irq_unmask(struct irq_data *d)
|
|
|
{
|
|
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
|
|
|
struct mvebu_gpio_chip *mvchip = gc->private;
|
|
|
+ struct irq_chip_type *ct = irq_data_get_chip_type(d);
|
|
|
+
|
|
|
u32 mask = 1 << (d->irq - gc->irq_base);
|
|
|
|
|
|
irq_gc_lock(gc);
|
|
|
- gc->mask_cache |= mask;
|
|
|
- writel_relaxed(gc->mask_cache, mvebu_gpioreg_level_mask(mvchip));
|
|
|
+ ct->mask_cache_priv |= mask;
|
|
|
+ writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_level_mask(mvchip));
|
|
|
irq_gc_unlock(gc);
|
|
|
}
|
|
|
|