summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/irqchip/irq-atmel-aic.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/irqchip/irq-atmel-aic.c')
-rw-r--r--kernel/drivers/irqchip/irq-atmel-aic.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/drivers/irqchip/irq-atmel-aic.c b/kernel/drivers/irqchip/irq-atmel-aic.c
index 8a0c7f288..981c3959d 100644
--- a/kernel/drivers/irqchip/irq-atmel-aic.c
+++ b/kernel/drivers/irqchip/irq-atmel-aic.c
@@ -176,6 +176,7 @@ static int aic_irq_domain_xlate(struct irq_domain *d,
{
struct irq_domain_chip_generic *dgc = d->gc;
struct irq_chip_generic *gc;
+ unsigned long flags;
unsigned smr;
int idx;
int ret;
@@ -194,12 +195,12 @@ static int aic_irq_domain_xlate(struct irq_domain *d,
gc = dgc->gc[idx];
- irq_gc_lock(gc);
+ irq_gc_lock_irqsave(gc, flags);
smr = irq_reg_readl(gc, AT91_AIC_SMR(*out_hwirq));
ret = aic_common_set_priority(intspec[2], &smr);
if (!ret)
irq_reg_writel(gc, smr, AT91_AIC_SMR(*out_hwirq));
- irq_gc_unlock(gc);
+ irq_gc_unlock_irqrestore(gc, flags);
return ret;
}