/linux/drivers/irqchip/ |
H A D | Makefile | 4 obj-$(CONFIG_AL_FIC) += irq-al-fic.o 5 obj-$(CONFIG_ALPINE_MSI) += irq-alpine-msi.o 6 obj-$(CONFIG_ATH79) += irq-ath79-cpu.o 7 obj-$(CONFIG_ATH79) += irq-ath79-misc.o 8 obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o 9 obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2836.o 10 obj-$(CONFIG_ARCH_ACTIONS) += irq-owl-sirq.o 11 obj-$(CONFIG_DAVINCI_CP_INTC) += irq-davinci-cp-intc.o 13 obj-$(CONFIG_ECONET_EN751221_INTC) += irq-econet-en751221.o 14 obj-$(CONFIG_FARADAY_FTINTC010) += irq-ftintc010.o [all …]
|
/linux/drivers/misc/ocxl/ |
H A D | afu_irq.c | 35 struct afu_irq *irq; in ocxl_irq_set_handler() local 39 irq = idr_find(&ctx->irq_idr, irq_id); in ocxl_irq_set_handler() 40 if (!irq) { in ocxl_irq_set_handler() 45 irq->handler = handler; in ocxl_irq_set_handler() 46 irq->private = private; in ocxl_irq_set_handler() 47 irq->free_private = free_private; in ocxl_irq_set_handler() 60 struct afu_irq *irq = data; in afu_irq_handler() local 64 if (irq->handler) in afu_irq_handler() 65 return irq->handler(irq->private); in afu_irq_handler() 70 static int setup_afu_irq(struct ocxl_context *ctx, struct afu_irq *irq) in setup_afu_irq() argument [all …]
|
/linux/arch/arm64/kvm/vgic/ |
H A D | vgic.c | 7 #include <linux/irq.h> 62 * Index the VM's xarray of mapped LPIs and return a reference to the IRQ 64 * finished with the IRQ. 69 struct vgic_irq *irq = NULL; in vgic_get_lpi() local 73 irq = xa_load(&dist->lpi_xa, intid); in vgic_get_lpi() 74 if (!vgic_try_get_irq_kref(irq)) in vgic_get_lpi() 75 irq = NULL; in vgic_get_lpi() 79 return irq; in vgic_get_lpi() 85 * to call vgic_put_irq() once it's finished with this IRQ. 126 void vgic_put_irq(struct kvm *kvm, struct vgic_irq *irq) in vgic_put_irq() argument [all …]
|
H A D | vgic-mmio.c | 9 #include <linux/irq.h> 53 struct vgic_irq *irq = vgic_get_vcpu_irq(vcpu, intid + i); in vgic_mmio_read_group() local 55 if (irq->group) in vgic_mmio_read_group() 58 vgic_put_irq(vcpu->kvm, irq); in vgic_mmio_read_group() 64 static void vgic_update_vsgi(struct vgic_irq *irq) in vgic_update_vsgi() argument 66 WARN_ON(its_prop_update_vsgi(irq->host_irq, irq->priority, irq->group)); in vgic_update_vsgi() 77 struct vgic_irq *irq = vgic_get_vcpu_irq(vcpu, intid + i); in vgic_mmio_write_group() local 79 raw_spin_lock_irqsave(&irq->irq_lock, flags); in vgic_mmio_write_group() 80 irq->group = !!(val & BIT(i)); in vgic_mmio_write_group() 81 if (irq->hw && vgic_irq_is_sgi(irq->intid)) { in vgic_mmio_write_group() [all …]
|
H A D | vgic-v4.c | 8 #include <linux/irq.h> 29 * (ITS instance, device, event and irq) using a process that is 33 * identified by the routing entry) and the host irq, using the GICv4 70 * irq corresponding to the vcpu, then call its_make_vpe_resident(). 84 static irqreturn_t vgic_v4_doorbell_handler(int irq, void *info) in vgic_v4_doorbell_handler() argument 90 !irqd_irq_disabled(&irq_to_desc(irq)->irq_data)) in vgic_v4_doorbell_handler() 91 disable_irq_nosync(irq); in vgic_v4_doorbell_handler() 108 static void vgic_v4_sync_sgi_config(struct its_vpe *vpe, struct vgic_irq *irq) in vgic_v4_sync_sgi_config() argument 110 vpe->sgi_config[irq->intid].enabled = irq->enabled; in vgic_v4_sync_sgi_config() 111 vpe->sgi_config[irq->intid].group = irq->group; in vgic_v4_sync_sgi_config() [all …]
|
/linux/drivers/net/ethernet/mellanox/mlx5/core/ |
H A D | pci_irq.c | 145 /* mlx5_system_free_irq - Free an IRQ 146 * @irq: IRQ to free 148 * Free the IRQ and other resources such as rmap from the system. 154 static void mlx5_system_free_irq(struct mlx5_irq *irq) in mlx5_system_free_irq() argument 156 struct mlx5_irq_pool *pool = irq->pool; in mlx5_system_free_irq() 165 irq_update_affinity_hint(irq->map.virq, NULL); in mlx5_system_free_irq() 169 irq_cpu_rmap_remove(rmap, irq->map.virq); in mlx5_system_free_irq() 172 free_irq(irq->map.virq, &irq->nh); in mlx5_system_free_irq() 173 if (irq->map.index && pci_msix_can_alloc_dyn(pool->dev->pdev)) in mlx5_system_free_irq() 174 pci_msix_free_irq(pool->dev->pdev, irq->map); in mlx5_system_free_irq() [all …]
|
/linux/drivers/acpi/ |
H A D | pci_link.c | 10 * 1. Support more than one IRQ resource entry per link device (index). 12 * for IRQ management (e.g. start()->_SRS). 28 #include <linux/irq.h> 53 * later even the link is disable. Instead, we just repick the active irq 56 u32 active; /* Current IRQ */ 69 struct acpi_pci_link_irq irq; member 97 struct acpi_resource_irq *p = &resource->data.irq; in acpi_pci_link_check_possible() 100 "Blank _PRS IRQ resource\n"); in acpi_pci_link_check_possible() 108 "Invalid _PRS IRQ %d\n", in acpi_pci_link_check_possible() 112 link->irq.possible[i] = p->interrupts[i]; in acpi_pci_link_check_possible() [all …]
|
/linux/arch/x86/include/asm/trace/ |
H A D | irq_vectors.h | 60 * irq_work - called when entering/exiting a irq work interrupt 127 TP_PROTO(unsigned int irq, unsigned int vector, 130 TP_ARGS(irq, vector, cpu, apicdest), 133 __field( unsigned int, irq ) 140 __entry->irq = irq; 146 TP_printk("irq=%u vector=%u cpu=%u apicdest=0x%08x", 147 __entry->irq, __entry->vector, __entry->cpu, 153 TP_PROTO(unsigned int irq, unsigned int vector, 157 TP_ARGS(irq, vector, cpu, prev_vector, prev_cpu), 160 __field( unsigned int, irq ) [all …]
|
/linux/drivers/misc/ |
H A D | dummy-irq.c | 3 * Dummy IRQ handler driver. 6 * by the 'irq' parameter. 9 * which spurious IRQs would happen on disabled IRQ vector. 15 #include <linux/irq.h> 18 static int irq = -1; variable 20 static irqreturn_t dummy_interrupt(int irq, void *dev_id) in dummy_interrupt() argument 25 printk(KERN_INFO "dummy-irq: interrupt occurred on IRQ %d\n", in dummy_interrupt() 26 irq); in dummy_interrupt() 35 if (irq < 0) { in dummy_irq_init() 36 printk(KERN_ERR "dummy-irq: no IRQ given. Use irq=N\n"); in dummy_irq_init() [all …]
|
/linux/drivers/parisc/ |
H A D | gsc.c | 35 int irq = txn_alloc_irq(GSC_EIM_WIDTH); in gsc_alloc_irq() local 36 if (irq < 0) { in gsc_alloc_irq() 37 printk("cannot get irq\n"); in gsc_alloc_irq() 38 return irq; in gsc_alloc_irq() 41 i->txn_addr = txn_alloc_addr(irq); in gsc_alloc_irq() 42 i->txn_data = txn_alloc_data(irq); in gsc_alloc_irq() 43 i->irq = irq; in gsc_alloc_irq() 45 return irq; in gsc_alloc_irq() 48 int gsc_claim_irq(struct gsc_irq *i, int irq) in gsc_claim_irq() argument 50 int c = irq; in gsc_claim_irq() [all …]
|
/linux/arch/m68k/coldfire/ |
H A D | intc-simr.c | 17 #include <linux/irq.h> 38 static inline unsigned int irq2ebit(unsigned int irq) in irq2ebit() argument 40 return irqebitmap[irq - EINT0]; in irq2ebit() 54 static inline unsigned int irq2ebit(unsigned int irq) in irq2ebit() argument 56 return irq - EINT0; in irq2ebit() 69 unsigned int irq = d->irq - MCFINT_VECBASE; in intc_irq_mask() local 71 if (MCFINTC2_SIMR && (irq > 127)) in intc_irq_mask() 72 __raw_writeb(irq - 128, MCFINTC2_SIMR); in intc_irq_mask() 73 else if (MCFINTC1_SIMR && (irq > 63)) in intc_irq_mask() 74 __raw_writeb(irq - 64, MCFINTC1_SIMR); in intc_irq_mask() [all …]
|
H A D | intc-2.c | 24 #include <linux/irq.h> 52 unsigned int irq = d->irq - MCFINT_VECBASE; in intc_irq_mask() local 57 imraddr = (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0; in intc_irq_mask() 61 imraddr += (irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL; in intc_irq_mask() 62 imrbit = 0x1 << (irq & 0x1f); in intc_irq_mask() 70 unsigned int irq = d->irq - MCFINT_VECBASE; in intc_irq_unmask() local 75 imraddr = (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0; in intc_irq_unmask() 79 imraddr += ((irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL); in intc_irq_unmask() 80 imrbit = 0x1 << (irq & 0x1f); in intc_irq_unmask() 83 if ((irq & 0x20) == 0) in intc_irq_unmask() [all …]
|
H A D | intc-5272.c | 16 #include <linux/irq.h> 78 * an interrupt on this irq (for the external irqs). So this mask function 83 unsigned int irq = d->irq; in intc_irq_mask() local 85 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) { in intc_irq_mask() 87 irq -= MCFINT_VECBASE; in intc_irq_mask() 88 v = 0x8 << intc_irqmap[irq].index; in intc_irq_mask() 89 writel(v, intc_irqmap[irq].icr); in intc_irq_mask() 95 unsigned int irq = d->irq; in intc_irq_unmask() local 97 if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECMAX)) { in intc_irq_unmask() 99 irq -= MCFINT_VECBASE; in intc_irq_unmask() [all …]
|
/linux/Documentation/arch/arm/ |
H A D | interrupts.rst | 16 Secondly, the IRQ subsystem. 39 SA1111 IRQ handler, SA1111 IRQs can hold off SMC9196 IRQs indefinitely. 48 We also bring the idea of an IRQ "chip" (mainly to reduce the size of 57 * Acknowledge the IRQ. 58 * If this is a level-based IRQ, then it is expected to mask the IRQ 61 void (*ack)(unsigned int irq); 63 * Mask the IRQ in hardware. 65 void (*mask)(unsigned int irq); 67 * Unmask the IRQ in hardware. 69 void (*unmask)(unsigned int irq); [all …]
|
/linux/arch/m68k/virt/ |
H A D | ints.c | 5 #include <linux/irq.h> 13 #include <asm/irq.h> 34 * 6 goldfish-pic for CPU IRQ #1 to IRQ #6 35 * CPU IRQ #1 -> PIC #1 36 * IRQ #1 to IRQ #31 -> unused 37 * IRQ #32 -> goldfish-tty 38 * CPU IRQ #2 -> PIC #2 39 * IRQ #1 to IRQ #32 -> virtio-mmio from 1 to 32 40 * CPU IRQ #3 -> PIC #3 41 * IRQ #1 to IRQ #32 -> virtio-mmio from 33 to 64 [all …]
|
/linux/drivers/gpu/drm/amd/amdgpu/ |
H A D | amdgpu_irq.c | 33 * passed to amdgpu IRQ handler which is responsible for detecting source and 41 * For GPU interrupt sources that may be driven by another driver, IRQ domain 45 #include <linux/irq.h> 130 spin_lock_irqsave(&adev->irq.lock, irqflags); in amdgpu_irq_disable_all() 132 if (!adev->irq.client[i].sources) in amdgpu_irq_disable_all() 136 struct amdgpu_irq_src *src = adev->irq.client[i].sources[j]; in amdgpu_irq_disable_all() 151 spin_unlock_irqrestore(&adev->irq.lock, irqflags); in amdgpu_irq_disable_all() 155 * amdgpu_irq_handler - IRQ handler 157 * @irq: IRQ number (unused) 160 * IRQ handler for amdgpu driver (all ASICs). [all …]
|
/linux/kernel/irq/ |
H A D | manage.c | 6 * This file contains driver APIs to the irq subsystem. 11 #include <linux/irq.h> 75 * synchronize_hardirq - wait for pending hard IRQ handlers (on other CPUs) 76 * @irq: interrupt number to wait for 78 * This function waits for any pending hard IRQ handlers for this interrupt 80 * resource the IRQ handler may need you will deadlock. It does not take 88 * This function may be called - with care - from IRQ context. 95 bool synchronize_hardirq(unsigned int irq) in synchronize_hardirq() argument 97 struct irq_desc *desc = irq_to_desc(irq); in synchronize_hardirq() 119 * synchronize_irq - wait for pending IRQ handlers (on other CPUs) [all …]
|
H A D | irqdesc.c | 10 #include <linux/irq.h> 115 static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node, in desc_set_defaults() argument 124 desc->irq_data.irq = irq; in desc_set_defaults() 194 static void irq_insert_desc(unsigned int irq, struct irq_desc *desc) in irq_insert_desc() argument 196 MA_STATE(mas, &sparse_irqs, irq, irq); in irq_insert_desc() 200 static void delete_irq_desc(unsigned int irq) in delete_irq_desc() argument 202 MA_STATE(mas, &sparse_irqs, irq, irq); in delete_irq_desc() 210 static int init_desc(struct irq_desc *desc, int irq, int node, in init_desc() argument 228 desc_set_defaults(irq, desc, node, affinity, owner); in init_desc() 350 ATTRIBUTE_GROUPS(irq); [all …]
|
/linux/arch/powerpc/platforms/44x/ |
H A D | hsta_msi.c | 42 int irq, hwirq; in hsta_setup_msi_irqs() local 52 irq = msi_bitmap_alloc_hwirqs(&ppc4xx_hsta_msi.bmp, 1); in hsta_setup_msi_irqs() 53 if (irq < 0) { in hsta_setup_msi_irqs() 56 return irq; in hsta_setup_msi_irqs() 59 hwirq = ppc4xx_hsta_msi.irq_map[irq]; in hsta_setup_msi_irqs() 61 pr_err("%s: Failed mapping irq %d\n", __func__, irq); in hsta_setup_msi_irqs() 69 addr = ppc4xx_hsta_msi.address + irq*0x10; in hsta_setup_msi_irqs() 76 pr_debug("%s: Setup irq %d (0x%0llx)\n", __func__, hwirq, in hsta_setup_msi_irqs() 83 msi_bitmap_free_hwirqs(&ppc4xx_hsta_msi.bmp, irq, 1); in hsta_setup_msi_irqs() 94 int irq; in hsta_find_hwirq_offset() local [all …]
|
/linux/arch/m68k/q40/ |
H A D | q40ints.c | 18 #include <linux/irq.h> 48 unsigned int irq = data->irq; in q40_irq_startup() local 51 switch (irq) { in q40_irq_startup() 54 pr_warn("%s: ISA IRQ %d not implemented by HW\n", __func__, in q40_irq_startup() 55 irq); in q40_irq_startup() 81 * the q40 IRQ handling routines. 98 master_outb(1, EXT_ENABLE_REG); /* ISA IRQ 5-15 */ in q40_init_IRQ() 100 /* make sure keyboard IRQ is disabled */ in q40_init_IRQ() 133 static irqreturn_t q40_timer_int(int irq, void *dev_id) in q40_timer_int() argument 169 * tables to translate bits into IRQ numbers [all …]
|
/linux/drivers/xen/events/ |
H A D | events_base.c | 9 * chip. When an event is received, it is mapped to an irq and sent 29 #include <linux/irq.h> 46 #include <asm/irq.h> 86 * Packed IRQ information: 88 * event channel - irq->event channel mapping 91 * PIRQ - vector, with MSB being "needs EIO", or physical IRQ of the HVM 92 * guest, or GSI (real passthrough IRQ) of the device. 110 unsigned irq; member 155 * IRQ-desc lock 162 /* IRQ <-> VIRQ mapping. */ [all …]
|
/linux/include/linux/ |
H A D | interrupt.h | 21 #include <asm/irq.h> 42 * irq handling routines. 44 * IRQF_SHARED - allow sharing the irq among several devices 48 * IRQF_NOBALANCING - Flag to exclude this interrupt from irq balancing 54 * irq line disabled until the threaded handler has been run. 55 * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee 60 * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device 62 * IRQF_COND_SUSPEND - If the IRQ is shared with a NO_SUSPEND user, execute this 66 * IRQF_NO_AUTOEN - Don't enable IRQ or NMI automatically when users request it. 113 * @irq: interrupt number [all …]
|
/linux/arch/sh/boards/mach-dreamcast/ |
H A D | irq.c | 3 * arch/sh/boards/dreamcast/irq.c 5 * Holly IRQ support for the Sega Dreamcast. 11 #include <linux/irq.h> 21 * hardware events from system peripherals and triggering an SH7750 IRQ. 31 * corresponds to an IRQ, so 0xa05f6910 - 0xa05f6918 triggers IRQ 13, 32 * 0xa05f6920 - 0xa05f6928 triggers IRQ 11, and 0xa05f6930 - 0xa05f6938 33 * triggers IRQ 9. 39 * 6900/6910 - Events 0-31, IRQ 13 40 * 6904/6924 - Events 32-63, IRQ 11 41 * 6908/6938 - Events 64-95, IRQ 9 [all …]
|
/linux/arch/m68k/include/asm/ |
H A D | atariints.h | 21 #include <asm/irq.h> 112 * the MFP. 'type' should be constant, if 'irq' is constant, too, code size is 115 static inline int get_mfp_bit( unsigned irq, int type ) in get_mfp_bit() argument 119 mask = 1 << (irq & 7); in get_mfp_bit() 121 ((irq & 8) >> 2) + (((irq-8) & 16) << 3); in get_mfp_bit() 125 static inline void set_mfp_bit( unsigned irq, int type ) in set_mfp_bit() argument 129 mask = 1 << (irq & 7); in set_mfp_bit() 131 ((irq & 8) >> 2) + (((irq-8) & 16) << 3); in set_mfp_bit() 136 static inline void clear_mfp_bit( unsigned irq, int type ) in clear_mfp_bit() argument 140 mask = ~(1 << (irq & 7)); in clear_mfp_bit() [all …]
|
/linux/drivers/ssb/ |
H A D | driver_mipscore.c | 79 /* not irq supported */ in ssb_irqflag() 96 /* Get the MIPS IRQ assignment for a specified device. 108 unsigned int irq; in ssb_mips_irq() local 114 for (irq = 1; irq <= 4; irq++) { in ssb_mips_irq() 115 tmp = ((ipsflag & ipsflag_irq_mask[irq]) >> ipsflag_irq_shift[irq]); in ssb_mips_irq() 119 if (irq == 5) { in ssb_mips_irq() 121 irq = 0; in ssb_mips_irq() 124 return irq; in ssb_mips_irq() 127 static void clear_irq(struct ssb_bus *bus, unsigned int irq) in clear_irq() argument 131 /* Clear the IRQ in the MIPScore backplane registers */ in clear_irq() [all …]
|