Lines Matching refs:hwirq
503 irq_hw_number_t hwirq) in irq_domain_clear_mapping() argument
509 if (hwirq < domain->revmap_size) in irq_domain_clear_mapping()
510 rcu_assign_pointer(domain->revmap[hwirq], NULL); in irq_domain_clear_mapping()
512 radix_tree_delete(&domain->revmap_tree, hwirq); in irq_domain_clear_mapping()
517 irq_hw_number_t hwirq, in irq_domain_set_mapping() argument
524 if (hwirq < domain->revmap_size) in irq_domain_set_mapping()
525 rcu_assign_pointer(domain->revmap[hwirq], irq_data); in irq_domain_set_mapping()
527 radix_tree_insert(&domain->revmap_tree, hwirq, irq_data); in irq_domain_set_mapping()
534 irq_hw_number_t hwirq; in irq_domain_disassociate() local
540 hwirq = irq_data->hwirq; in irq_domain_disassociate()
555 irq_data->hwirq = 0; in irq_domain_disassociate()
559 irq_domain_clear_mapping(domain, hwirq); in irq_domain_disassociate()
563 irq_hw_number_t hwirq) in irq_domain_associate() argument
568 if (WARN(hwirq >= domain->hwirq_max, in irq_domain_associate()
569 "error: hwirq 0x%x is too large for %s\n", (int)hwirq, domain->name)) in irq_domain_associate()
577 irq_data->hwirq = hwirq; in irq_domain_associate()
580 ret = domain->ops->map(domain, virq, hwirq); in irq_domain_associate()
589 domain->name, hwirq, virq, ret); in irq_domain_associate()
592 irq_data->hwirq = 0; in irq_domain_associate()
603 irq_domain_set_mapping(domain, hwirq, irq_data); in irq_domain_associate()
683 irq_hw_number_t hwirq, in irq_create_mapping_affinity() argument
689 pr_debug("irq_create_mapping(0x%p, 0x%lx)\n", domain, hwirq); in irq_create_mapping_affinity()
695 WARN(1, "%s(, %lx) called with NULL domain\n", __func__, hwirq); in irq_create_mapping_affinity()
703 virq = irq_find_mapping(domain, hwirq); in irq_create_mapping_affinity()
710 virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), in irq_create_mapping_affinity()
717 if (irq_domain_associate(domain, virq, hwirq)) { in irq_create_mapping_affinity()
723 hwirq, of_node_full_name(of_node), virq); in irq_create_mapping_affinity()
731 irq_hw_number_t *hwirq, unsigned int *type) in irq_domain_translate() argument
735 return d->ops->translate(d, fwspec, hwirq, type); in irq_domain_translate()
740 hwirq, type); in irq_domain_translate()
743 *hwirq = fwspec->param[0]; in irq_domain_translate()
764 irq_hw_number_t hwirq; in irq_create_fwspec_mapping() local
782 if (irq_domain_translate(domain, fwspec, &hwirq, &type)) in irq_create_fwspec_mapping()
796 virq = irq_find_mapping(domain, hwirq); in irq_create_fwspec_mapping()
820 hwirq, of_node_full_name(to_of_node(fwspec->fwnode))); in irq_create_fwspec_mapping()
830 virq = irq_create_mapping(domain, hwirq); in irq_create_fwspec_mapping()
896 irq_hw_number_t hwirq, in __irq_resolve_mapping() argument
909 if (hwirq < domain->revmap_size) { in __irq_resolve_mapping()
910 data = irq_domain_get_irq_data(domain, hwirq); in __irq_resolve_mapping()
911 if (data && data->hwirq == hwirq) in __irq_resolve_mapping()
920 if (hwirq < domain->revmap_size) in __irq_resolve_mapping()
921 data = rcu_dereference(domain->revmap[hwirq]); in __irq_resolve_mapping()
923 data = radix_tree_lookup(&domain->revmap_tree, hwirq); in __irq_resolve_mapping()
1042 int irq_domain_alloc_descs(int virq, unsigned int cnt, irq_hw_number_t hwirq, in irq_domain_alloc_descs() argument
1051 hint = hwirq % nr_irqs; in irq_domain_alloc_descs()
1071 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
1123 irq_domain_set_mapping(domain, data->hwirq, data); in irq_domain_insert_irq()
1144 irq_hw_number_t hwirq = data->hwirq; in irq_domain_remove_irq() local
1147 irq_domain_clear_mapping(domain, hwirq); in irq_domain_remove_irq()
1322 irq_hw_number_t hwirq, struct irq_chip *chip, in irq_domain_set_hwirq_and_chip() argument
1330 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
1350 irq_hw_number_t hwirq, struct irq_chip *chip, in irq_domain_set_info() argument
1354 irq_domain_set_hwirq_and_chip(domain, virq, hwirq, chip, chip_data); in irq_domain_set_info()
1517 if (d->hwirq < d->domain->revmap_size) { in irq_domain_fix_revmap()
1519 rcu_assign_pointer(d->domain->revmap[d->hwirq], d); in irq_domain_fix_revmap()
1521 slot = radix_tree_lookup_slot(&d->domain->revmap_tree, d->hwirq); in irq_domain_fix_revmap()
1590 root_irq_data->hwirq = 0; in irq_domain_push_irq()
1604 irq_domain_set_mapping(domain, root_irq_data->hwirq, root_irq_data); in irq_domain_push_irq()
1666 irq_domain_clear_mapping(domain, root_irq_data->hwirq); in irq_domain_pop_irq()
1856 irq_hw_number_t hwirq, struct irq_chip *chip, in irq_domain_set_info() argument