Lines Matching full:aic
41 static struct wpcm450_aic *aic; variable
48 writel(0xffffffff, aic->regs + AIC_MDCR); in wpcm450_aic_init_hw()
55 readl(aic->regs + AIC_IPER); in wpcm450_aic_init_hw()
56 writel(0, aic->regs + AIC_EOSCR); in wpcm450_aic_init_hw()
61 aic->regs + AIC_SCR(i)); in wpcm450_aic_init_hw()
70 hwirq = readl(aic->regs + AIC_IPER) / 4; in wpcm450_aic_handle_irq()
72 generic_handle_domain_irq(aic->domain, hwirq); in wpcm450_aic_handle_irq()
78 writel(0, aic->regs + AIC_EOSCR); in wpcm450_aic_eoi()
86 writel(mask, aic->regs + AIC_MDCR); in wpcm450_aic_mask()
94 writel(mask, aic->regs + AIC_MECR); in wpcm450_aic_unmask()
112 .name = "wpcm450-aic",
125 irq_set_chip_data(irq, aic); in wpcm450_aic_map()
142 aic = kzalloc(sizeof(*aic), GFP_KERNEL); in wpcm450_aic_of_init()
143 if (!aic) in wpcm450_aic_of_init()
146 aic->regs = of_iomap(node, 0); in wpcm450_aic_of_init()
147 if (!aic->regs) { in wpcm450_aic_of_init()
148 pr_err("Failed to map WPCM450 AIC registers\n"); in wpcm450_aic_of_init()
149 kfree(aic); in wpcm450_aic_of_init()
157 aic->domain = irq_domain_add_linear(node, AIC_NUM_IRQS, &wpcm450_aic_ops, aic); in wpcm450_aic_of_init()
162 IRQCHIP_DECLARE(wpcm450_aic, "nuvoton,wpcm450-aic", wpcm450_aic_of_init);