/openbmc/linux/include/linux/ |
H A D | irqdomain.h | 42 struct irq_domain; 89 int (*match)(struct irq_domain *d, struct device_node *node, 91 int (*select)(struct irq_domain *d, struct irq_fwspec *fwspec, 93 int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw); 94 void (*unmap)(struct irq_domain *d, unsigned int virq); 95 int (*xlate)(struct irq_domain *d, struct device_node *node, 100 int (*alloc)(struct irq_domain *d, unsigned int virq, 102 void (*free)(struct irq_domain *d, unsigned int virq, 104 int (*activate)(struct irq_domain *d, struct irq_data *irqd, bool reserve); 105 void (*deactivate)(struct irq_domain *d, struct irq_data *irq_data); [all …]
|
H A D | msi.h | 86 struct irq_domain; 228 struct irq_domain *domain; 412 struct irq_domain; 451 int (*msi_init)(struct irq_domain *domain, 455 void (*msi_free)(struct irq_domain *domain, 458 int (*msi_prepare)(struct irq_domain *domain, 461 void (*prepare_desc)(struct irq_domain *domain, msi_alloc_info_t *arg, 465 int (*domain_alloc_irqs)(struct irq_domain *domain, 467 void (*domain_free_irqs)(struct irq_domain *domain, 469 void (*msi_post_free)(struct irq_domain *domain, [all …]
|
/openbmc/linux/Documentation/translations/zh_CN/core-api/irq/ |
H A D | irq-domain.rst | 13 irq_domain 中断号映射库 35 irq_domain 库在 irq_alloc_desc*() API 的基础上增加了 hwirq 和 IRQ 号码 37 irq_domain来管理映射。 39 irq_domain还实现了从抽象的irq_fwspec结构体到hwirq号的转换(到目前为止是 42 irq_domain的用法 45 中断控制器驱动程序通过以下方式创建并注册一个irq_domain。调用 47 同的分配器函数,后面会详细介绍)。 函数成功后会返回一个指向irq_domain的指针。 50 在大多数情况下,irq_domain在开始时是空的,没有任何hwirq和IRQ号之间的映射。 51 通过调用irq_create_mapping()将映射添加到irq_domain中,该函数接受 52 irq_domain和一个hwirq号作为参数。 如果hwirq的映射还不存在,那么它将分配 [all …]
|
/openbmc/linux/kernel/irq/ |
H A D | irqdomain.c | 26 static struct irq_domain *irq_default_domain; 28 static int irq_domain_alloc_irqs_locked(struct irq_domain *domain, int irq_base, 31 static void irq_domain_check_hierarchy(struct irq_domain *domain); 41 static void debugfs_add_domain_dir(struct irq_domain *d); 42 static void debugfs_remove_domain_dir(struct irq_domain *d); 44 static inline void debugfs_add_domain_dir(struct irq_domain *d) { } in debugfs_add_domain_dir() 45 static inline void debugfs_remove_domain_dir(struct irq_domain *d) { } in debugfs_remove_domain_dir() 129 static struct irq_domain *__irq_domain_create(struct fwnode_handle *fwnode, in __irq_domain_create() 137 struct irq_domain *domain; in __irq_domain_create() 229 static void __irq_domain_publish(struct irq_domain *domain) in __irq_domain_publish() [all …]
|
H A D | irq_sim.c | 18 struct irq_domain *domain; 117 static int irq_sim_domain_map(struct irq_domain *domain, in irq_sim_domain_map() 136 static void irq_sim_domain_unmap(struct irq_domain *domain, unsigned int virq) in irq_sim_domain_unmap() 164 struct irq_domain *irq_domain_create_sim(struct fwnode_handle *fwnode, in irq_domain_create_sim() 203 void irq_domain_remove_sim(struct irq_domain *domain) in irq_domain_remove_sim() 217 struct irq_domain *domain = data; in devm_irq_domain_remove_sim() 233 struct irq_domain *devm_irq_domain_create_sim(struct device *dev, in devm_irq_domain_create_sim() 237 struct irq_domain *domain; in devm_irq_domain_create_sim()
|
H A D | msi.c | 584 static struct irq_domain *msi_get_device_domain(struct device *dev, unsigned int domid) in msi_get_device_domain() 586 struct irq_domain *domain; in msi_get_device_domain() 606 struct irq_domain *domain; in msi_domain_get_hwsize() 623 static void msi_check_level(struct irq_domain *domain, struct msi_msg *msg) in msi_check_level() 664 static int msi_domain_activate(struct irq_domain *domain, in msi_domain_activate() 675 static void msi_domain_deactivate(struct irq_domain *domain, in msi_domain_deactivate() 684 static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, in msi_domain_alloc() 716 static void msi_domain_free(struct irq_domain *domain, unsigned int virq, in msi_domain_free() 742 static int msi_domain_ops_prepare(struct irq_domain *domain, struct device *dev, in msi_domain_ops_prepare() 755 static int msi_domain_ops_init(struct irq_domain *domain, in msi_domain_ops_init() [all …]
|
/openbmc/linux/arch/powerpc/platforms/embedded6xx/ |
H A D | hlwd-pic.c | 93 static struct irq_domain *hlwd_irq_host; 95 static int hlwd_pic_map(struct irq_domain *h, unsigned int virq, in hlwd_pic_map() 108 static unsigned int __hlwd_pic_get_irq(struct irq_domain *h) in __hlwd_pic_get_irq() 124 struct irq_domain *irq_domain = irq_desc_get_handler_data(desc); in hlwd_pic_irq_cascade() local 131 hwirq = __hlwd_pic_get_irq(irq_domain); in hlwd_pic_irq_cascade() 133 generic_handle_domain_irq(irq_domain, hwirq); in hlwd_pic_irq_cascade() 156 static struct irq_domain *__init hlwd_pic_init(struct device_node *np) in hlwd_pic_init() 158 struct irq_domain *irq_domain; in hlwd_pic_init() local 178 irq_domain = irq_domain_add_linear(np, HLWD_NR_IRQS, in hlwd_pic_init() 180 if (!irq_domain) { in hlwd_pic_init() [all …]
|
H A D | flipper-pic.c | 96 static struct irq_domain *flipper_irq_host; 98 static int flipper_pic_map(struct irq_domain *h, unsigned int virq, in flipper_pic_map() 123 static struct irq_domain * __init flipper_pic_init(struct device_node *np) in flipper_pic_init() 126 struct irq_domain *irq_domain = NULL; in flipper_pic_init() local 152 irq_domain = irq_domain_add_linear(np, FLIPPER_NR_IRQS, in flipper_pic_init() 154 if (!irq_domain) { in flipper_pic_init() 160 return irq_domain; in flipper_pic_init()
|
/openbmc/linux/arch/x86/include/asm/ |
H A D | irqdomain.h | 16 extern struct irq_domain *x86_vector_domain; 43 extern int mp_irqdomain_alloc(struct irq_domain *domain, unsigned int virq, 45 extern void mp_irqdomain_free(struct irq_domain *domain, unsigned int virq, 47 extern int mp_irqdomain_activate(struct irq_domain *domain, 49 extern void mp_irqdomain_deactivate(struct irq_domain *domain, 51 extern int mp_irqdomain_ioapic_idx(struct irq_domain *domain); 56 struct irq_domain *native_create_pci_msi_domain(void); 57 extern struct irq_domain *x86_pci_msi_default_domain;
|
/openbmc/linux/drivers/irqchip/ |
H A D | irq-loongarch-cpu.c | 16 static struct irq_domain *irq_domain; variable 79 generic_handle_domain_irq(irq_domain, hwirq - 1); in handle_cpu_irq() 83 static int loongarch_cpu_intc_map(struct irq_domain *d, unsigned int irq, in loongarch_cpu_intc_map() 103 irq_domain = irq_domain_create_linear(cpuintc_handle, EXCCODE_INT_NUM, in cpuintc_of_init() 105 if (!irq_domain) in cpuintc_of_init() 120 return liointc_acpi_init(irq_domain, liointc_entry); in liointc_parse_madt() 128 return eiointc_acpi_init(irq_domain, eiointc_entry); in eiointc_parse_madt() 151 if (irq_domain) in cpuintc_acpi_init() 159 irq_domain = irq_domain_create_linear(cpuintc_handle, EXCCODE_INT_NUM, in cpuintc_acpi_init() 162 if (!irq_domain) in cpuintc_acpi_init()
|
H A D | irq-mips-cpu.c | 37 static struct irq_domain *irq_domain; variable 38 static struct irq_domain *ipi_domain; 139 struct irq_domain *d; in plat_irq_dispatch() 145 d = irq_domain; in plat_irq_dispatch() 152 static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq, in mips_cpu_intc_map() 183 static int mips_cpu_ipi_alloc(struct irq_domain *domain, unsigned int virq, in mips_cpu_ipi_alloc() 217 static int mips_cpu_ipi_match(struct irq_domain *d, struct device_node *node, in mips_cpu_ipi_match() 241 ipi_domain = irq_domain_add_hierarchy(irq_domain, in mips_cpu_register_ipi_domain() 263 irq_domain = irq_domain_add_legacy(of_node, 8, MIPS_CPU_IRQ_BASE, 0, in __mips_cpu_irq_init() 266 if (!irq_domain) in __mips_cpu_irq_init()
|
H A D | irq-aspeed-i2c-ic.c | 24 struct irq_domain *irq_domain; member 41 generic_handle_domain_irq(i2c_ic->irq_domain, bit); in aspeed_i2c_ic_irq_handler() 50 static int aspeed_i2c_ic_map_irq_domain(struct irq_domain *domain, in aspeed_i2c_ic_map_irq_domain() 85 i2c_ic->irq_domain = irq_domain_add_linear(node, ASPEED_I2C_IC_NUM_BUS, in aspeed_i2c_ic_of_init() 88 if (!i2c_ic->irq_domain) { in aspeed_i2c_ic_of_init() 93 i2c_ic->irq_domain->name = "aspeed-i2c-domain"; in aspeed_i2c_ic_of_init()
|
H A D | irq-renesas-irqc.c | 52 struct irq_domain *irq_domain; member 118 generic_handle_domain_irq(p->irq_domain, i->hw_irq); in irqc_irq_handler() 171 p->irq_domain = irq_domain_add_linear(dev->of_node, p->number_of_irqs, in irqc_probe() 173 if (!p->irq_domain) { in irqc_probe() 179 ret = irq_alloc_domain_generic_chips(p->irq_domain, p->number_of_irqs, in irqc_probe() 187 p->gc = irq_get_domain_generic_chip(p->irq_domain, 0); in irqc_probe() 197 irq_domain_set_pm_device(p->irq_domain, dev); in irqc_probe() 214 irq_domain_remove(p->irq_domain); in irqc_probe() 225 irq_domain_remove(p->irq_domain); in irqc_remove()
|
H A D | irq-gic-v3-mbi.c | 41 static int mbi_irq_gic_domain_alloc(struct irq_domain *domain, in mbi_irq_gic_domain_alloc() 84 static int mbi_irq_domain_alloc(struct irq_domain *domain, unsigned int virq, in mbi_irq_domain_alloc() 130 static void mbi_irq_domain_free(struct irq_domain *domain, in mbi_irq_domain_free() 182 static int mbi_allocate_pci_domain(struct irq_domain *nexus_domain, in mbi_allocate_pci_domain() 183 struct irq_domain **pci_domain) in mbi_allocate_pci_domain() 194 static int mbi_allocate_pci_domain(struct irq_domain *nexus_domain, in mbi_allocate_pci_domain() 195 struct irq_domain **pci_domain) in mbi_allocate_pci_domain() 231 static int mbi_allocate_domains(struct irq_domain *parent) in mbi_allocate_domains() 233 struct irq_domain *nexus_domain, *pci_domain, *plat_domain; in mbi_allocate_domains() 261 int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent) in mbi_init()
|
H A D | irq-atmel-aic5.c | 68 static struct irq_domain *aic5_domain; 88 struct irq_domain *domain = d->domain; in aic5_mask() 105 struct irq_domain *domain = d->domain; in aic5_unmask() 122 struct irq_domain *domain = d->domain; in aic5_retrigger() 136 struct irq_domain *domain = d->domain; in aic5_set_type() 157 struct irq_domain *domain = d->domain; in aic5_suspend() 187 struct irq_domain *domain = d->domain; in aic5_resume() 223 struct irq_domain *domain = d->domain; in aic5_pm_shutdown() 243 static void __init aic5_hw_init(struct irq_domain *domain) in aic5_hw_init() 274 static int aic5_irq_domain_xlate(struct irq_domain *d, in aic5_irq_domain_xlate() [all …]
|
/openbmc/linux/arch/loongarch/include/asm/ |
H A D | irq.h | 51 struct irq_domain *parent; 91 int liointc_acpi_init(struct irq_domain *parent, 93 int eiointc_acpi_init(struct irq_domain *parent, 96 int htvec_acpi_init(struct irq_domain *parent, 98 int pch_lpc_acpi_init(struct irq_domain *parent, 100 int pch_msi_acpi_init(struct irq_domain *parent, 102 int pch_pic_acpi_init(struct irq_domain *parent,
|
/openbmc/linux/arch/x86/kernel/apic/ |
H A D | msi.c | 24 struct irq_domain *x86_pci_msi_default_domain __ro_after_init; 152 struct irq_domain *domain = dev_get_msi_domain(&dev->dev); in pci_dev_has_default_msi_parent_domain() 175 static int x86_msi_prepare(struct irq_domain *domain, struct device *dev, in x86_msi_prepare() 206 static bool x86_init_dev_msi_info(struct device *dev, struct irq_domain *domain, in x86_init_dev_msi_info() 207 struct irq_domain *real_parent, struct msi_domain_info *info) in x86_init_dev_msi_info() 268 struct irq_domain * __init native_create_pci_msi_domain(void) in native_create_pci_msi_domain() 284 int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, in pci_msi_prepare() 327 static int dmar_msi_init(struct irq_domain *domain, in dmar_msi_init() 347 static struct irq_domain *dmar_get_irq_domain(void) in dmar_get_irq_domain() 349 static struct irq_domain *dmar_domain; in dmar_get_irq_domain() [all …]
|
/openbmc/linux/drivers/ssb/ |
H A D | driver_gpio.c | 31 return irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_to_irq() 135 generic_handle_domain_irq_safe(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_handler() 151 bus->irq_domain = irq_domain_add_linear(NULL, chip->ngpio, in ssb_gpio_irq_chipco_domain_init() 153 if (!bus->irq_domain) { in ssb_gpio_irq_chipco_domain_init() 158 int irq = irq_create_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_init() 178 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_init() 182 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_chipco_domain_init() 199 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_exit() 203 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_chipco_domain_exit() 334 generic_handle_domain_irq_safe(bus->irq_domain, gpio); in ssb_gpio_irq_extif_handler() [all …]
|
/openbmc/linux/Documentation/core-api/irq/ |
H A D | irq-domain.rst | 2 The irq_domain interrupt number mapping library 32 The irq_domain library adds mapping between hwirq and IRQ numbers on 33 top of the irq_alloc_desc*() API. An irq_domain to manage mapping is 37 irq_domain also implements translation from an abstract irq_fwspec 41 irq_domain usage 44 An interrupt controller driver creates and registers an irq_domain by 47 The function will return a pointer to the irq_domain on success. The caller 50 In most cases, the irq_domain will begin empty without any mappings 51 between hwirq and IRQ numbers. Mappings are added to the irq_domain 52 by calling irq_create_mapping() which accepts the irq_domain and a [all …]
|
/openbmc/linux/drivers/gpio/ |
H A D | gpio-xgene-sb.c | 52 struct irq_domain *irq_domain; member 129 static int xgene_gpio_sb_domain_activate(struct irq_domain *d, in xgene_gpio_sb_domain_activate() 150 static void xgene_gpio_sb_domain_deactivate(struct irq_domain *d, in xgene_gpio_sb_domain_deactivate() 161 static int xgene_gpio_sb_domain_translate(struct irq_domain *d, in xgene_gpio_sb_domain_translate() 176 static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, in xgene_gpio_sb_domain_alloc() 222 struct irq_domain *parent_domain = NULL; in xgene_gpio_sb_probe() 275 priv->irq_domain = irq_domain_create_hierarchy(parent_domain, in xgene_gpio_sb_probe() 278 if (!priv->irq_domain) in xgene_gpio_sb_probe() 281 priv->gc.irq.domain = priv->irq_domain; in xgene_gpio_sb_probe() 287 irq_domain_remove(priv->irq_domain); in xgene_gpio_sb_probe() [all …]
|
/openbmc/linux/drivers/platform/x86/intel/ |
H A D | crystal_cove_charger.c | 26 struct irq_domain *irq_domain; member 83 irq_domain_remove(charger->irq_domain); in crystal_cove_charger_rm_irq_domain() 103 charger->irq_domain = irq_domain_create_linear(dev_fwnode(pdev->dev.parent), 1, in crystal_cove_charger_probe() 105 if (!charger->irq_domain) in crystal_cove_charger_probe() 109 irq_domain_update_bus_token(charger->irq_domain, DOMAIN_BUS_WAKEUP); in crystal_cove_charger_probe() 115 charger->charger_irq = irq_create_mapping(charger->irq_domain, 0); in crystal_cove_charger_probe()
|
/openbmc/linux/arch/powerpc/platforms/cell/ |
H A D | axon_msi.c | 68 struct irq_domain *irq_domain; member 153 struct irq_domain *irq_domain; in find_msi_translator() local 185 irq_domain = irq_find_host(dn); in find_msi_translator() 186 if (!irq_domain) { in find_msi_translator() 192 msic = irq_domain->host_data; in find_msi_translator() 268 virq = irq_create_direct_mapping(msic->irq_domain); in axon_msi_setup_msi_irqs() 304 static int msic_host_map(struct irq_domain *h, unsigned int virq, in msic_host_map() 323 irq_domain_get_of_node(msic->irq_domain)); in axon_msi_shutdown() 379 msic->irq_domain = irq_domain_add_nomap(dn, 65536, &msic_host_ops, msic); in axon_msi_probe() 380 if (!msic->irq_domain) { in axon_msi_probe()
|
/openbmc/linux/drivers/pci/msi/ |
H A D | irqdomain.c | 13 struct irq_domain *domain; in pci_msi_setup_msi_irqs() 24 struct irq_domain *domain; in pci_msi_teardown_msi_irqs() 114 struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode, in pci_msi_create_irq_domain() 116 struct irq_domain *parent) in pci_msi_create_irq_domain() 205 static void pci_msix_prepare_desc(struct irq_domain *domain, msi_alloc_info_t *arg, in pci_msix_prepare_desc() 242 struct irq_domain *domain = dev_get_msi_domain(&pdev->dev); in pci_create_device_domain() 328 struct irq_domain *domain; in pci_msi_domain_supports() 403 struct irq_domain *domain = dev_get_msi_domain(&pdev->dev); in pci_create_ims_domain() 454 u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev) in pci_msi_domain_get_msi_rid() 477 struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev) in pci_msi_get_device_domain() [all …]
|
/openbmc/linux/arch/x86/platform/uv/ |
H A D | uv_irq.c | 75 static int uv_domain_alloc(struct irq_domain *domain, unsigned int virq, in uv_domain_alloc() 109 static void uv_domain_free(struct irq_domain *domain, unsigned int virq, in uv_domain_free() 125 static int uv_domain_activate(struct irq_domain *domain, in uv_domain_activate() 136 static void uv_domain_deactivate(struct irq_domain *domain, in uv_domain_deactivate() 155 static struct irq_domain *uv_get_irq_domain(void) in uv_get_irq_domain() 157 static struct irq_domain *uv_domain; in uv_get_irq_domain() 188 struct irq_domain *domain = uv_get_irq_domain(); in uv_setup_irq()
|
/openbmc/linux/drivers/base/ |
H A D | platform-msi.c | 52 static int platform_msi_init(struct irq_domain *domain, in platform_msi_init() 122 struct irq_domain *platform_msi_create_irq_domain(struct fwnode_handle *fwnode, in platform_msi_create_irq_domain() 124 struct irq_domain *parent) in platform_msi_create_irq_domain() 126 struct irq_domain *domain; in platform_msi_create_irq_domain() 243 void *platform_msi_get_host_data(struct irq_domain *domain) in platform_msi_get_host_data() 268 struct irq_domain * 277 struct irq_domain *domain; in __platform_msi_create_device_domain() 321 void platform_msi_device_domain_free(struct irq_domain *domain, unsigned int virq, in platform_msi_device_domain_free() 345 int platform_msi_device_domain_alloc(struct irq_domain *domain, unsigned int virq, in platform_msi_device_domain_alloc()
|