Lines Matching +full:edge +full:- +full:high
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright 2015-2016 Vladimir Zapolskiy <vz@mleia.com>
36 return readl_relaxed(ic->base + reg); in lpc32xx_ic_read()
42 writel_relaxed(val, ic->base + reg); in lpc32xx_ic_write()
48 u32 val, mask = BIT(d->hwirq); in lpc32xx_irq_mask()
57 u32 val, mask = BIT(d->hwirq); in lpc32xx_irq_unmask()
66 u32 mask = BIT(d->hwirq); in lpc32xx_irq_ack()
74 u32 val, mask = BIT(d->hwirq); in lpc32xx_irq_set_type()
75 bool high, edge; in lpc32xx_irq_set_type() local
79 edge = true; in lpc32xx_irq_set_type()
80 high = true; in lpc32xx_irq_set_type()
83 edge = true; in lpc32xx_irq_set_type()
84 high = false; in lpc32xx_irq_set_type()
87 edge = false; in lpc32xx_irq_set_type()
88 high = true; in lpc32xx_irq_set_type()
91 edge = false; in lpc32xx_irq_set_type()
92 high = false; in lpc32xx_irq_set_type()
96 return -EINVAL; in lpc32xx_irq_set_type()
102 if (high) in lpc32xx_irq_set_type()
109 if (edge) { in lpc32xx_irq_set_type()
129 handle_domain_irq(lpc32xx_mic_irqc->domain, irq, regs); in lpc32xx_handle_irq()
144 generic_handle_domain_irq(ic->domain, irq); in lpc32xx_sic_handler()
153 struct lpc32xx_irq_chip *ic = id->host_data; in lpc32xx_irq_domain_map()
156 irq_set_chip_and_handler(virq, &ic->chip, handle_level_irq); in lpc32xx_irq_domain_map()
178 bool is_mic = of_device_is_compatible(node, "nxp,lpc3220-mic"); in lpc32xx_of_ic_init()
184 return -ENOMEM; in lpc32xx_of_ic_init()
186 irqc->base = of_iomap(node, 0); in lpc32xx_of_ic_init()
187 if (!irqc->base) { in lpc32xx_of_ic_init()
190 return -EINVAL; in lpc32xx_of_ic_init()
193 irqc->chip.irq_ack = lpc32xx_irq_ack; in lpc32xx_of_ic_init()
194 irqc->chip.irq_mask = lpc32xx_irq_mask; in lpc32xx_of_ic_init()
195 irqc->chip.irq_unmask = lpc32xx_irq_unmask; in lpc32xx_of_ic_init()
196 irqc->chip.irq_set_type = lpc32xx_irq_set_type; in lpc32xx_of_ic_init()
198 irqc->chip.name = kasprintf(GFP_KERNEL, "%08x.mic", addr); in lpc32xx_of_ic_init()
200 irqc->chip.name = kasprintf(GFP_KERNEL, "%08x.sic", addr); in lpc32xx_of_ic_init()
202 irqc->domain = irq_domain_add_linear(node, NR_LPC32XX_IC_IRQS, in lpc32xx_of_ic_init()
204 if (!irqc->domain) { in lpc32xx_of_ic_init()
206 iounmap(irqc->base); in lpc32xx_of_ic_init()
207 kfree(irqc->chip.name); in lpc32xx_of_ic_init()
209 return -ENODEV; in lpc32xx_of_ic_init()
231 IRQCHIP_DECLARE(nxp_lpc32xx_mic, "nxp,lpc3220-mic", lpc32xx_of_ic_init);
232 IRQCHIP_DECLARE(nxp_lpc32xx_sic, "nxp,lpc3220-sic", lpc32xx_of_ic_init);