/kernel/irq/ |
D | irqdomain.c | 550 static int irq_domain_associate_locked(struct irq_domain *domain, unsigned int virq, in irq_domain_associate_locked() argument 553 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_associate_locked() 559 if (WARN(!irq_data, "error: virq%i is not allocated", virq)) in irq_domain_associate_locked() 561 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate_locked() 567 ret = domain->ops->map(domain, virq, hwirq); in irq_domain_associate_locked() 576 domain->name, hwirq, virq, ret); in irq_domain_associate_locked() 591 irq_clear_status_flags(virq, IRQ_NOREQUEST); in irq_domain_associate_locked() 596 int irq_domain_associate(struct irq_domain *domain, unsigned int virq, in irq_domain_associate() argument 602 ret = irq_domain_associate_locked(domain, virq, hwirq); in irq_domain_associate() 638 unsigned int virq; in irq_create_direct_mapping() local [all …]
|
D | msi.c | 138 static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, in msi_domain_alloc() argument 150 ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg); in msi_domain_alloc() 156 ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg); in msi_domain_alloc() 160 ops->msi_free(domain, info, virq + i); in msi_domain_alloc() 162 irq_domain_free_irqs_top(domain, virq, nr_irqs); in msi_domain_alloc() 170 static void msi_domain_free(struct irq_domain *domain, unsigned int virq, in msi_domain_free() argument 178 info->ops->msi_free(domain, info, virq + i); in msi_domain_free() 180 irq_domain_free_irqs_top(domain, virq, nr_irqs); in msi_domain_free() 211 unsigned int virq, irq_hw_number_t hwirq, in msi_domain_ops_init() argument 214 irq_domain_set_hwirq_and_chip(domain, virq, hwirq, info->chip, in msi_domain_ops_init() [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() 307 int ipi_send_single(unsigned int virq, unsigned int cpu) in ipi_send_single() argument [all …]
|
D | generic-chip.c | 378 int irq_map_generic_chip(struct irq_domain *d, unsigned int virq, in irq_map_generic_chip() argument 381 struct irq_data *data = irq_domain_get_irq_data(d, virq); in irq_map_generic_chip() 415 irq_set_lockdep_class(virq, &irq_nested_lock_class, in irq_map_generic_chip() 423 irq_domain_set_info(d, virq, hw_irq, chip, gc, ct->handler, NULL, NULL); in irq_map_generic_chip() 424 irq_modify_status(virq, dgc->irq_flags_to_clear, dgc->irq_flags_to_set); in irq_map_generic_chip() 428 static void irq_unmap_generic_chip(struct irq_domain *d, unsigned int virq) in irq_unmap_generic_chip() argument 430 struct irq_data *data = irq_domain_get_irq_data(d, virq); in irq_unmap_generic_chip() 443 irq_domain_set_info(d, virq, hw_irq, &no_irq_chip, NULL, NULL, NULL, in irq_unmap_generic_chip() 541 unsigned int i, virq; in irq_remove_generic_chip() local 557 virq = irq_find_mapping(gc->domain, gc->irq_base + i); in irq_remove_generic_chip() [all …]
|
D | irq_sim.c | 122 unsigned int virq, irq_hw_number_t hw) in irq_sim_domain_map() argument 131 irq_set_chip(virq, &irq_sim_irqchip); in irq_sim_domain_map() 132 irq_set_chip_data(virq, irq_ctx); in irq_sim_domain_map() 133 irq_set_handler(virq, handle_simple_irq); in irq_sim_domain_map() 134 irq_modify_status(virq, IRQ_NOREQUEST | IRQ_NOAUTOEN, IRQ_NOPROBE); in irq_sim_domain_map() 140 static void irq_sim_domain_unmap(struct irq_domain *domain, unsigned int virq) in irq_sim_domain_unmap() argument 145 irqd = irq_domain_get_irq_data(domain, virq); in irq_sim_domain_unmap() 148 irq_set_handler(virq, NULL); in irq_sim_domain_unmap()
|