/kernel/irq/ |
D | irqdomain.c | 591 static int irq_domain_associate_locked(struct irq_domain *domain, unsigned int virq, in irq_domain_associate_locked() argument 594 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_associate_locked() 600 if (WARN(!irq_data, "error: virq%i is not allocated", virq)) in irq_domain_associate_locked() 602 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate_locked() 608 ret = domain->ops->map(domain, virq, hwirq); in irq_domain_associate_locked() 617 domain->name, hwirq, virq, ret); in irq_domain_associate_locked() 632 irq_clear_status_flags(virq, IRQ_NOREQUEST); in irq_domain_associate_locked() 637 int irq_domain_associate(struct irq_domain *domain, unsigned int virq, in irq_domain_associate() argument 643 ret = irq_domain_associate_locked(domain, virq, hwirq); in irq_domain_associate() 680 unsigned int virq; in irq_create_direct_mapping() local [all …]
|
D | ipi.c | 28 int virq, i; in irq_reserve_ipi() local 78 virq = irq_domain_alloc_descs(-1, nr_irqs, 0, NUMA_NO_NODE, NULL); in irq_reserve_ipi() 79 if (virq <= 0) { in irq_reserve_ipi() 84 virq = __irq_domain_alloc_irqs(domain, virq, nr_irqs, NUMA_NO_NODE, in irq_reserve_ipi() 87 if (virq <= 0) { in irq_reserve_ipi() 93 data = irq_get_irq_data(virq + i); in irq_reserve_ipi() 96 irq_set_status_flags(virq + i, IRQ_NO_BALANCING); in irq_reserve_ipi() 98 return virq; in irq_reserve_ipi() 101 irq_free_descs(virq, nr_irqs); in irq_reserve_ipi() 313 int ipi_send_single(unsigned int virq, unsigned int cpu) in ipi_send_single() argument [all …]
|
D | msi.c | 530 static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, in msi_domain_alloc() argument 542 ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg); in msi_domain_alloc() 548 ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg); in msi_domain_alloc() 552 ops->msi_free(domain, info, virq + i); in msi_domain_alloc() 554 irq_domain_free_irqs_top(domain, virq, nr_irqs); in msi_domain_alloc() 562 static void msi_domain_free(struct irq_domain *domain, unsigned int virq, in msi_domain_free() argument 570 info->ops->msi_free(domain, info, virq + i); in msi_domain_free() 572 irq_domain_free_irqs_top(domain, virq, nr_irqs); in msi_domain_free() 603 unsigned int virq, irq_hw_number_t hwirq, in msi_domain_ops_init() argument 606 irq_domain_set_hwirq_and_chip(domain, virq, hwirq, info->chip, in msi_domain_ops_init() [all …]
|
D | generic-chip.c | 384 int irq_map_generic_chip(struct irq_domain *d, unsigned int virq, in irq_map_generic_chip() argument 387 struct irq_data *data = irq_domain_get_irq_data(d, virq); in irq_map_generic_chip() 421 irq_set_lockdep_class(virq, &irq_nested_lock_class, in irq_map_generic_chip() 429 irq_domain_set_info(d, virq, hw_irq, chip, gc, ct->handler, NULL, NULL); in irq_map_generic_chip() 430 irq_modify_status(virq, dgc->irq_flags_to_clear, dgc->irq_flags_to_set); in irq_map_generic_chip() 434 void irq_unmap_generic_chip(struct irq_domain *d, unsigned int virq) in irq_unmap_generic_chip() argument 436 struct irq_data *data = irq_domain_get_irq_data(d, virq); in irq_unmap_generic_chip() 449 irq_domain_set_info(d, virq, hw_irq, &no_irq_chip, NULL, NULL, NULL, in irq_unmap_generic_chip() 547 unsigned int i, virq; in irq_remove_generic_chip() local 563 virq = irq_find_mapping(gc->domain, gc->irq_base + i); in irq_remove_generic_chip() [all …]
|
D | irq_sim.c | 118 unsigned int virq, irq_hw_number_t hw) in irq_sim_domain_map() argument 127 irq_set_chip(virq, &irq_sim_irqchip); in irq_sim_domain_map() 128 irq_set_chip_data(virq, irq_ctx); in irq_sim_domain_map() 129 irq_set_handler(virq, handle_simple_irq); in irq_sim_domain_map() 130 irq_modify_status(virq, IRQ_NOREQUEST | IRQ_NOAUTOEN, IRQ_NOPROBE); in irq_sim_domain_map() 136 static void irq_sim_domain_unmap(struct irq_domain *domain, unsigned int virq) in irq_sim_domain_unmap() argument 141 irqd = irq_domain_get_irq_data(domain, virq); in irq_sim_domain_unmap() 144 irq_set_handler(virq, NULL); in irq_sim_domain_unmap()
|