Lines Matching refs:pic
16 #include <asm/megamod-pic.h>
59 struct megamod_pic *pic;
67 struct megamod_pic *pic = irq_data_get_irq_chip_data(data);
69 u32 __iomem *evtmask = &pic->regs->evtmask[src / 32];
71 raw_spin_lock(&pic->lock);
73 raw_spin_unlock(&pic->lock);
78 struct megamod_pic *pic = irq_data_get_irq_chip_data(data);
80 u32 __iomem *evtmask = &pic->regs->evtmask[src / 32];
82 raw_spin_lock(&pic->lock);
84 raw_spin_unlock(&pic->lock);
96 struct megamod_pic *pic;
103 pic = cascade->pic;
106 while ((events = soc_readl(&pic->regs->mevtflag[idx])) != 0) {
109 irq = irq_linear_revmap(pic->irqhost, idx * 32 + n);
111 soc_writel(1 << n, &pic->regs->evtclr[idx]);
120 struct megamod_pic *pic = h->host_data;
125 if (pic->output_to_irq[i] == hw)
128 irq_set_chip_data(virq, pic);
142 static void __init set_megamod_mux(struct megamod_pic *pic, int src, int output)
148 pic->output_to_irq[output] = IRQ_UNMAPPED;
156 val = soc_readl(&pic->regs->intmux[index]);
159 soc_writel(val, &pic->regs->intmux[index]);
175 static void __init parse_priority_map(struct megamod_pic *pic,
178 struct device_node *np = irq_domain_get_of_node(pic->irqhost);
183 map = of_get_property(np, "ti,c64x+megamod-pic-mux", &maplen);
200 struct megamod_pic *pic;
206 pic = kzalloc(sizeof(struct megamod_pic), GFP_KERNEL);
207 if (!pic) {
212 pic->irqhost = irq_domain_add_linear(np, NR_COMBINERS * 32,
213 &megamod_domain_ops, pic);
214 if (!pic->irqhost) {
219 pic->irqhost->host_data = pic;
221 raw_spin_lock_init(&pic->lock);
223 pic->regs = of_iomap(np, 0);
224 if (!pic->regs) {
233 parse_priority_map(pic, mapping, ARRAY_SIZE(mapping));
276 cascade_data[i].pic = pic;
280 soc_writel(~0, &pic->regs->evtmask[i]);
281 soc_writel(~0, &pic->regs->evtclr[i]);
292 set_megamod_mux(pic, mapping[i], i);
296 return pic;
299 kfree(pic);
333 np = of_find_compatible_node(NULL, NULL, "ti,c64x+megamod-pic");