Lines Matching +full:msi +full:- +full:specifier
1 // SPDX-License-Identifier: GPL-2.0
49 return fwid->name; in irqchip_fwnode_get_name()
58 * __irq_domain_alloc_fwnode - Allocate a fwnode_handle suitable for
63 * @pa: Optional user-provided physical address
87 n = kasprintf(GFP_KERNEL, "%s-%d", name, id); in __irq_domain_alloc_fwnode()
100 fwid->type = type; in __irq_domain_alloc_fwnode()
101 fwid->name = n; in __irq_domain_alloc_fwnode()
102 fwid->pa = pa; in __irq_domain_alloc_fwnode()
103 fwnode_init(&fwid->fwnode, &irqchip_fwnode_ops); in __irq_domain_alloc_fwnode()
104 return &fwid->fwnode; in __irq_domain_alloc_fwnode()
109 * irq_domain_free_fwnode - Free a non-OF-backed fwnode_handle
121 kfree(fwid->name); in irq_domain_free_fwnode()
127 * __irq_domain_add() - Allocate a new irq_domain data structure
162 switch (fwid->type) { in __irq_domain_add()
165 domain->fwnode = fwnode; in __irq_domain_add()
166 domain->name = kstrdup(fwid->name, GFP_KERNEL); in __irq_domain_add()
167 if (!domain->name) { in __irq_domain_add()
171 domain->flags |= IRQ_DOMAIN_NAME_ALLOCATED; in __irq_domain_add()
174 domain->fwnode = fwnode; in __irq_domain_add()
175 domain->name = fwid->name; in __irq_domain_add()
195 domain->name = name; in __irq_domain_add()
196 domain->fwnode = fwnode; in __irq_domain_add()
197 domain->flags |= IRQ_DOMAIN_NAME_ALLOCATED; in __irq_domain_add()
200 if (!domain->name) { in __irq_domain_add()
203 domain->name = kasprintf(GFP_KERNEL, "unknown-%d", in __irq_domain_add()
205 if (!domain->name) { in __irq_domain_add()
209 domain->flags |= IRQ_DOMAIN_NAME_ALLOCATED; in __irq_domain_add()
216 INIT_RADIX_TREE(&domain->revmap_tree, GFP_KERNEL); in __irq_domain_add()
217 mutex_init(&domain->revmap_mutex); in __irq_domain_add()
218 domain->ops = ops; in __irq_domain_add()
219 domain->host_data = host_data; in __irq_domain_add()
220 domain->hwirq_max = hwirq_max; in __irq_domain_add()
223 domain->flags |= IRQ_DOMAIN_FLAG_NO_MAP; in __irq_domain_add()
226 domain->revmap_size = size; in __irq_domain_add()
232 list_add(&domain->link, &irq_domain_list); in __irq_domain_add()
235 pr_debug("Added domain %s\n", domain->name); in __irq_domain_add()
241 * irq_domain_remove() - Remove an irq domain.
253 WARN_ON(!radix_tree_empty(&domain->revmap_tree)); in irq_domain_remove()
255 list_del(&domain->link); in irq_domain_remove()
265 pr_debug("Removed domain %s\n", domain->name); in irq_domain_remove()
267 fwnode_dev_initialized(domain->fwnode, false); in irq_domain_remove()
268 fwnode_handle_put(domain->fwnode); in irq_domain_remove()
269 if (domain->flags & IRQ_DOMAIN_NAME_ALLOCATED) in irq_domain_remove()
270 kfree(domain->name); in irq_domain_remove()
280 if (domain->bus_token == bus_token) in irq_domain_update_bus_token()
285 domain->bus_token = bus_token; in irq_domain_update_bus_token()
287 name = kasprintf(GFP_KERNEL, "%s-%d", domain->name, bus_token); in irq_domain_update_bus_token()
295 if (domain->flags & IRQ_DOMAIN_NAME_ALLOCATED) in irq_domain_update_bus_token()
296 kfree(domain->name); in irq_domain_update_bus_token()
298 domain->flags |= IRQ_DOMAIN_NAME_ALLOCATED; in irq_domain_update_bus_token()
300 domain->name = name; in irq_domain_update_bus_token()
308 * irq_domain_create_simple() - Register an irq_domain and optionally map a range of irqs
312 * pass zero to assign irqs on-the-fly. If first_irq is non-zero, then
313 * pre-map all of the irqs in the domain to virqs starting at first_irq.
323 * static virq assignments (non-DT boot) then it will set that up correctly.
343 pr_info("Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n", in irq_domain_create_simple()
354 * irq_domain_add_legacy() - Allocate and register a legacy revmap irq_domain.
398 * irq_find_matching_fwspec() - Locates a domain for a given fwspec
399 * @fwspec: FW specifier for an interrupt
400 * @bus_token: domain-specific data
406 struct fwnode_handle *fwnode = fwspec->fwnode; in irq_find_matching_fwspec()
420 if (h->ops->select && fwspec->param_count) in irq_find_matching_fwspec()
421 rc = h->ops->select(h, fwspec, bus_token); in irq_find_matching_fwspec()
422 else if (h->ops->match) in irq_find_matching_fwspec()
423 rc = h->ops->match(h, to_of_node(fwnode), bus_token); in irq_find_matching_fwspec()
425 rc = ((fwnode != NULL) && (h->fwnode == fwnode) && in irq_find_matching_fwspec()
427 (h->bus_token == bus_token))); in irq_find_matching_fwspec()
440 * irq_domain_check_msi_remap - Check whether all MSI irq domains implement
443 * Return: false if any MSI irq domain does not support IRQ remapping,
444 * true otherwise (including if there is no MSI irq domain)
465 * irq_set_default_host() - Set a "default" irq domain
471 * aren't properly represented in the device-tree.
482 * irq_get_default_host() - Retrieve the "default" irq domain
487 * systems that cannot implement a firmware->fwnode mapping (which
499 (domain->flags & IRQ_DOMAIN_FLAG_NO_MAP); in irq_domain_is_nomap()
508 mutex_lock(&domain->revmap_mutex); in irq_domain_clear_mapping()
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()
513 mutex_unlock(&domain->revmap_mutex); in irq_domain_clear_mapping()
523 mutex_lock(&domain->revmap_mutex); in irq_domain_set_mapping()
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()
528 mutex_unlock(&domain->revmap_mutex); in irq_domain_set_mapping()
536 if (WARN(!irq_data || irq_data->domain != domain, in irq_domain_disassociate()
540 hwirq = irq_data->hwirq; in irq_domain_disassociate()
550 if (domain->ops->unmap) in irq_domain_disassociate()
551 domain->ops->unmap(domain, irq); in irq_domain_disassociate()
554 irq_data->domain = NULL; in irq_domain_disassociate()
555 irq_data->hwirq = 0; in irq_domain_disassociate()
556 domain->mapcount--; in irq_domain_disassociate()
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()
570 return -EINVAL; in irq_domain_associate()
572 return -EINVAL; in irq_domain_associate()
573 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate()
574 return -EINVAL; in irq_domain_associate()
577 irq_data->hwirq = hwirq; in irq_domain_associate()
578 irq_data->domain = domain; in irq_domain_associate()
579 if (domain->ops->map) { in irq_domain_associate()
580 ret = domain->ops->map(domain, virq, hwirq); in irq_domain_associate()
583 * If map() returns -EPERM, this interrupt is protected in irq_domain_associate()
587 if (ret != -EPERM) { in irq_domain_associate()
588 pr_info("%s didn't like hwirq-0x%lx to VIRQ%i mapping (rc=%d)\n", in irq_domain_associate()
589 domain->name, hwirq, virq, ret); in irq_domain_associate()
591 irq_data->domain = NULL; in irq_domain_associate()
592 irq_data->hwirq = 0; in irq_domain_associate()
598 if (!domain->name && irq_data->chip) in irq_domain_associate()
599 domain->name = irq_data->chip->name; in irq_domain_associate()
602 domain->mapcount++; in irq_domain_associate()
630 * irq_create_direct_mapping() - Allocate an irq for direct mapping
653 if (virq >= domain->hwirq_max) { in irq_create_direct_mapping()
655 domain->hwirq_max); in irq_create_direct_mapping()
672 * irq_create_mapping_affinity() - Map a hardware interrupt into linux irq space
698 pr_debug("-> using domain @%p\n", domain); in irq_create_mapping_affinity()
705 pr_debug("-> existing mapping on virq %d\n", virq); 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()
713 pr_debug("-> virq allocation failed\n"); in irq_create_mapping_affinity()
734 if (d->ops->translate) in irq_domain_translate()
735 return d->ops->translate(d, fwspec, hwirq, type); in irq_domain_translate()
737 if (d->ops->xlate) in irq_domain_translate()
738 return d->ops->xlate(d, to_of_node(fwspec->fwnode), in irq_domain_translate()
739 fwspec->param, fwspec->param_count, in irq_domain_translate()
743 *hwirq = fwspec->param[0]; in irq_domain_translate()
752 fwspec->fwnode = of_node_to_fwnode(np); in of_phandle_args_to_fwspec()
753 fwspec->param_count = count; in of_phandle_args_to_fwspec()
756 fwspec->param[i] = args[i]; in of_phandle_args_to_fwspec()
768 if (fwspec->fwnode) { in irq_create_fwspec_mapping()
778 of_node_full_name(to_of_node(fwspec->fwnode))); in irq_create_fwspec_mapping()
819 pr_warn("type mismatch, failed to map hwirq-%lu for %s!\n", in irq_create_fwspec_mapping()
820 hwirq, of_node_full_name(to_of_node(fwspec->fwnode))); in irq_create_fwspec_mapping()
855 of_phandle_args_to_fwspec(irq_data->np, irq_data->args, in irq_create_of_mapping()
856 irq_data->args_count, &fwspec); in irq_create_of_mapping()
863 * irq_dispose_mapping() - Unmap an interrupt
874 domain = irq_data->domain; in irq_dispose_mapping()
888 * __irq_resolve_mapping() - Find a linux irq from a hw irq number.
909 if (hwirq < domain->hwirq_max) { in __irq_resolve_mapping()
911 if (data && data->hwirq == hwirq) in __irq_resolve_mapping()
922 if (hwirq < domain->revmap_size) in __irq_resolve_mapping()
923 data = rcu_dereference(domain->revmap[hwirq]); in __irq_resolve_mapping()
925 data = radix_tree_lookup(&domain->revmap_tree, hwirq); in __irq_resolve_mapping()
930 *irq = data->irq; in __irq_resolve_mapping()
939 * irq_domain_xlate_onecell() - Generic xlate for direct one cell bindings
941 * Device Tree IRQ specifier translation function which works with one cell
949 return -EINVAL; in irq_domain_xlate_onecell()
957 * irq_domain_xlate_twocell() - Generic xlate for direct two cell bindings
959 * Device Tree IRQ specifier translation function which works with two cell
975 * irq_domain_xlate_onetwocell() - Generic xlate for one or two cell bindings
977 * Device Tree IRQ specifier translation function which works with either one
991 return -EINVAL; in irq_domain_xlate_onetwocell()
1007 * irq_domain_translate_onecell() - Generic translate for direct one cell
1015 if (WARN_ON(fwspec->param_count < 1)) in irq_domain_translate_onecell()
1016 return -EINVAL; in irq_domain_translate_onecell()
1017 *out_hwirq = fwspec->param[0]; in irq_domain_translate_onecell()
1024 * irq_domain_translate_twocell() - Generic translate for direct two cell
1027 * Device Tree IRQ specifier translation function which works with two cell
1036 if (WARN_ON(fwspec->param_count < 2)) in irq_domain_translate_twocell()
1037 return -EINVAL; in irq_domain_translate_twocell()
1038 *out_hwirq = fwspec->param[0]; in irq_domain_translate_twocell()
1039 *out_type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK; in irq_domain_translate_twocell()
1056 virq = __irq_alloc_descs(-1, hint, cnt, node, THIS_MODULE, in irq_domain_alloc_descs()
1059 virq = __irq_alloc_descs(-1, 1, cnt, node, THIS_MODULE, in irq_domain_alloc_descs()
1068 * irq_domain_reset_irq_data - Clear hwirq, chip and chip_data in @irq_data
1073 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
1074 irq_data->chip = &no_irq_chip; in irq_domain_reset_irq_data()
1075 irq_data->chip_data = NULL; in irq_domain_reset_irq_data()
1081 * irq_domain_create_hierarchy - Add a irqdomain into the hierarchy
1109 domain->parent = parent; in irq_domain_create_hierarchy()
1110 domain->flags |= flags; in irq_domain_create_hierarchy()
1121 for (data = irq_get_irq_data(virq); data; data = data->parent_data) { in irq_domain_insert_irq()
1122 struct irq_domain *domain = data->domain; in irq_domain_insert_irq()
1124 domain->mapcount++; in irq_domain_insert_irq()
1125 irq_domain_set_mapping(domain, data->hwirq, data); in irq_domain_insert_irq()
1128 if (!domain->name && data->chip) in irq_domain_insert_irq()
1129 domain->name = data->chip->name; in irq_domain_insert_irq()
1144 for (data = irq_get_irq_data(virq); data; data = data->parent_data) { in irq_domain_remove_irq()
1145 struct irq_domain *domain = data->domain; in irq_domain_remove_irq()
1146 irq_hw_number_t hwirq = data->hwirq; in irq_domain_remove_irq()
1148 domain->mapcount--; in irq_domain_remove_irq()
1161 child->parent_data = irq_data; in irq_domain_insert_irq_data()
1162 irq_data->irq = child->irq; in irq_domain_insert_irq_data()
1163 irq_data->common = child->common; in irq_domain_insert_irq_data()
1164 irq_data->domain = domain; in irq_domain_insert_irq_data()
1176 irq_data = irq_data->parent_data; in __irq_domain_free_hierarchy()
1188 tmp = irq_data->parent_data; in irq_domain_free_irq_data()
1189 irq_data->parent_data = NULL; in irq_domain_free_irq_data()
1190 irq_data->domain = NULL; in irq_domain_free_irq_data()
1197 * irq_domain_disconnect_hierarchy - Mark the first unused level of a hierarchy
1202 * Returns -EINVAL if @virq doesn't have a valid irq_data pointing
1216 return -EINVAL; in irq_domain_disconnect_hierarchy()
1218 irqd->chip = ERR_PTR(-ENOTCONN); in irq_domain_disconnect_hierarchy()
1231 if (!irq_data->chip || IS_ERR(irq_data->chip)) in irq_domain_trim_hierarchy()
1232 return -EINVAL; in irq_domain_trim_hierarchy()
1238 for (irqd = irq_data->parent_data; irqd; irq_data = irqd, irqd = irqd->parent_data) { in irq_domain_trim_hierarchy()
1240 if (irqd->chip && tail) in irq_domain_trim_hierarchy()
1241 return -EINVAL; in irq_domain_trim_hierarchy()
1244 if (!irqd->chip && !tail) in irq_domain_trim_hierarchy()
1245 return -EINVAL; in irq_domain_trim_hierarchy()
1247 if (IS_ERR(irqd->chip)) { in irq_domain_trim_hierarchy()
1248 /* Only -ENOTCONN is a valid trim marker */ in irq_domain_trim_hierarchy()
1249 if (PTR_ERR(irqd->chip) != -ENOTCONN) in irq_domain_trim_hierarchy()
1250 return -EINVAL; in irq_domain_trim_hierarchy()
1261 virq, tail->parent_data->domain->name); in irq_domain_trim_hierarchy()
1265 tail = tail->parent_data; in irq_domain_trim_hierarchy()
1266 irqd->parent_data = NULL; in irq_domain_trim_hierarchy()
1282 irq_data->domain = domain; in irq_domain_alloc_irq_data()
1284 for (parent = domain->parent; parent; parent = parent->parent) { in irq_domain_alloc_irq_data()
1288 return -ENOMEM; in irq_domain_alloc_irq_data()
1297 * irq_domain_get_irq_data - Get irq_data associated with @virq and @domain
1307 irq_data = irq_data->parent_data) in irq_domain_get_irq_data()
1308 if (irq_data->domain == domain) in irq_domain_get_irq_data()
1316 * irq_domain_set_hwirq_and_chip - Set hwirq and irqchip of @virq at @domain
1331 return -ENOENT; in irq_domain_set_hwirq_and_chip()
1333 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
1334 irq_data->chip = (struct irq_chip *)(chip ? chip : &no_irq_chip); in irq_domain_set_hwirq_and_chip()
1335 irq_data->chip_data = chip_data; in irq_domain_set_hwirq_and_chip()
1342 * irq_domain_set_info - Set the complete data for a @virq in @domain
1364 * irq_domain_free_irqs_common - Clear irq_data and free the parent
1385 * irq_domain_free_irqs_top - Clear handler and handler data, clear irqdata and free parent
1408 if (!domain->ops->free) in irq_domain_free_irqs_hierarchy()
1413 domain->ops->free(domain, irq_base + i, 1); in irq_domain_free_irqs_hierarchy()
1421 if (!domain->ops->alloc) { in irq_domain_alloc_irqs_hierarchy()
1422 pr_debug("domain->ops->alloc() is NULL\n"); in irq_domain_alloc_irqs_hierarchy()
1423 return -ENOSYS; in irq_domain_alloc_irqs_hierarchy()
1426 return domain->ops->alloc(domain, irq_base, nr_irqs, arg); in irq_domain_alloc_irqs_hierarchy()
1430 * __irq_domain_alloc_irqs - Allocate IRQs from domain
1460 return -EINVAL; in __irq_domain_alloc_irqs()
1477 ret = -ENOMEM; in __irq_domain_alloc_irqs()
1515 if (irq_domain_is_nomap(d->domain)) in irq_domain_fix_revmap()
1519 mutex_lock(&d->domain->revmap_mutex); in irq_domain_fix_revmap()
1520 if (d->hwirq < d->domain->revmap_size) { in irq_domain_fix_revmap()
1522 rcu_assign_pointer(d->domain->revmap[d->hwirq], d); in irq_domain_fix_revmap()
1524 slot = radix_tree_lookup_slot(&d->domain->revmap_tree, d->hwirq); in irq_domain_fix_revmap()
1526 radix_tree_replace_slot(&d->domain->revmap_tree, slot, d); in irq_domain_fix_revmap()
1528 mutex_unlock(&d->domain->revmap_mutex); in irq_domain_fix_revmap()
1532 * irq_domain_push_irq() - Push a domain in to the top of a hierarchy.
1555 * calls to struct irq_domain_ops->alloc(), which could lead in irq_domain_push_irq()
1560 return -EINVAL; in irq_domain_push_irq()
1561 if (WARN_ON(desc->action)) in irq_domain_push_irq()
1562 return -EBUSY; in irq_domain_push_irq()
1565 return -EINVAL; in irq_domain_push_irq()
1568 return -EINVAL; in irq_domain_push_irq()
1571 return -EINVAL; in irq_domain_push_irq()
1573 if (domain->parent != root_irq_data->domain) in irq_domain_push_irq()
1574 return -EINVAL; in irq_domain_push_irq()
1579 return -ENOMEM; in irq_domain_push_irq()
1590 root_irq_data->parent_data = child_irq_data; in irq_domain_push_irq()
1591 root_irq_data->domain = domain; in irq_domain_push_irq()
1592 root_irq_data->mask = 0; in irq_domain_push_irq()
1593 root_irq_data->hwirq = 0; in irq_domain_push_irq()
1594 root_irq_data->chip = NULL; in irq_domain_push_irq()
1595 root_irq_data->chip_data = NULL; in irq_domain_push_irq()
1607 irq_domain_set_mapping(domain, root_irq_data->hwirq, root_irq_data); in irq_domain_push_irq()
1617 * irq_domain_pop_irq() - Remove a domain from the top of a hierarchy.
1637 * struct irq_domain_ops->free(), which could lead to in irq_domain_pop_irq()
1642 return -EINVAL; in irq_domain_pop_irq()
1643 if (WARN_ON(desc->action)) in irq_domain_pop_irq()
1644 return -EBUSY; in irq_domain_pop_irq()
1647 return -EINVAL; in irq_domain_pop_irq()
1650 return -EINVAL; in irq_domain_pop_irq()
1656 return -EINVAL; in irq_domain_pop_irq()
1658 if (WARN_ON(root_irq_data->domain != domain)) in irq_domain_pop_irq()
1659 return -EINVAL; in irq_domain_pop_irq()
1661 child_irq_data = root_irq_data->parent_data; in irq_domain_pop_irq()
1663 return -EINVAL; in irq_domain_pop_irq()
1667 root_irq_data->parent_data = NULL; in irq_domain_pop_irq()
1669 irq_domain_clear_mapping(domain, root_irq_data->hwirq); in irq_domain_pop_irq()
1686 * irq_domain_free_irqs - Free IRQ number and associated data structures
1695 if (WARN(!data || !data->domain || !data->domain->ops->free, in irq_domain_free_irqs()
1702 irq_domain_free_irqs_hierarchy(data->domain, virq, nr_irqs); in irq_domain_free_irqs()
1710 * irq_domain_alloc_irqs_parent - Allocate interrupts from parent domain
1720 if (!domain->parent) in irq_domain_alloc_irqs_parent()
1721 return -ENOSYS; in irq_domain_alloc_irqs_parent()
1723 return irq_domain_alloc_irqs_hierarchy(domain->parent, irq_base, in irq_domain_alloc_irqs_parent()
1729 * irq_domain_free_irqs_parent - Free interrupts from parent domain
1737 if (!domain->parent) in irq_domain_free_irqs_parent()
1740 irq_domain_free_irqs_hierarchy(domain->parent, irq_base, nr_irqs); in irq_domain_free_irqs_parent()
1746 if (irq_data && irq_data->domain) { in __irq_domain_deactivate_irq()
1747 struct irq_domain *domain = irq_data->domain; in __irq_domain_deactivate_irq()
1749 if (domain->ops->deactivate) in __irq_domain_deactivate_irq()
1750 domain->ops->deactivate(domain, irq_data); in __irq_domain_deactivate_irq()
1751 if (irq_data->parent_data) in __irq_domain_deactivate_irq()
1752 __irq_domain_deactivate_irq(irq_data->parent_data); in __irq_domain_deactivate_irq()
1760 if (irqd && irqd->domain) { in __irq_domain_activate_irq()
1761 struct irq_domain *domain = irqd->domain; in __irq_domain_activate_irq()
1763 if (irqd->parent_data) in __irq_domain_activate_irq()
1764 ret = __irq_domain_activate_irq(irqd->parent_data, in __irq_domain_activate_irq()
1766 if (!ret && domain->ops->activate) { in __irq_domain_activate_irq()
1767 ret = domain->ops->activate(domain, irqd, reserve); in __irq_domain_activate_irq()
1769 if (ret && irqd->parent_data) in __irq_domain_activate_irq()
1770 __irq_domain_deactivate_irq(irqd->parent_data); in __irq_domain_activate_irq()
1777 * irq_domain_activate_irq - Call domain_ops->activate recursively to activate
1782 * This is the second step to call domain_ops->activate to program interrupt
1797 * irq_domain_deactivate_irq - Call domain_ops->deactivate recursively to
1801 * It calls domain_ops->deactivate to program interrupt controllers to disable
1815 if (domain->ops->alloc) in irq_domain_check_hierarchy()
1816 domain->flags |= IRQ_DOMAIN_FLAG_HIERARCHY; in irq_domain_check_hierarchy()
1820 * irq_domain_hierarchical_is_msi_remap - Check if the domain or any
1821 * parent has MSI remapping support
1826 for (; domain; domain = domain->parent) { in irq_domain_hierarchical_is_msi_remap()
1834 * irq_domain_get_irq_data - Get irq_data associated with @virq and @domain
1843 return (irq_data && irq_data->domain == domain) ? irq_data : NULL; in irq_domain_get_irq_data()
1848 * irq_domain_set_info - Set the complete data for a @virq in @domain
1879 seq_printf(m, "%*sname: %s\n", ind, "", d->name); in irq_domain_debug_show_one()
1880 seq_printf(m, "%*ssize: %u\n", ind + 1, "", d->revmap_size); in irq_domain_debug_show_one()
1881 seq_printf(m, "%*smapped: %u\n", ind + 1, "", d->mapcount); in irq_domain_debug_show_one()
1882 seq_printf(m, "%*sflags: 0x%08x\n", ind +1 , "", d->flags); in irq_domain_debug_show_one()
1883 if (d->ops && d->ops->debug_show) in irq_domain_debug_show_one()
1884 d->ops->debug_show(m, d, NULL, ind + 1); in irq_domain_debug_show_one()
1886 if (!d->parent) in irq_domain_debug_show_one()
1888 seq_printf(m, "%*sparent: %s\n", ind + 1, "", d->parent->name); in irq_domain_debug_show_one()
1889 irq_domain_debug_show_one(m, d->parent, ind + 4); in irq_domain_debug_show_one()
1895 struct irq_domain *d = m->private; in irq_domain_debug_show()
1910 if (!d->name || !domain_dir) in debugfs_add_domain_dir()
1912 debugfs_create_file(d->name, 0444, domain_dir, d, in debugfs_add_domain_dir()
1918 debugfs_remove(debugfs_lookup(d->name, domain_dir)); in debugfs_remove_domain_dir()