Lines Matching +full:goldfish +full:- +full:pic
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Driver for MIPS Goldfish Programmable Interrupt Controller.
20 /* 8..39 Cascaded Goldfish PIC interrupts */
41 pending = readl(gfpic->base + GFPIC_REG_IRQ_PENDING); in goldfish_pic_cascade()
44 generic_handle_domain_irq(gfpic->irq_domain, hwirq); in goldfish_pic_cascade()
66 ret = -ENOMEM; in goldfish_pic_of_init()
73 ret = -EINVAL; in goldfish_pic_of_init()
77 gfpic->base = of_iomap(of_node, 0); in goldfish_pic_of_init()
78 if (!gfpic->base) { in goldfish_pic_of_init()
80 ret = -ENOMEM; in goldfish_pic_of_init()
85 writel(1, gfpic->base + GFPIC_REG_IRQ_DISABLE_ALL); in goldfish_pic_of_init()
87 gc = irq_alloc_generic_chip("GFPIC", 1, GFPIC_IRQ_BASE, gfpic->base, in goldfish_pic_of_init()
91 ret = -ENOMEM; in goldfish_pic_of_init()
95 ct = gc->chip_types; in goldfish_pic_of_init()
96 ct->regs.enable = GFPIC_REG_IRQ_ENABLE; in goldfish_pic_of_init()
97 ct->regs.disable = GFPIC_REG_IRQ_DISABLE; in goldfish_pic_of_init()
98 ct->chip.irq_unmask = irq_gc_unmask_enable_reg; in goldfish_pic_of_init()
99 ct->chip.irq_mask = irq_gc_mask_disable_reg; in goldfish_pic_of_init()
104 gfpic->irq_domain = irq_domain_create_legacy(of_fwnode_handle(of_node), GFPIC_NR_IRQS, in goldfish_pic_of_init()
107 if (!gfpic->irq_domain) { in goldfish_pic_of_init()
109 ret = -ENOMEM; in goldfish_pic_of_init()
123 iounmap(gfpic->base); in goldfish_pic_of_init()
133 IRQCHIP_DECLARE(google_gf_pic, "google,goldfish-pic", goldfish_pic_of_init);