Lines Matching full:hwirq

386  * @first_hwirq: first hwirq number to use for the translation. Should normally
506 irq_hw_number_t hwirq) in irq_domain_clear_mapping() argument
513 if (hwirq < domain->revmap_size) in irq_domain_clear_mapping()
514 rcu_assign_pointer(domain->revmap[hwirq], NULL); in irq_domain_clear_mapping()
516 radix_tree_delete(&domain->revmap_tree, hwirq); in irq_domain_clear_mapping()
520 irq_hw_number_t hwirq, in irq_domain_set_mapping() argument
532 if (hwirq < domain->revmap_size) in irq_domain_set_mapping()
533 rcu_assign_pointer(domain->revmap[hwirq], irq_data); in irq_domain_set_mapping()
535 radix_tree_insert(&domain->revmap_tree, hwirq, irq_data); in irq_domain_set_mapping()
541 irq_hw_number_t hwirq; in irq_domain_disassociate() local
547 hwirq = irq_data->hwirq; in irq_domain_disassociate()
565 irq_data->hwirq = 0; in irq_domain_disassociate()
568 /* Clear reverse map for this hwirq */ in irq_domain_disassociate()
569 irq_domain_clear_mapping(domain, hwirq); in irq_domain_disassociate()
575 irq_hw_number_t hwirq) in irq_domain_associate_locked() argument
580 if (WARN(hwirq >= domain->hwirq_max, in irq_domain_associate_locked()
581 "error: hwirq 0x%x is too large for %s\n", (int)hwirq, domain->name)) in irq_domain_associate_locked()
588 irq_data->hwirq = hwirq; in irq_domain_associate_locked()
591 ret = domain->ops->map(domain, virq, hwirq); in irq_domain_associate_locked()
599 pr_info("%s didn't like hwirq-0x%lx to VIRQ%i mapping (rc=%d)\n", in irq_domain_associate_locked()
600 domain->name, hwirq, virq, ret); in irq_domain_associate_locked()
603 irq_data->hwirq = 0; in irq_domain_associate_locked()
609 irq_domain_set_mapping(domain, hwirq, irq_data); in irq_domain_associate_locked()
617 irq_hw_number_t hwirq) in irq_domain_associate() argument
622 ret = irq_domain_associate_locked(domain, virq, hwirq); in irq_domain_associate()
653 * the revmap path by using the hwirq directly.
688 irq_hw_number_t hwirq, in irq_create_mapping_affinity_locked() argument
694 pr_debug("irq_create_mapping(0x%p, 0x%lx)\n", domain, hwirq); in irq_create_mapping_affinity_locked()
697 virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), in irq_create_mapping_affinity_locked()
704 if (irq_domain_associate_locked(domain, virq, hwirq)) { in irq_create_mapping_affinity_locked()
710 hwirq, of_node_full_name(of_node), virq); in irq_create_mapping_affinity_locked()
718 * @hwirq: hardware irq number in that domain space
727 irq_hw_number_t hwirq, in irq_create_mapping_affinity() argument
736 WARN(1, "%s(, %lx) called with NULL domain\n", __func__, hwirq); in irq_create_mapping_affinity()
743 virq = irq_find_mapping(domain, hwirq); in irq_create_mapping_affinity()
749 virq = irq_create_mapping_affinity_locked(domain, hwirq, affinity); in irq_create_mapping_affinity()
759 irq_hw_number_t *hwirq, unsigned int *type) in irq_domain_translate() argument
763 return d->ops->translate(d, fwspec, hwirq, type); in irq_domain_translate()
768 hwirq, type); in irq_domain_translate()
771 *hwirq = fwspec->param[0]; in irq_domain_translate()
792 irq_hw_number_t hwirq; in irq_create_fwspec_mapping() local
810 if (irq_domain_translate(domain, fwspec, &hwirq, &type)) in irq_create_fwspec_mapping()
826 virq = irq_find_mapping(domain, hwirq); in irq_create_fwspec_mapping()
851 pr_warn("type mismatch, failed to map hwirq-%lu for %s!\n", in irq_create_fwspec_mapping()
852 hwirq, of_node_full_name(to_of_node(fwspec->fwnode))); in irq_create_fwspec_mapping()
866 virq = irq_create_mapping_affinity_locked(domain, hwirq, NULL); in irq_create_fwspec_mapping()
925 * @hwirq: hardware irq number in that domain space
931 irq_hw_number_t hwirq, in __irq_resolve_mapping() argument
944 if (hwirq < domain->hwirq_max) { in __irq_resolve_mapping()
945 data = irq_domain_get_irq_data(domain, hwirq); in __irq_resolve_mapping()
946 if (data && data->hwirq == hwirq) in __irq_resolve_mapping()
949 *irq = hwirq; in __irq_resolve_mapping()
956 /* Check if the hwirq is in the linear revmap. */ in __irq_resolve_mapping()
957 if (hwirq < domain->revmap_size) in __irq_resolve_mapping()
958 data = rcu_dereference(domain->revmap[hwirq]); in __irq_resolve_mapping()
960 data = radix_tree_lookup(&domain->revmap_tree, hwirq); in __irq_resolve_mapping()
977 * bindings where the cell value maps directly to the hwirq number.
995 * bindings where the cell values map directly to the hwirq number
1013 * or two cell bindings where the cell values map directly to the hwirq number
1063 * bindings where the cell values map directly to the hwirq number
1079 int irq_domain_alloc_descs(int virq, unsigned int cnt, irq_hw_number_t hwirq, in irq_domain_alloc_descs() argument
1088 hint = hwirq % nr_irqs; in irq_domain_alloc_descs()
1103 * irq_domain_reset_irq_data - Clear hwirq, chip and chip_data in @irq_data
1108 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
1165 irq_domain_set_mapping(domain, data->hwirq, data); in irq_domain_insert_irq()
1182 irq_hw_number_t hwirq = data->hwirq; in irq_domain_remove_irq() local
1185 irq_domain_clear_mapping(domain, hwirq); in irq_domain_remove_irq()
1352 * irq_domain_set_hwirq_and_chip - Set hwirq and irqchip of @virq at @domain
1355 * @hwirq: The hwirq number
1360 irq_hw_number_t hwirq, in irq_domain_set_hwirq_and_chip() argument
1369 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
1381 * @hwirq: The hardware interrupt number
1389 irq_hw_number_t hwirq, const struct irq_chip *chip, in irq_domain_set_info() argument
1393 irq_domain_set_hwirq_and_chip(domain, virq, hwirq, chip, chip_data); in irq_domain_set_info()
1565 if (d->hwirq < d->domain->revmap_size) { in irq_domain_fix_revmap()
1567 rcu_assign_pointer(d->domain->revmap[d->hwirq], d); in irq_domain_fix_revmap()
1569 slot = radix_tree_lookup_slot(&d->domain->revmap_tree, d->hwirq); in irq_domain_fix_revmap()
1637 irq_data->hwirq = 0; in irq_domain_push_irq()
1641 /* May (probably does) set hwirq, chip, etc. */ in irq_domain_push_irq()
1651 irq_domain_set_mapping(domain, irq_data->hwirq, irq_data); in irq_domain_push_irq()
1712 irq_domain_clear_mapping(domain, irq_data->hwirq); in irq_domain_pop_irq()
1883 * @hwirq: The hardware interrupt number
1891 irq_hw_number_t hwirq, const struct irq_chip *chip, in irq_domain_set_info() argument