| /linux-6.15/include/linux/ |
| H A D | irqdomain.h | 42 struct irq_domain; 169 struct irq_domain { struct 177 struct irq_domain *root; argument 186 struct irq_domain *parent; argument 395 struct irq_domain *d; in irq_find_host() 432 struct irq_domain *d; in irq_domain_add_linear() 451 struct irq_domain *d; in irq_domain_add_nomap() 470 struct irq_domain *d; in irq_domain_add_tree() 488 struct irq_domain *d; in irq_domain_create_linear() 504 struct irq_domain *d; in irq_domain_create_tree() [all …]
|
| H A D | msi.h | 80 struct irq_domain; 227 struct irq_domain *domain; 409 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, 469 void (*msi_post_free)(struct irq_domain *domain, 613 struct irq_domain *msi_parent_domain, 618 struct irq_domain *msi_parent_domain, 626 struct irq_domain *parent); [all …]
|
| H A D | irq_sim.h | 20 int (*irq_sim_irq_requested)(struct irq_domain *domain, 22 void (*irq_sim_irq_released)(struct irq_domain *domain, 26 struct irq_domain *irq_domain_create_sim(struct fwnode_handle *fwnode, 28 struct irq_domain *devm_irq_domain_create_sim(struct device *dev, 31 struct irq_domain *irq_domain_create_sim_full(struct fwnode_handle *fwnode, 35 struct irq_domain * 41 void irq_domain_remove_sim(struct irq_domain *domain);
|
| /linux-6.15/Documentation/translations/zh_CN/core-api/irq/ |
| H A D | irq-domain.rst | 13 irq_domain 中断号映射库 37 irq_domain来管理映射。 42 irq_domain的用法 75 irq_domain映射的类型 194 个irq_domain数据结构,并将这些irq_domain组织成层次结构。 196 在建立irq_domain层次结构时,靠近设备的irq_domain为子域,靠近CPU的 200 CPU Vector irq_domain (root irq_domain to manage CPU vectors) 217 1) 一个新的字段 'parent' 被添加到irq_domain结构中;它用于维护irq_domain的层次信息。 219 匹配irq_domain层次结构。irq_data用于存储irq_domain指针和硬件irq号。 222 在支持分层irq_domain和分层irq_data准备就绪后,为每个中断控制器建立一个irq_domain结 [all …]
|
| /linux-6.15/kernel/irq/ |
| H A D | irqdomain.c | 227 struct irq_domain *domain; in __irq_domain_create() 311 struct irq_domain *domain; in __irq_domain_instantiate() 540 struct irq_domain *h, *found = NULL; in irq_find_matching_fwspec() 898 struct irq_domain *domain; in irq_create_fwspec_mapping() 1017 struct irq_domain *domain; in irq_dispose_mapping() 1270 struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent, in irq_domain_create_hierarchy() 1286 struct irq_domain *d; in irq_domain_create_hierarchy() 1451 struct irq_domain *parent; in irq_domain_alloc_irq_data() 1874 struct irq_domain *domain; in irq_domain_free_irqs() 2095 struct irq_domain *d = m->private; in irq_domain_debug_show() [all …]
|
| H A D | irq_sim.c | 18 struct irq_domain *domain; 145 static int irq_sim_domain_map(struct irq_domain *domain, in irq_sim_domain_map() 164 static void irq_sim_domain_unmap(struct irq_domain *domain, unsigned int virq) in irq_sim_domain_unmap() 192 struct irq_domain *irq_domain_create_sim(struct fwnode_handle *fwnode, in irq_domain_create_sim() 199 struct irq_domain *irq_domain_create_sim_full(struct fwnode_handle *fwnode, in irq_domain_create_sim_full() 238 void irq_domain_remove_sim(struct irq_domain *domain) in irq_domain_remove_sim() 252 struct irq_domain *domain = data; in devm_irq_domain_remove_sim() 268 struct irq_domain *devm_irq_domain_create_sim(struct device *dev, in devm_irq_domain_create_sim() 277 struct irq_domain * 284 struct irq_domain *domain; in devm_irq_domain_create_sim_full()
|
| H A D | msi.c | 603 struct irq_domain *domain; in msi_get_device_domain() 623 struct irq_domain *domain; in msi_domain_get_hwsize() 861 struct irq_domain *parent) in __msi_create_irq_domain() 863 struct irq_domain *domain; in __msi_create_irq_domain() 902 struct irq_domain *parent) in msi_create_irq_domain() 935 struct irq_domain *msi_parent_domain, in msi_parent_init_dev_msi_info() 1080 struct irq_domain *domain; in msi_remove_device_irq_domain() 1113 struct irq_domain *domain; in msi_match_device_irq_domain() 1322 struct irq_domain *domain; in __msi_domain_alloc_locked() 1435 struct irq_domain *domain; in __msi_domain_alloc_irq_at() [all …]
|
| /linux-6.15/drivers/irqchip/ |
| H A D | irq-loongson.h | 11 int liointc_acpi_init(struct irq_domain *parent, 13 int eiointc_acpi_init(struct irq_domain *parent, 15 int avecintc_acpi_init(struct irq_domain *parent); 17 int htvec_acpi_init(struct irq_domain *parent, 19 int pch_lpc_acpi_init(struct irq_domain *parent, 21 int pch_pic_acpi_init(struct irq_domain *parent, 23 int pch_msi_acpi_init(struct irq_domain *parent, 25 int pch_msi_acpi_init_avec(struct irq_domain *parent);
|
| H A D | irq-loongarch-cpu.c | 18 static struct irq_domain *irq_domain; variable 81 generic_handle_domain_irq(irq_domain, hwirq - 1); in handle_cpu_irq() 85 static int loongarch_cpu_intc_map(struct irq_domain *d, unsigned int irq, in loongarch_cpu_intc_map() 105 irq_domain = irq_domain_create_linear(cpuintc_handle, EXCCODE_INT_NUM, in cpuintc_of_init() 107 if (!irq_domain) in cpuintc_of_init() 122 return liointc_acpi_init(irq_domain, liointc_entry); in liointc_parse_madt() 130 return eiointc_acpi_init(irq_domain, eiointc_entry); in eiointc_parse_madt() 146 r = avecintc_acpi_init(irq_domain); in acpi_cascade_irqdomain_init() 156 if (irq_domain) in cpuintc_acpi_init() 164 irq_domain = irq_domain_create_linear(cpuintc_handle, EXCCODE_INT_NUM, in cpuintc_acpi_init() [all …]
|
| 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-loongson-pch-msi.c | 80 static int pch_msi_parent_domain_alloc(struct irq_domain *domain, in pch_msi_parent_domain_alloc() 92 static int pch_msi_middle_domain_alloc(struct irq_domain *domain, in pch_msi_middle_domain_alloc() 121 static void pch_msi_middle_domain_free(struct irq_domain *domain, in pch_msi_middle_domain_free() 157 struct irq_domain *parent, in pch_msi_init_domains() 160 struct irq_domain *middle_domain; in pch_msi_init_domains() 180 struct irq_domain *parent_domain, struct fwnode_handle *domain_handle) in pch_msi_init() 223 struct irq_domain *parent_domain; in pch_msi_of_init() 269 int __init pch_msi_acpi_init(struct irq_domain *parent, struct acpi_madt_msi_pic *acpi_pchmsi) in pch_msi_acpi_init() 283 int __init pch_msi_acpi_init_avec(struct irq_domain *parent) in pch_msi_acpi_init_avec()
|
| H A D | irq-aspeed-intc.c | 26 struct irq_domain *irq_domain; member 41 generic_handle_domain_irq(intc_ic->irq_domain, bit); in aspeed_intc_ic_irq_handler() 73 static int aspeed_intc_ic_map_irq_domain(struct irq_domain *domain, unsigned int irq, in aspeed_intc_ic_map_irq_domain() 105 intc_ic->irq_domain = irq_domain_add_linear(node, INTC_IRQS_PER_WORD, in aspeed_intc_ic_of_init() 107 if (!intc_ic->irq_domain) { in aspeed_intc_ic_of_init()
|
| /linux-6.15/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() 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() 186 return 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()
|
| /linux-6.15/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;
|
| /linux-6.15/drivers/misc/ |
| H A D | lan966x_pci.c | 27 struct irq_domain *irq_domain; member 31 static int pci_dev_irq_domain_map(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw) in pci_dev_irq_domain_map() 47 ret = generic_handle_domain_irq(intr_ctrl->irq_domain, 0); in pci_dev_irq_handler() 67 intr_ctrl->irq_domain = irq_domain_create_linear(fwnode, 1, &pci_dev_irq_domain_ops, in pci_dev_create_intr_ctrl() 69 if (!intr_ctrl->irq_domain) { in pci_dev_create_intr_ctrl() 92 irq_domain_remove(intr_ctrl->irq_domain); in pci_dev_create_intr_ctrl() 100 irq_dispose_mapping(irq_find_mapping(intr_ctrl->irq_domain, 0)); in pci_dev_remove_intr_ctrl() 101 irq_domain_remove(intr_ctrl->irq_domain); in pci_dev_remove_intr_ctrl()
|
| /linux-6.15/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() 205 static bool x86_init_dev_msi_info(struct device *dev, struct irq_domain *domain, in x86_init_dev_msi_info() 206 struct irq_domain *real_parent, struct msi_domain_info *info) in x86_init_dev_msi_info() 264 struct irq_domain * __init native_create_pci_msi_domain(void) in native_create_pci_msi_domain() 280 int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, in pci_msi_prepare() 323 static int dmar_msi_init(struct irq_domain *domain, in dmar_msi_init() 343 static struct irq_domain *dmar_get_irq_domain(void) in dmar_get_irq_domain() 345 static struct irq_domain *dmar_domain; in dmar_get_irq_domain() [all …]
|
| /linux-6.15/drivers/ssb/ |
| H A D | driver_gpio.c | 31 return irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_to_irq() 153 if (!bus->irq_domain) { 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() 352 if (!bus->irq_domain) { in ssb_gpio_irq_extif_domain_init() 376 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_extif_domain_init() 380 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_extif_domain_init() 396 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_extif_domain_exit() [all …]
|
| /linux-6.15/drivers/gpio/ |
| H A D | gpio-xgene-sb.c | 53 struct irq_domain *irq_domain; member 130 static int xgene_gpio_sb_domain_activate(struct irq_domain *d, in xgene_gpio_sb_domain_activate() 151 static void xgene_gpio_sb_domain_deactivate(struct irq_domain *d, in xgene_gpio_sb_domain_deactivate() 162 static int xgene_gpio_sb_domain_translate(struct irq_domain *d, in xgene_gpio_sb_domain_translate() 177 static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, in xgene_gpio_sb_domain_alloc() 223 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 …]
|
| /linux-6.15/Documentation/core-api/irq/ |
| H A D | irq-domain.rst | 2 The irq_domain interrupt number mapping library 41 irq_domain usage 82 Types of irq_domain mappings 233 When building irq_domain hierarchy, the irq_domain near to the device is 237 CPU Vector irq_domain (root irq_domain to manage CPU vectors) 243 IOAPIC irq_domain (manage IOAPIC delivery entries/pins) 245 There are four major interfaces to use hierarchy irq_domain: 256 Following changes are needed to support hierarchy irq_domain: 259 maintain irq_domain hierarchy information. 264 irq_domain operations. [all …]
|
| /linux-6.15/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()
|
| /linux-6.15/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() 107 static void uv_domain_free(struct irq_domain *domain, unsigned int virq, in uv_domain_free() 122 static int uv_domain_activate(struct irq_domain *domain, in uv_domain_activate() 133 static void uv_domain_deactivate(struct irq_domain *domain, in uv_domain_deactivate() 152 static struct irq_domain *uv_get_irq_domain(void) in uv_get_irq_domain() 154 static struct irq_domain *uv_domain; in uv_get_irq_domain() 185 struct irq_domain *domain = uv_get_irq_domain(); in uv_setup_irq()
|
| /linux-6.15/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() 225 static void pci_msix_prepare_desc(struct irq_domain *domain, msi_alloc_info_t *arg, in pci_msix_prepare_desc() 262 struct irq_domain *domain = dev_get_msi_domain(&pdev->dev); in pci_create_device_domain() 348 struct irq_domain *domain; in pci_msi_domain_supports() 415 u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev) in pci_msi_domain_get_msi_rid() 438 struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev) in pci_msi_get_device_domain() 440 struct irq_domain *dom; in pci_msi_get_device_domain()
|