Lines Matching +full:at91rm9200 +full:- +full:aic

2  * Atmel AT91 AIC (Advanced Interrupt Controller) driver
9 * Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
34 #include "irq-atmel-aic-common.h"
36 /* Number of irq lines managed by AIC */
62 struct irq_domain_chip_generic *dgc = aic_domain->gc; in aic_handle()
63 struct irq_chip_generic *gc = dgc->gc[0]; in aic_handle()
82 irq_reg_writel(gc, d->mask, AT91_AIC_ISCR); in aic_retrigger()
94 smr = irq_reg_readl(gc, AT91_AIC_SMR(d->hwirq)); in aic_set_type()
99 irq_reg_writel(gc, smr, AT91_AIC_SMR(d->hwirq)); in aic_set_type()
110 irq_reg_writel(gc, gc->mask_cache, AT91_AIC_IDCR); in aic_suspend()
111 irq_reg_writel(gc, gc->wake_active, AT91_AIC_IECR); in aic_suspend()
120 irq_reg_writel(gc, gc->wake_active, AT91_AIC_IDCR); in aic_resume()
121 irq_reg_writel(gc, gc->mask_cache, AT91_AIC_IECR); in aic_resume()
146 * Perform 8 End Of Interrupt Command to make sure AIC in aic_hw_init()
159 /* No debugging in AIC: Debug (Protect) Control Register */ in aic_hw_init()
176 struct irq_domain_chip_generic *dgc = d->gc; in aic_irq_domain_xlate()
184 return -EINVAL; in aic_irq_domain_xlate()
191 idx = intspec[0] / dgc->irqs_per_chip; in aic_irq_domain_xlate()
192 if (idx >= dgc->num_chips) in aic_irq_domain_xlate()
193 return -EINVAL; in aic_irq_domain_xlate()
195 gc = dgc->gc[idx]; in aic_irq_domain_xlate()
228 { .compatible = "atmel,at91rm9200", .data = at91rm9200_aic_irq_fixup },
247 return -EEXIST; in aic_of_init()
249 domain = aic_common_of_init(node, &aic_irq_ops, "atmel-aic", in aic_of_init()
257 gc->chip_types[0].regs.eoi = AT91_AIC_EOICR; in aic_of_init()
258 gc->chip_types[0].regs.enable = AT91_AIC_IECR; in aic_of_init()
259 gc->chip_types[0].regs.disable = AT91_AIC_IDCR; in aic_of_init()
260 gc->chip_types[0].chip.irq_mask = irq_gc_mask_disable_reg; in aic_of_init()
261 gc->chip_types[0].chip.irq_unmask = irq_gc_unmask_enable_reg; in aic_of_init()
262 gc->chip_types[0].chip.irq_retrigger = aic_retrigger; in aic_of_init()
263 gc->chip_types[0].chip.irq_set_type = aic_set_type; in aic_of_init()
264 gc->chip_types[0].chip.irq_suspend = aic_suspend; in aic_of_init()
265 gc->chip_types[0].chip.irq_resume = aic_resume; in aic_of_init()
266 gc->chip_types[0].chip.irq_pm_shutdown = aic_pm_shutdown; in aic_of_init()
273 IRQCHIP_DECLARE(at91rm9200_aic, "atmel,at91rm9200-aic", aic_of_init);