Lines Matching full:domain
14 * Interrupt controller "domain" data structure. This could be defined as a
15 * irq domain controller. That is, it handles the mapping between hardware
16 * and virtual interrupt numbers for a given interrupt domain. The domain
18 * (though a domain can cover more than one PIC if they have a flat number
19 * model). It's the domain callbacks that are responsible for setting the
23 * identify the domain. In some cases, and in order to preserve source
122 * @name: Name of interrupt domain
128 * @mutex: Domain lock, hierarchical domains use root domain's lock
129 * @root: Pointer to root domain, or containing structure if non-hierarchical
141 * purposes related to the irq domain.
143 * @msi_parent_ops: Pointer to MSI parent domain methods for per device domain init
145 * Revmap data, used internally by the irq domain code:
180 /* Irq domain flags */
182 /* Irq domain is hierarchical */
185 /* Irq domain name was allocated in __irq_domain_add() */
188 /* Irq domain is an IPI domain with virq per cpu */
191 /* Irq domain is an IPI domain with single virq */
194 /* Irq domain implements MSIs */
198 * Irq domain implements isolated MSI, see msi_device_has_isolated_msi()
202 /* Irq domain doesn't translate anything */
205 /* Irq domain is a MSI parent domain */
208 /* Irq domain is a MSI device domain */
301 extern void irq_domain_update_bus_token(struct irq_domain *domain,
344 * @size: Number of interrupts in the domain.
345 * @ops: map/unmap domain callbacks
392 extern int irq_domain_associate(struct irq_domain *domain, unsigned int irq,
394 extern void irq_domain_associate_many(struct irq_domain *domain,
410 extern struct irq_desc *__irq_resolve_mapping(struct irq_domain *domain,
414 static inline struct irq_desc *irq_resolve_mapping(struct irq_domain *domain, in irq_resolve_mapping() argument
417 return __irq_resolve_mapping(domain, hwirq, NULL); in irq_resolve_mapping()
422 * @domain: domain owning this hardware interrupt
423 * @hwirq: hardware irq number in that domain space
425 static inline unsigned int irq_find_mapping(struct irq_domain *domain, in irq_find_mapping() argument
430 if (__irq_resolve_mapping(domain, hwirq, &irq)) in irq_find_mapping()
436 static inline unsigned int irq_linear_revmap(struct irq_domain *domain, in irq_linear_revmap() argument
439 return irq_find_mapping(domain, hwirq); in irq_linear_revmap()
466 int irq_reserve_ipi(struct irq_domain *domain, const struct cpumask *dest);
470 extern struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain,
472 extern void irq_domain_set_info(struct irq_domain *domain, unsigned int virq,
496 extern int __irq_domain_alloc_irqs(struct irq_domain *domain, int irq_base,
504 static inline int irq_domain_alloc_irqs(struct irq_domain *domain, in irq_domain_alloc_irqs() argument
507 return __irq_domain_alloc_irqs(domain, -1, nr_irqs, node, arg, false, in irq_domain_alloc_irqs()
511 extern int irq_domain_alloc_irqs_hierarchy(struct irq_domain *domain,
514 extern int irq_domain_set_hwirq_and_chip(struct irq_domain *domain,
519 extern void irq_domain_free_irqs_common(struct irq_domain *domain,
522 extern void irq_domain_free_irqs_top(struct irq_domain *domain,
525 extern int irq_domain_push_irq(struct irq_domain *domain, int virq, void *arg);
526 extern int irq_domain_pop_irq(struct irq_domain *domain, int virq);
528 extern int irq_domain_alloc_irqs_parent(struct irq_domain *domain,
532 extern void irq_domain_free_irqs_parent(struct irq_domain *domain,
536 extern int irq_domain_disconnect_hierarchy(struct irq_domain *domain,
539 static inline bool irq_domain_is_hierarchy(struct irq_domain *domain) in irq_domain_is_hierarchy() argument
541 return domain->flags & IRQ_DOMAIN_FLAG_HIERARCHY; in irq_domain_is_hierarchy()
544 static inline bool irq_domain_is_ipi(struct irq_domain *domain) in irq_domain_is_ipi() argument
546 return domain->flags & in irq_domain_is_ipi()
550 static inline bool irq_domain_is_ipi_per_cpu(struct irq_domain *domain) in irq_domain_is_ipi_per_cpu() argument
552 return domain->flags & IRQ_DOMAIN_FLAG_IPI_PER_CPU; in irq_domain_is_ipi_per_cpu()
555 static inline bool irq_domain_is_ipi_single(struct irq_domain *domain) in irq_domain_is_ipi_single() argument
557 return domain->flags & IRQ_DOMAIN_FLAG_IPI_SINGLE; in irq_domain_is_ipi_single()
560 static inline bool irq_domain_is_msi(struct irq_domain *domain) in irq_domain_is_msi() argument
562 return domain->flags & IRQ_DOMAIN_FLAG_MSI; in irq_domain_is_msi()
565 static inline bool irq_domain_is_msi_parent(struct irq_domain *domain) in irq_domain_is_msi_parent() argument
567 return domain->flags & IRQ_DOMAIN_FLAG_MSI_PARENT; in irq_domain_is_msi_parent()
570 static inline bool irq_domain_is_msi_device(struct irq_domain *domain) in irq_domain_is_msi_device() argument
572 return domain->flags & IRQ_DOMAIN_FLAG_MSI_DEVICE; in irq_domain_is_msi_device()
576 static inline int irq_domain_alloc_irqs(struct irq_domain *domain, in irq_domain_alloc_irqs() argument
585 static inline bool irq_domain_is_hierarchy(struct irq_domain *domain) in irq_domain_is_hierarchy() argument
590 static inline bool irq_domain_is_ipi(struct irq_domain *domain) in irq_domain_is_ipi() argument
595 static inline bool irq_domain_is_ipi_per_cpu(struct irq_domain *domain) in irq_domain_is_ipi_per_cpu() argument
600 static inline bool irq_domain_is_ipi_single(struct irq_domain *domain) in irq_domain_is_ipi_single() argument
605 static inline bool irq_domain_is_msi(struct irq_domain *domain) in irq_domain_is_msi() argument
610 static inline bool irq_domain_is_msi_parent(struct irq_domain *domain) in irq_domain_is_msi_parent() argument
615 static inline bool irq_domain_is_msi_device(struct irq_domain *domain) in irq_domain_is_msi_device() argument