/Linux-v6.6/drivers/vfio/platform/ |
D | vfio_platform_irq.c | 49 if (!(vdev->irqs[index].flags & VFIO_IRQ_INFO_MASKABLE)) in vfio_platform_set_irq_mask() 56 return vfio_virqfd_enable((void *) &vdev->irqs[index], in vfio_platform_set_irq_mask() 59 &vdev->irqs[index].mask, fd); in vfio_platform_set_irq_mask() 61 vfio_virqfd_disable(&vdev->irqs[index].mask); in vfio_platform_set_irq_mask() 66 vfio_platform_mask(&vdev->irqs[index]); in vfio_platform_set_irq_mask() 72 vfio_platform_mask(&vdev->irqs[index]); in vfio_platform_set_irq_mask() 109 if (!(vdev->irqs[index].flags & VFIO_IRQ_INFO_MASKABLE)) in vfio_platform_set_irq_unmask() 116 return vfio_virqfd_enable((void *) &vdev->irqs[index], in vfio_platform_set_irq_unmask() 119 &vdev->irqs[index].unmask, in vfio_platform_set_irq_unmask() 122 vfio_virqfd_disable(&vdev->irqs[index].unmask); in vfio_platform_set_irq_unmask() [all …]
|
/Linux-v6.6/Documentation/devicetree/bindings/arm/omap/ |
D | crossbar.txt | 13 - ti,max-irqs: Total number of irqs available at the parent interrupt controller. 17 - ti,irqs-reserved: List of the reserved irq lines that are not muxed using 23 - ti,irqs-skip: This is similar to "ti,irqs-reserved", but these are for 24 SOC-specific hard-wiring of those irqs which unexpectedly bypasses the 25 crossbar. These irqs have a crossbar register, but still cannot be used. 27 - ti,irqs-safe-map: integer which maps to a safe configuration to use 34 ti,max-irqs = <160>; 37 ti,irqs-reserved = <0 1 2 3 5 6 131 132>; 38 ti,irqs-skip = <10 133 139 140>;
|
/Linux-v6.6/arch/powerpc/platforms/powernv/ |
D | pci-cxl.c | 63 void pnv_cxl_release_hwirq_ranges(struct cxl_irq_ranges *irqs, in pnv_cxl_release_hwirq_ranges() argument 71 if (!irqs->range[i]) in pnv_cxl_release_hwirq_ranges() 74 i, irqs->offset[i], in pnv_cxl_release_hwirq_ranges() 75 irqs->range[i]); in pnv_cxl_release_hwirq_ranges() 76 hwirq = irqs->offset[i] - phb->msi_base; in pnv_cxl_release_hwirq_ranges() 78 irqs->range[i]); in pnv_cxl_release_hwirq_ranges() 83 int pnv_cxl_alloc_hwirq_ranges(struct cxl_irq_ranges *irqs, in pnv_cxl_alloc_hwirq_ranges() argument 90 memset(irqs, 0, sizeof(struct cxl_irq_ranges)); in pnv_cxl_alloc_hwirq_ranges() 104 irqs->offset[i] = phb->msi_base + hwirq; in pnv_cxl_alloc_hwirq_ranges() 105 irqs->range[i] = try; in pnv_cxl_alloc_hwirq_ranges() [all …]
|
/Linux-v6.6/drivers/crypto/intel/qat/qat_common/ |
D | adf_isr.c | 158 struct adf_irq *irqs = pci_dev_info->msix_entries.irqs; in adf_free_irqs() local 165 if (irqs[i].enabled) { in adf_free_irqs() 173 if (irqs[i].enabled) { in adf_free_irqs() 183 struct adf_irq *irqs = pci_dev_info->msix_entries.irqs; in adf_request_irqs() local 195 name = irqs[i].name; in adf_request_irqs() 218 irqs[i].enabled = true; in adf_request_irqs() 223 name = irqs[i].name; in adf_request_irqs() 240 irqs[i].enabled = true; in adf_request_irqs() 251 struct adf_irq *irqs; in adf_isr_alloc_msix_vectors_data() local 257 irqs = kzalloc_node(msix_num_entries * sizeof(*irqs), in adf_isr_alloc_msix_vectors_data() [all …]
|
/Linux-v6.6/drivers/misc/ |
D | hi6421v600-irq.c | 3 * Device driver for irqs in HISI PMIC IC 24 unsigned int *irqs; member 53 * IRQ number for the power key button and mask for both UP and DOWN IRQs 62 * registers are used by the irqs. 69 * The IRQs are mapped as: 109 /* Mark pending IRQs as handled */ in hi6421v600_irq_handler() 117 * If both powerkey down and up IRQs are received, in hi6421v600_irq_handler() 120 generic_handle_irq_safe(priv->irqs[POWERKEY_DOWN]); in hi6421v600_irq_handler() 121 generic_handle_irq_safe(priv->irqs[POWERKEY_UP]); in hi6421v600_irq_handler() 129 generic_handle_irq_safe(priv->irqs[offset + i * BITS_PER_BYTE]); in hi6421v600_irq_handler() [all …]
|
/Linux-v6.6/drivers/bus/fsl-mc/ |
D | fsl-mc-allocator.c | 347 * ID. A block of IRQs is pre-allocated and maintained in a pool 353 * It allocates a block of IRQs from the GIC-ITS. 415 * It frees the IRQs that were allocated to the pool, back to the GIC-ITS. 441 * Allocate the IRQs required by a given fsl-mc device. 449 struct fsl_mc_device_irq **irqs = NULL; in fsl_mc_allocate_irqs() local 453 if (mc_dev->irqs) in fsl_mc_allocate_irqs() 471 "Not able to allocate %u irqs for device\n", irq_count); in fsl_mc_allocate_irqs() 475 irqs = devm_kcalloc(&mc_dev->dev, irq_count, sizeof(irqs[0]), in fsl_mc_allocate_irqs() 477 if (!irqs) in fsl_mc_allocate_irqs() 488 irqs[i] = to_fsl_mc_irq(resource); in fsl_mc_allocate_irqs() [all …]
|
/Linux-v6.6/kernel/irq/ |
D | timings.c | 382 static u64 __irq_timings_next_event(struct irqt_stat *irqs, int irq, u64 now) in __irq_timings_next_event() argument 386 if ((now - irqs->last_ts) >= NSEC_PER_SEC) { in __irq_timings_next_event() 387 irqs->count = irqs->last_ts = 0; in __irq_timings_next_event() 396 period_max = irqs->count > (3 * PREDICTION_PERIOD_MAX) ? in __irq_timings_next_event() 397 PREDICTION_PERIOD_MAX : irqs->count / 3; in __irq_timings_next_event() 409 count = irqs->count < IRQ_TIMINGS_SIZE ? in __irq_timings_next_event() 410 irqs->count : IRQ_TIMINGS_SIZE; in __irq_timings_next_event() 412 start = irqs->count < IRQ_TIMINGS_SIZE ? in __irq_timings_next_event() 413 0 : (irqs->count & IRQ_TIMINGS_MASK); in __irq_timings_next_event() 424 irqs->timings[i] = irqs->circ_timings[index]; in __irq_timings_next_event() [all …]
|
/Linux-v6.6/drivers/gpio/ |
D | gpio-davinci.c | 63 int irqs[MAX_INT_PER_BANK]; member 237 chips->irqs[i] = platform_get_irq(pdev, i); in davinci_gpio_probe() 238 if (chips->irqs[i] < 0) in davinci_gpio_probe() 239 return chips->irqs[i]; in davinci_gpio_probe() 277 * We expect irqs will normally be set up as input pins, but they can also be 352 /* ack any irqs */ in gpio_irq_handler() 390 * NOTE: we assume for now that only irqs in the first gpio_chip in gpio_to_irq_unbanked() 391 * can provide direct-mapped IRQs to AINTC (up to 32 GPIOs). in gpio_to_irq_unbanked() 394 return d->irqs[offset]; in gpio_to_irq_unbanked() 408 if (data->irq == d->irqs[i]) in gpio_irq_type_unbanked() [all …]
|
D | gpio-reg.c | 28 const int *irqs; member 110 int irq = r->irqs[offset]; in gpio_reg_to_irq() 128 * @irqs: array of %num ints describing the interrupt mapping for each 141 const char *const *names, struct irq_domain *irqdom, const int *irqs) in gpio_reg_init() argument 163 if (irqs) in gpio_reg_init() 171 r->irqs = irqs; in gpio_reg_init()
|
/Linux-v6.6/drivers/irqchip/ |
D | irq-bcm6345-l1.c | 19 * 0x1000_0028: CPU0_W0_STATUS IRQs 31-63 20 * 0x1000_002c: CPU0_W1_STATUS IRQs 0-31 23 * 0x1000_0038: CPU1_W0_STATUS IRQs 31-63 24 * 0x1000_003c: CPU1_W1_STATUS IRQs 0-31 31 * 0x1000_0030: CPU0_W0_STATUS IRQs 96-127 32 * 0x1000_0034: CPU0_W1_STATUS IRQs 64-95 33 * 0x1000_0038: CPU0_W2_STATUS IRQs 32-63 34 * 0x1000_003c: CPU0_W3_STATUS IRQs 0-31 39 * 0x1000_0050: CPU1_W0_STATUS IRQs 96-127 40 * 0x1000_0054: CPU1_W1_STATUS IRQs 64-95 [all …]
|
D | irq-nvic.c | 33 * Each bank handles 32 irqs. Only the 16th (= last) bank handles only 34 * 16 irqs. 76 unsigned int irqs, i, ret, numbanks; in nvic_of_init() local 88 irqs = numbanks * 32; in nvic_of_init() 89 if (irqs > NVIC_MAX_IRQ) in nvic_of_init() 90 irqs = NVIC_MAX_IRQ; in nvic_of_init() 93 irq_domain_add_linear(node, irqs, &nvic_irq_domain_ops, NULL); in nvic_of_init() 130 for (i = 0; i < irqs; i += 4) in nvic_of_init()
|
D | irq-crossbar.c | 144 * @nr_irqs: number of irqs to free 219 of_property_read_u32(node, "ti,max-irqs", &max); in crossbar_of_init() 221 pr_err("missing 'ti,max-irqs' property\n"); in crossbar_of_init() 234 /* Get and mark reserved irqs */ in crossbar_of_init() 235 irqsr = of_get_property(node, "ti,irqs-reserved", &size); in crossbar_of_init() 241 "ti,irqs-reserved", in crossbar_of_init() 252 /* Skip irqs hardwired to bypass the crossbar */ in crossbar_of_init() 253 irqsr = of_get_property(node, "ti,irqs-skip", &size); in crossbar_of_init() 259 "ti,irqs-skip", in crossbar_of_init() 296 * reserved irqs. so find and store the offsets once. in crossbar_of_init() [all …]
|
D | irq-ingenic-tcu.c | 96 int ret, irqs; in ingenic_tcu_irq_init() local 108 irqs = of_property_count_elems_of_size(np, "interrupts", sizeof(u32)); in ingenic_tcu_irq_init() 109 if (irqs < 0 || irqs > ARRAY_SIZE(tcu->parent_irqs)) { in ingenic_tcu_irq_init() 115 tcu->nb_parent_irqs = irqs; in ingenic_tcu_irq_init() 146 /* Mask all IRQs by default */ in ingenic_tcu_irq_init() 159 for (i = 0; i < irqs; i++) { in ingenic_tcu_irq_init()
|
/Linux-v6.6/arch/riscv/kvm/ |
D | aia_aplic.c | 37 struct aplic_irq *irqs; member 48 irqd = &aplic->irqs[irq]; in aplic_read_sourcecfg() 64 irqd = &aplic->irqs[irq]; in aplic_write_sourcecfg() 84 irqd = &aplic->irqs[irq]; in aplic_read_target() 100 irqd = &aplic->irqs[irq]; in aplic_write_target() 119 irqd = &aplic->irqs[irq]; in aplic_read_pending() 135 irqd = &aplic->irqs[irq]; in aplic_write_pending() 162 irqd = &aplic->irqs[irq]; in aplic_read_enabled() 178 irqd = &aplic->irqs[irq]; in aplic_write_enabled() 196 irqd = &aplic->irqs[irq]; in aplic_read_input() [all …]
|
/Linux-v6.6/drivers/staging/media/atomisp/pci/ |
D | gp_timer_defs.h | 28 …IVE_GP_TIMER_IRQ_TIMER_SELECT_REG_IDX(irq, timers, irqs) (HIVE_GP_TIMER_IRQ_TRIGGER_VALUE_REG_IDX(… argument 29 …GP_TIMER_IRQ_ENABLE_REG_IDX(irq, timers, irqs) (HIVE_GP_TIMER_IRQ_TIMER_SELECT_REG_IDX(irqs,… argument
|
/Linux-v6.6/drivers/power/supply/ |
D | axp20x_ac_power.c | 48 unsigned int irqs[]; member 293 * As nested threaded IRQs are not automatically disabled during in axp20x_ac_power_suspend() 294 * suspend, we must explicitly disable the remainder of the IRQs. in axp20x_ac_power_suspend() 297 enable_irq_wake(power->irqs[i++]); in axp20x_ac_power_suspend() 299 disable_irq(power->irqs[i++]); in axp20x_ac_power_suspend() 310 disable_irq_wake(power->irqs[i++]); in axp20x_ac_power_resume() 312 enable_irq(power->irqs[i++]); in axp20x_ac_power_resume() 340 struct_size(power, irqs, axp_data->num_irq_names), in axp20x_ac_power_probe() 376 /* Request irqs after registering, as irqs may trigger immediately */ in axp20x_ac_power_probe() 382 power->irqs[i] = regmap_irq_get_virq(axp20x->regmap_irqc, irq); in axp20x_ac_power_probe() [all …]
|
/Linux-v6.6/drivers/pci/controller/ |
D | vmd.c | 111 * struct vmd_irq_list - list of driver requested IRQs mapping to a VMD vector 114 * @count: number of child IRQs assigned to this vector; used to track 132 struct vmd_irq_list *irqs; member 150 struct vmd_irq_list *irqs) in index_from_irqs() argument 152 return irqs - vmd->irqs; in index_from_irqs() 156 * Drivers managing a device in a VMD domain allocate their own IRQs as before, 241 return &vmd->irqs[vmd->first_vec]; in vmd_next_irq() 251 return &vmd->irqs[vmd->first_vec]; in vmd_next_irq() 257 if (vmd->irqs[i].count < vmd->irqs[best].count) in vmd_next_irq() 259 vmd->irqs[best].count++; in vmd_next_irq() [all …]
|
/Linux-v6.6/drivers/pcmcia/ |
D | sa1111_generic.c | 141 int i, ret = 0, irqs[NUM_IRQS]; in sa1111_pcmcia_add() local 148 irqs[i] = sa1111_get_irq(dev, i); in sa1111_pcmcia_add() 149 if (irqs[i] <= 0) in sa1111_pcmcia_add() 150 return irqs[i] ? : -ENXIO; in sa1111_pcmcia_add() 166 s->soc.socket.pci_irq = irqs[IDX_IRQ_S1_READY_NINT]; in sa1111_pcmcia_add() 167 s->soc.stat[SOC_STAT_CD].irq = irqs[IDX_IRQ_S1_CD_VALID]; in sa1111_pcmcia_add() 169 s->soc.stat[SOC_STAT_BVD1].irq = irqs[IDX_IRQ_S1_BVD1_STSCHG]; in sa1111_pcmcia_add() 172 s->soc.socket.pci_irq = irqs[IDX_IRQ_S0_READY_NINT]; in sa1111_pcmcia_add() 173 s->soc.stat[SOC_STAT_CD].irq = irqs[IDX_IRQ_S0_CD_VALID]; in sa1111_pcmcia_add() 175 s->soc.stat[SOC_STAT_BVD1].irq = irqs[IDX_IRQ_S0_BVD1_STSCHG]; in sa1111_pcmcia_add()
|
/Linux-v6.6/Documentation/devicetree/bindings/interrupt-controller/ |
D | st,stih407-irq-syscfg.yaml | 7 title: STMicroelectronics STi System Configuration Controlled IRQs 14 Management), and PL310 L2 Cache IRQs are controlled using System 26 description: Array of IRQs to enable. 40 description: External IRQs can be inverted at will. This property inverts 41 these three IRQs using bitwise logic, each one being encoded respectively
|
/Linux-v6.6/Documentation/power/ |
D | suspend-and-interrupts.rst | 9 Suspending and Resuming Device IRQs 12 Device interrupt request lines (IRQs) are generally disabled during system 21 interrupt handlers for shared IRQs that device drivers implementing them were 29 Device IRQs are re-enabled during system resume, right before the "early" phase 91 not executed for system wakeup IRQs. They are only executed for IRQF_NO_SUSPEND 92 IRQs at that time, but those IRQs should not be configured for system wakeup 126 Second, both enable_irq_wake() and IRQF_NO_SUSPEND apply to entire IRQs and not 133 must be able to discern spurious IRQs from genuine wakeup events (signalling
|
/Linux-v6.6/arch/arc/kernel/ |
D | intc-arcv2.c | 17 unsigned int pad:3, firq:1, prio:4, exts:8, irqs:8, ver:8; member 19 unsigned int ver:8, irqs:8, exts:8, prio:4, firq:1, pad:3; 61 * Linux by default uses lower prio 1 for most irqs, reserving 0 for in arc_init_IRQ() 79 for (i = NR_EXCEPTIONS; i < irq_bcr.irqs + NR_EXCEPTIONS; i++) { in arc_init_IRQ() 84 * Only mask cpu private IRQs here. in arc_init_IRQ() 136 * core intc IRQs [16, 23]: in arcv2_irq_map() 168 nr_cpu_irqs = irq_bcr.irqs + NR_EXCEPTIONS; in init_onchip_IRQ()
|
/Linux-v6.6/drivers/pci/pcie/ |
D | portdrv.c | 107 * @irqs: Array of interrupt vectors to populate 112 static int pcie_port_enable_irq_vec(struct pci_dev *dev, int *irqs, int mask) in pcie_port_enable_irq_vec() argument 154 irqs[PCIE_PORT_SERVICE_PME_SHIFT] = pcie_irq; in pcie_port_enable_irq_vec() 155 irqs[PCIE_PORT_SERVICE_HP_SHIFT] = pcie_irq; in pcie_port_enable_irq_vec() 156 irqs[PCIE_PORT_SERVICE_BWNOTIF_SHIFT] = pcie_irq; in pcie_port_enable_irq_vec() 160 irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pci_irq_vector(dev, aer); in pcie_port_enable_irq_vec() 163 irqs[PCIE_PORT_SERVICE_DPC_SHIFT] = pci_irq_vector(dev, dpc); in pcie_port_enable_irq_vec() 169 * pcie_init_service_irqs - initialize irqs for PCI Express port services 171 * @irqs: Array of irqs to populate 176 static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask) in pcie_init_service_irqs() argument [all …]
|
/Linux-v6.6/drivers/gpu/drm/i915/gt/ |
D | intel_gt_irq.c | 225 /* Restore masks irqs on RCS, BCS, VCS and VECS engines. */ in gen11_gt_irq_reset() 264 u32 irqs = GT_RENDER_USER_INTERRUPT; in gen11_gt_irq_postinstall() local 272 irqs |= GT_CS_MASTER_ERROR_INTERRUPT | in gen11_gt_irq_postinstall() 276 dmask = irqs << 16 | irqs; in gen11_gt_irq_postinstall() 277 smask = irqs << 16; in gen11_gt_irq_postinstall() 284 gsc_mask = irqs; in gen11_gt_irq_postinstall() 290 BUILD_BUG_ON(irqs & 0xffff0000); in gen11_gt_irq_postinstall() 300 /* Unmask irqs on RCS, BCS, VCS and VECS engines. */ in gen11_gt_irq_postinstall() 464 const u32 irqs = in gen8_gt_irq_postinstall() local 470 irqs << GEN8_RCS_IRQ_SHIFT | irqs << GEN8_BCS_IRQ_SHIFT, in gen8_gt_irq_postinstall() [all …]
|
/Linux-v6.6/tools/testing/selftests/kvm/aarch64/ |
D | vgic_irq.c | 3 * vgic_irq.c - Test userspace injection of IRQs 5 * This test validates the injection of IRQs from userspace using various 30 uint32_t nr_irqs; /* number of KVM supported IRQs. */ 295 * Restore the active state of multiple concurrent IRQs (given by 297 * destination side assuming there are some active IRQs that were not 308 * Set the priorities of the first (KVM_NUM_PRIOS - 1) IRQs in guest_restore_active() 331 /* finish handling the IRQs starting with the highest priority one. */ in guest_restore_active() 348 * This function should only be used in test_inject_preemption (with IRQs 364 * Inject multiple concurrent IRQs (num IRQs starting at first_intid) and 375 /* Set the priorities of the first (KVM_NUM_PRIOS - 1) IRQs in test_inject_preemption() [all …]
|
/Linux-v6.6/arch/powerpc/platforms/ps3/ |
D | spu.c | 246 0, &spu->irqs[0]); in setup_interrupts() 252 1, &spu->irqs[1]); in setup_interrupts() 258 2, &spu->irqs[2]); in setup_interrupts() 266 ps3_spe_irq_destroy(spu->irqs[1]); in setup_interrupts() 268 ps3_spe_irq_destroy(spu->irqs[0]); in setup_interrupts() 270 spu->irqs[0] = spu->irqs[1] = spu->irqs[2] = 0; in setup_interrupts() 316 ps3_spe_irq_destroy(spu->irqs[2]); in ps3_destroy_spu() 317 ps3_spe_irq_destroy(spu->irqs[1]); in ps3_destroy_spu() 318 ps3_spe_irq_destroy(spu->irqs[0]); in ps3_destroy_spu() 320 spu->irqs[0] = spu->irqs[1] = spu->irqs[2] = 0; in ps3_destroy_spu()
|