Lines Matching +full:per +full:- +full:vpe
1 // SPDX-License-Identifier: GPL-2.0-only
7 * be routed to either VPE but not both, so to support per-CPU interrupts, a
8 * secondary IRQ number is allocated to control masking/unmasking on VPE#1. In
13 * If an interrupt (say 30) needs per-CPU capability, the SoC integrator
15 * reflects this by adding the pair <30 29> to the "econet,shadow-interrupts"
18 * When VPE#1 requests IRQ 30, the driver manipulates the mask bit for IRQ 29,
19 * telling the hardware to mask VPE#1's view of IRQ 30.
46 * - NOT_PERCPU: This interrupt is not per-cpu, so it has no shadow
47 * - IS_SHADOW: This interrupt is a shadow of another per-cpu interrupt
48 * - else: This is a per-cpu interrupt whose shadow is the value
78 * It should only be masked/unmasked as a result of the "real" per-cpu in econet_chmask()
79 * irq being manipulated by a thread running on VPE#1. in econet_chmask()
80 * If it is per-cpu (has a shadow), and we're on VPE#1, the shadow is what we mask. in econet_chmask()
91 mask = BIT(hwirq - 32); in econet_chmask()
103 econet_chmask(d->hwirq, false); in econet_intc_mask()
109 econet_chmask(d->hwirq, true); in econet_intc_unmask()
114 /* IRQs are generally disabled during init, but guarding here makes it non-obligatory. */ in econet_mask_all()
125 hwirq = fls(pending) - 1; in econet_intc_handle_pending()
161 return -EINVAL; in econet_intc_map()
164 return -EINVAL; in econet_intc_map()
173 pr_warn("%s: Failed irq_set_percpu_devid for %u: %d\n", d->name, irq, ret); in econet_intc_map()
181 .name = "en751221-intc",
194 const char *field = "econet,shadow-interrupts"; in get_shadow_interrupts()
211 return -ENOMEM; in get_shadow_interrupts()
215 return -EINVAL; in get_shadow_interrupts()
265 return -EINVAL; in econet_intc_of_init()
270 ret = -EINVAL; in econet_intc_of_init()
276 ret = -EBUSY; in econet_intc_of_init()
283 ret = -ENOMEM; in econet_intc_of_init()
293 ret = -ENOMEM; in econet_intc_of_init()
310 IRQCHIP_DECLARE(econet_en751221_intc, "econet,en751221-intc", econet_intc_of_init);