Lines Matching +full:ast2700 +full:- +full:intc +full:- +full:ic

1 // SPDX-License-Identifier: GPL-2.0-only
36 scoped_guard(raw_spinlock, &intc_ic->gic_lock) { in aspeed_intc_ic_irq_handler()
39 status = readl(intc_ic->base + INTC_INT_STATUS_REG); in aspeed_intc_ic_irq_handler()
41 generic_handle_domain_irq(intc_ic->irq_domain, bit); in aspeed_intc_ic_irq_handler()
42 writel(BIT(bit), intc_ic->base + INTC_INT_STATUS_REG); in aspeed_intc_ic_irq_handler()
52 unsigned int mask = readl(intc_ic->base + INTC_INT_ENABLE_REG) & ~BIT(data->hwirq); in aspeed_intc_irq_mask()
54 guard(raw_spinlock)(&intc_ic->intc_lock); in aspeed_intc_irq_mask()
55 writel(mask, intc_ic->base + INTC_INT_ENABLE_REG); in aspeed_intc_irq_mask()
61 unsigned int unmask = readl(intc_ic->base + INTC_INT_ENABLE_REG) | BIT(data->hwirq); in aspeed_intc_irq_unmask()
63 guard(raw_spinlock)(&intc_ic->intc_lock); in aspeed_intc_irq_unmask()
64 writel(unmask, intc_ic->base + INTC_INT_ENABLE_REG); in aspeed_intc_irq_unmask()
68 .name = "ASPEED INTC",
77 irq_set_chip_data(irq, domain->host_data); in aspeed_intc_ic_map_irq_domain()
94 return -ENOMEM; in aspeed_intc_ic_of_init()
96 intc_ic->base = of_iomap(node, 0); in aspeed_intc_ic_of_init()
97 if (!intc_ic->base) { in aspeed_intc_ic_of_init()
99 ret = -ENOMEM; in aspeed_intc_ic_of_init()
102 writel(0xffffffff, intc_ic->base + INTC_INT_STATUS_REG); in aspeed_intc_ic_of_init()
103 writel(0x0, intc_ic->base + INTC_INT_ENABLE_REG); in aspeed_intc_ic_of_init()
105 intc_ic->irq_domain = irq_domain_add_linear(node, INTC_IRQS_PER_WORD, in aspeed_intc_ic_of_init()
107 if (!intc_ic->irq_domain) { in aspeed_intc_ic_of_init()
108 ret = -ENOMEM; in aspeed_intc_ic_of_init()
112 raw_spin_lock_init(&intc_ic->gic_lock); in aspeed_intc_ic_of_init()
113 raw_spin_lock_init(&intc_ic->intc_lock); in aspeed_intc_ic_of_init()
120 ret = -EINVAL; in aspeed_intc_ic_of_init()
133 iounmap(intc_ic->base); in aspeed_intc_ic_of_init()
139 IRQCHIP_DECLARE(ast2700_intc_ic, "aspeed,ast2700-intc-ic", aspeed_intc_ic_of_init);