Lines Matching refs:pic

76 static void __iomem *spider_get_irq_config(struct spider_pic *pic,  in spider_get_irq_config()  argument
79 return pic->regs + TIR_CFGA + 8 * src; in spider_get_irq_config()
84 struct spider_pic *pic = spider_irq_data_to_pic(d); in spider_unmask_irq() local
85 void __iomem *cfg = spider_get_irq_config(pic, irqd_to_hwirq(d)); in spider_unmask_irq()
92 struct spider_pic *pic = spider_irq_data_to_pic(d); in spider_mask_irq() local
93 void __iomem *cfg = spider_get_irq_config(pic, irqd_to_hwirq(d)); in spider_mask_irq()
100 struct spider_pic *pic = spider_irq_data_to_pic(d); in spider_ack_irq() local
113 out_be32(pic->regs + TIR_EDC, 0x100 | (src & 0xf)); in spider_ack_irq()
119 struct spider_pic *pic = spider_irq_data_to_pic(d); in spider_set_irq_type() local
121 void __iomem *cfg = spider_get_irq_config(pic, hw); in spider_set_irq_type()
157 (pic->node_id << 4) | 0xe); in spider_set_irq_type()
205 struct spider_pic *pic = irq_desc_get_handler_data(desc); in spider_irq_cascade() local
208 cs = in_be32(pic->regs + TIR_CS) >> 24; in spider_irq_cascade()
212 virq = irq_linear_revmap(pic->host, cs); in spider_irq_cascade()
228 static unsigned int __init spider_find_cascade_and_node(struct spider_pic *pic) in spider_find_cascade_and_node() argument
238 virq = irq_of_parse_and_map(pic->host->of_node, 0); in spider_find_cascade_and_node()
243 tmp = of_get_property(pic->host->of_node, "#interrupt-cells", NULL); in spider_find_cascade_and_node()
247 imap = of_get_property(pic->host->of_node, "interrupt-map", &imaplen); in spider_find_cascade_and_node()
269 pic->node_id = (*tmp) >> 1; in spider_find_cascade_and_node()
278 (pic->node_id << IIC_IRQ_NODE_SHIFT) | in spider_find_cascade_and_node()
290 struct spider_pic *pic = &spider_pics[chip]; in spider_init_one() local
294 pic->regs = ioremap(addr, 0x1000); in spider_init_one()
295 if (pic->regs == NULL) in spider_init_one()
299 pic->host = irq_domain_add_linear(of_node, SPIDER_SRC_COUNT, in spider_init_one()
300 &spider_host_ops, pic); in spider_init_one()
301 if (pic->host == NULL) in spider_init_one()
306 void __iomem *cfg = pic->regs + TIR_CFGA + 8 * i; in spider_init_one()
311 out_be32(pic->regs + TIR_MSK, 0x0); in spider_init_one()
314 out_be32(pic->regs + TIR_PIEN, in_be32(pic->regs + TIR_PIEN) | 0x1); in spider_init_one()
317 virq = spider_find_cascade_and_node(pic); in spider_init_one()
320 irq_set_handler_data(virq, pic); in spider_init_one()
324 pic->node_id, addr, of_node->full_name); in spider_init_one()
327 out_be32(pic->regs + TIR_DEN, in_be32(pic->regs + TIR_DEN) | 0x1); in spider_init_one()