Lines Matching refs:irqc

710 static int __init aic_init_smp(struct aic_irq_chip *irqc, struct device_node *node)  in aic_init_smp()  argument
715 ipi_domain = irq_domain_create_linear(irqc->hw_domain->fwnode, AIC_NR_SWIPI, in aic_init_smp()
716 &aic_ipi_domain_ops, irqc); in aic_init_smp()
733 irqc->ipi_domain = ipi_domain; in aic_init_smp()
802 struct aic_irq_chip *irqc; in aic_of_ic_init() local
808 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL); in aic_of_ic_init()
809 if (!irqc) in aic_of_ic_init()
812 aic_irqc = irqc; in aic_of_ic_init()
813 irqc->base = regs; in aic_of_ic_init()
815 info = aic_ic_read(irqc, AIC_INFO); in aic_of_ic_init()
816 irqc->nr_hw = FIELD_GET(AIC_INFO_NR_HW, info); in aic_of_ic_init()
818 irqc->hw_domain = irq_domain_create_linear(of_node_to_fwnode(node), in aic_of_ic_init()
819 irqc->nr_hw + AIC_NR_FIQ, in aic_of_ic_init()
820 &aic_irq_domain_ops, irqc); in aic_of_ic_init()
821 if (WARN_ON(!irqc->hw_domain)) { in aic_of_ic_init()
822 iounmap(irqc->base); in aic_of_ic_init()
823 kfree(irqc); in aic_of_ic_init()
827 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED); in aic_of_ic_init()
829 if (aic_init_smp(irqc, node)) { in aic_of_ic_init()
830 irq_domain_remove(irqc->hw_domain); in aic_of_ic_init()
831 iounmap(irqc->base); in aic_of_ic_init()
832 kfree(irqc); in aic_of_ic_init()
839 for (i = 0; i < BITS_TO_U32(irqc->nr_hw); i++) in aic_of_ic_init()
840 aic_ic_write(irqc, AIC_MASK_SET + i * 4, U32_MAX); in aic_of_ic_init()
841 for (i = 0; i < BITS_TO_U32(irqc->nr_hw); i++) in aic_of_ic_init()
842 aic_ic_write(irqc, AIC_SW_CLR + i * 4, U32_MAX); in aic_of_ic_init()
843 for (i = 0; i < irqc->nr_hw; i++) in aic_of_ic_init()
844 aic_ic_write(irqc, AIC_TARGET_CPU + i * 4, 1); in aic_of_ic_init()
856 irqc->nr_hw, AIC_NR_FIQ, AIC_NR_SWIPI); in aic_of_ic_init()