Lines Matching refs:p
56 struct irqc_priv *p; member
77 dev_dbg(&i->p->pdev->dev, "%s (%d:%d)\n", in irqc_dbg()
91 struct irqc_priv *p = irq_data_to_priv(d); in irqc_irq_set_type() local
96 irqc_dbg(&p->irq[hw_irq], "sense"); in irqc_irq_set_type()
101 tmp = ioread32(p->iomem + IRQC_CONFIG(hw_irq)); in irqc_irq_set_type()
104 iowrite32(tmp, p->iomem + IRQC_CONFIG(hw_irq)); in irqc_irq_set_type()
110 struct irqc_priv *p = irq_data_to_priv(d); in irqc_irq_set_wake() local
113 irq_set_irq_wake(p->irq[hw_irq].requested_irq, on); in irqc_irq_set_wake()
115 if (!p->clk) in irqc_irq_set_wake()
119 clk_enable(p->clk); in irqc_irq_set_wake()
121 clk_disable(p->clk); in irqc_irq_set_wake()
129 struct irqc_priv *p = i->p; in irqc_irq_handler() local
134 if (ioread32(p->iomem + DETECT_STATUS) & bit) { in irqc_irq_handler()
135 iowrite32(bit, p->iomem + DETECT_STATUS); in irqc_irq_handler()
137 generic_handle_irq(irq_find_mapping(p->irq_domain, i->hw_irq)); in irqc_irq_handler()
145 struct irqc_priv *p; in irqc_probe() local
152 p = kzalloc(sizeof(*p), GFP_KERNEL); in irqc_probe()
153 if (!p) { in irqc_probe()
159 p->pdev = pdev; in irqc_probe()
160 platform_set_drvdata(pdev, p); in irqc_probe()
162 p->clk = devm_clk_get(&pdev->dev, NULL); in irqc_probe()
163 if (IS_ERR(p->clk)) { in irqc_probe()
165 p->clk = NULL; in irqc_probe()
185 p->irq[k].p = p; in irqc_probe()
186 p->irq[k].hw_irq = k; in irqc_probe()
187 p->irq[k].requested_irq = irq->start; in irqc_probe()
190 p->number_of_irqs = k; in irqc_probe()
191 if (p->number_of_irqs < 1) { in irqc_probe()
198 p->iomem = ioremap_nocache(io->start, resource_size(io)); in irqc_probe()
199 if (!p->iomem) { in irqc_probe()
205 p->cpu_int_base = p->iomem + IRQC_INT_CPU_BASE(0); /* SYS-SPI */ in irqc_probe()
207 p->irq_domain = irq_domain_add_linear(pdev->dev.of_node, in irqc_probe()
208 p->number_of_irqs, in irqc_probe()
209 &irq_generic_chip_ops, p); in irqc_probe()
210 if (!p->irq_domain) { in irqc_probe()
216 ret = irq_alloc_domain_generic_chips(p->irq_domain, p->number_of_irqs, in irqc_probe()
224 p->gc = irq_get_domain_generic_chip(p->irq_domain, 0); in irqc_probe()
225 p->gc->reg_base = p->cpu_int_base; in irqc_probe()
226 p->gc->chip_types[0].regs.enable = IRQC_EN_SET; in irqc_probe()
227 p->gc->chip_types[0].regs.disable = IRQC_EN_STS; in irqc_probe()
228 p->gc->chip_types[0].chip.irq_mask = irq_gc_mask_disable_reg; in irqc_probe()
229 p->gc->chip_types[0].chip.irq_unmask = irq_gc_unmask_enable_reg; in irqc_probe()
230 p->gc->chip_types[0].chip.irq_set_type = irqc_irq_set_type; in irqc_probe()
231 p->gc->chip_types[0].chip.irq_set_wake = irqc_irq_set_wake; in irqc_probe()
232 p->gc->chip_types[0].chip.flags = IRQCHIP_MASK_ON_SUSPEND; in irqc_probe()
235 for (k = 0; k < p->number_of_irqs; k++) { in irqc_probe()
236 if (request_irq(p->irq[k].requested_irq, irqc_irq_handler, in irqc_probe()
237 0, name, &p->irq[k])) { in irqc_probe()
244 dev_info(&pdev->dev, "driving %d irqs\n", p->number_of_irqs); in irqc_probe()
249 free_irq(p->irq[k].requested_irq, &p->irq[k]); in irqc_probe()
252 irq_domain_remove(p->irq_domain); in irqc_probe()
254 iounmap(p->iomem); in irqc_probe()
258 kfree(p); in irqc_probe()
265 struct irqc_priv *p = platform_get_drvdata(pdev); in irqc_remove() local
268 for (k = 0; k < p->number_of_irqs; k++) in irqc_remove()
269 free_irq(p->irq[k].requested_irq, &p->irq[k]); in irqc_remove()
271 irq_domain_remove(p->irq_domain); in irqc_remove()
272 iounmap(p->iomem); in irqc_remove()
275 kfree(p); in irqc_remove()