Lines Matching full:irqc
46 static void xintc_write(struct xintc_irq_chip *irqc, int reg, u32 data) in xintc_write() argument
49 iowrite32be(data, irqc->base + reg); in xintc_write()
51 iowrite32(data, irqc->base + reg); in xintc_write()
54 static u32 xintc_read(struct xintc_irq_chip *irqc, int reg) in xintc_read() argument
57 return ioread32be(irqc->base + reg); in xintc_read()
59 return ioread32(irqc->base + reg); in xintc_read()
64 struct xintc_irq_chip *irqc = irq_data_get_irq_chip_data(d); in intc_enable_or_unmask() local
74 xintc_write(irqc, IAR, mask); in intc_enable_or_unmask()
76 xintc_write(irqc, SIE, mask); in intc_enable_or_unmask()
81 struct xintc_irq_chip *irqc = irq_data_get_irq_chip_data(d); in intc_disable_or_mask() local
84 xintc_write(irqc, CIE, BIT(d->hwirq)); in intc_disable_or_mask()
89 struct xintc_irq_chip *irqc = irq_data_get_irq_chip_data(d); in intc_ack() local
92 xintc_write(irqc, IAR, BIT(d->hwirq)); in intc_ack()
97 struct xintc_irq_chip *irqc = irq_data_get_irq_chip_data(d); in intc_mask_ack() local
101 xintc_write(irqc, CIE, mask); in intc_mask_ack()
102 xintc_write(irqc, IAR, mask); in intc_mask_ack()
113 static unsigned int xintc_get_irq_local(struct xintc_irq_chip *irqc) in xintc_get_irq_local() argument
118 hwirq = xintc_read(irqc, IVR); in xintc_get_irq_local()
120 irq = irq_find_mapping(irqc->root_domain, hwirq); in xintc_get_irq_local()
143 struct xintc_irq_chip *irqc = d->host_data; in xintc_map() local
145 if (irqc->intr_mask & BIT(hw)) { in xintc_map()
154 irq_set_chip_data(irq, irqc); in xintc_map()
166 struct xintc_irq_chip *irqc; in xil_intc_irq_handler() local
169 irqc = irq_data_get_irq_handler_data(&desc->irq_data); in xil_intc_irq_handler()
172 pending = xintc_get_irq_local(irqc); in xil_intc_irq_handler()
183 struct xintc_irq_chip *irqc; in xilinx_intc_of_init() local
186 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL); in xilinx_intc_of_init()
187 if (!irqc) in xilinx_intc_of_init()
189 irqc->base = of_iomap(intc, 0); in xilinx_intc_of_init()
190 BUG_ON(!irqc->base); in xilinx_intc_of_init()
192 ret = of_property_read_u32(intc, "xlnx,num-intr-inputs", &irqc->nr_irq); in xilinx_intc_of_init()
198 ret = of_property_read_u32(intc, "xlnx,kind-of-intr", &irqc->intr_mask); in xilinx_intc_of_init()
201 irqc->intr_mask = 0; in xilinx_intc_of_init()
204 if (irqc->intr_mask >> irqc->nr_irq) in xilinx_intc_of_init()
208 intc, irqc->nr_irq, irqc->intr_mask); in xilinx_intc_of_init()
215 xintc_write(irqc, IER, 0); in xilinx_intc_of_init()
218 xintc_write(irqc, IAR, 0xffffffff); in xilinx_intc_of_init()
221 xintc_write(irqc, MER, MER_HIE | MER_ME); in xilinx_intc_of_init()
222 if (xintc_read(irqc, MER) != (MER_HIE | MER_ME)) { in xilinx_intc_of_init()
224 xintc_write(irqc, MER, MER_HIE | MER_ME); in xilinx_intc_of_init()
227 irqc->root_domain = irq_domain_add_linear(intc, irqc->nr_irq, in xilinx_intc_of_init()
228 &xintc_irq_domain_ops, irqc); in xilinx_intc_of_init()
229 if (!irqc->root_domain) { in xilinx_intc_of_init()
240 irqc); in xilinx_intc_of_init()
247 primary_intc = irqc; in xilinx_intc_of_init()
254 iounmap(irqc->base); in xilinx_intc_of_init()
255 kfree(irqc); in xilinx_intc_of_init()