/linux/include/linux/ |
A D | irqdomain.h | 41 struct irq_domain; 113 void (*unmap)(struct irq_domain *d, unsigned int virq); 119 int (*alloc)(struct irq_domain *d, unsigned int virq, 121 void (*free)(struct irq_domain *d, unsigned int virq, 162 struct irq_domain { struct 175 struct irq_domain *parent; argument 283 extern struct irq_domain *irq_get_default_host(void); 322 struct irq_domain *d; in irq_find_host() 454 int irq_domain_translate_twocell(struct irq_domain *d, 477 extern struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent, [all …]
|
A D | msi.h | 283 struct irq_domain; 331 int (*msi_init)(struct irq_domain *domain, 335 void (*msi_free)(struct irq_domain *domain, 338 int (*msi_check)(struct irq_domain *domain, 341 int (*msi_prepare)(struct irq_domain *domain, 347 int (*handle_error)(struct irq_domain *domain, 349 int (*domain_alloc_irqs)(struct irq_domain *domain, 409 struct irq_domain *parent); 420 struct irq_domain *parent); 430 struct irq_domain * [all …]
|
/linux/Documentation/translations/zh_CN/core-api/irq/ |
A D | irq-domain.rst | 12 irq_domain 中断号映射库 36 irq_domain来管理映射。 41 irq_domain的用法 64 irq_domain映射的类型 180 个irq_domain数据结构,并将这些irq_domain组织成层次结构。 182 在建立irq_domain层次结构时,靠近设备的irq_domain为子域,靠近CPU的 186 CPU Vector irq_domain (root irq_domain to manage CPU vectors) 203 1) 一个新的字段 'parent' 被添加到irq_domain结构中;它用于维护irq_domain的层次信息。 205 匹配irq_domain层次结构。irq_data用于存储irq_domain指针和硬件irq号。 208 在支持分层irq_domain和分层irq_data准备就绪后,为每个中断控制器建立一个irq_domain结 [all …]
|
/linux/kernel/irq/ |
A D | irqdomain.c | 145 struct irq_domain *domain; in __irq_domain_add() 331 struct irq_domain *domain; in irq_domain_create_simple() 387 struct irq_domain *domain; in irq_domain_create_legacy() 405 struct irq_domain *h, *found = NULL; in irq_find_matching_fwspec() 448 struct irq_domain *h; in irq_domain_check_msi_remap() 762 struct irq_domain *domain; in irq_create_fwspec_mapping() 869 struct irq_domain *domain; in irq_dispose_mapping() 1093 struct irq_domain *irq_domain_create_hierarchy(struct irq_domain *parent, in irq_domain_create_hierarchy() 1100 struct irq_domain *domain; in irq_domain_create_hierarchy() 1274 struct irq_domain *parent; in irq_domain_alloc_irq_data() [all …]
|
A D | msi.c | 256 static int msi_domain_activate(struct irq_domain *domain, in msi_domain_activate() 267 static void msi_domain_deactivate(struct irq_domain *domain, in msi_domain_deactivate() 276 static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, in msi_domain_alloc() 308 static void msi_domain_free(struct irq_domain *domain, unsigned int virq, in msi_domain_free() 347 static int msi_domain_ops_init(struct irq_domain *domain, in msi_domain_ops_init() 362 static int msi_domain_ops_check(struct irq_domain *domain, in msi_domain_ops_check() 425 struct irq_domain *msi_create_irq_domain(struct fwnode_handle *fwnode, in msi_create_irq_domain() 427 struct irq_domain *parent) in msi_create_irq_domain() 429 struct irq_domain *domain; in msi_create_irq_domain() 510 static bool msi_check_reservation_mode(struct irq_domain *domain, in msi_check_reservation_mode() [all …]
|
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()
|
/linux/arch/powerpc/platforms/embedded6xx/ |
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 …]
|
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/arch/x86/include/asm/ |
A D | irqdomain.h | 18 extern struct irq_domain *x86_vector_domain; 45 extern int mp_irqdomain_alloc(struct irq_domain *domain, unsigned int virq, 47 extern void mp_irqdomain_free(struct irq_domain *domain, unsigned int virq, 49 extern int mp_irqdomain_activate(struct irq_domain *domain, 51 extern void mp_irqdomain_deactivate(struct irq_domain *domain, 53 extern int mp_irqdomain_ioapic_idx(struct irq_domain *domain); 58 struct irq_domain *native_create_pci_msi_domain(void); 59 extern struct irq_domain *x86_pci_msi_default_domain;
|
/linux/drivers/irqchip/ |
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()
|
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()
|
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() 183 static int mbi_allocate_pci_domain(struct irq_domain *nexus_domain, in mbi_allocate_pci_domain() 184 struct irq_domain **pci_domain) in mbi_allocate_pci_domain() 195 static int mbi_allocate_pci_domain(struct irq_domain *nexus_domain, in mbi_allocate_pci_domain() 196 struct irq_domain **pci_domain) in mbi_allocate_pci_domain() 232 static int mbi_allocate_domains(struct irq_domain *parent) in mbi_allocate_domains() 234 struct irq_domain *nexus_domain, *pci_domain, *plat_domain; in mbi_allocate_domains() 263 int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent) in mbi_init()
|
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 …]
|
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() 170 p->irq_domain = irq_domain_add_linear(dev->of_node, p->number_of_irqs, in irqc_probe() 172 if (!p->irq_domain) { in irqc_probe() 178 ret = irq_alloc_domain_generic_chips(p->irq_domain, p->number_of_irqs, in irqc_probe() 186 p->gc = irq_get_domain_generic_chip(p->irq_domain, 0); in irqc_probe() 212 irq_domain_remove(p->irq_domain); in irqc_probe() 223 irq_domain_remove(p->irq_domain); in irqc_remove()
|
A D | irq-renesas-rza1.c | 45 struct irq_domain *irq_domain; member 102 static int rza1_irqc_alloc(struct irq_domain *domain, unsigned int virq, in rza1_irqc_alloc() 125 static int rza1_irqc_translate(struct irq_domain *domain, in rza1_irqc_translate() 194 struct irq_domain *parent = NULL; in rza1_irqc_probe() 234 priv->irq_domain = irq_domain_add_hierarchy(parent, 0, IRQC_NUM_IRQ, in rza1_irqc_probe() 237 if (!priv->irq_domain) { in rza1_irqc_probe() 251 irq_domain_remove(priv->irq_domain); in rza1_irqc_remove()
|
A D | irq-goldfish-pic.c | 30 struct irq_domain *irq_domain; member 44 generic_handle_domain_irq(gfpic->irq_domain, hwirq); in goldfish_pic_cascade() 104 gfpic->irq_domain = irq_domain_add_legacy(of_node, GFPIC_NR_IRQS, in goldfish_pic_of_init() 108 if (!gfpic->irq_domain) { in goldfish_pic_of_init()
|
/linux/arch/x86/kernel/apic/ |
A D | msi.c | 23 struct irq_domain *x86_pci_msi_default_domain __ro_after_init; 159 int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, in pci_msi_prepare() 190 struct irq_domain * __init native_create_pci_msi_domain(void) in native_create_pci_msi_domain() 193 struct irq_domain *d; in native_create_pci_msi_domain() 238 struct irq_domain *arch_create_remap_msi_irq_domain(struct irq_domain *parent, in arch_create_remap_msi_irq_domain() 242 struct irq_domain *d; in arch_create_remap_msi_irq_domain() 284 static int dmar_msi_init(struct irq_domain *domain, in dmar_msi_init() 304 static struct irq_domain *dmar_get_irq_domain(void) in dmar_get_irq_domain() 306 static struct irq_domain *dmar_domain; in dmar_get_irq_domain() 328 struct irq_domain *domain = dmar_get_irq_domain(); in dmar_alloc_hwirq()
|
/linux/Documentation/core-api/irq/ |
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/drivers/ssb/ |
A D | driver_gpio.c | 31 return irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_to_irq() 152 if (!bus->irq_domain) { in ssb_gpio_irq_chipco_domain_init() 177 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_init() 181 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_chipco_domain_init() 198 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_exit() 202 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_chipco_domain_exit() 350 if (!bus->irq_domain) { in ssb_gpio_irq_extif_domain_init() 374 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_extif_domain_init() 378 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_extif_domain_init() 394 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_extif_domain_exit() [all …]
|
/linux/drivers/gpio/ |
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 …]
|
/linux/arch/powerpc/platforms/cell/ |
A D | axon_msi.c | 67 struct irq_domain *irq_domain; member 152 struct irq_domain *irq_domain; in find_msi_translator() local 184 irq_domain = irq_find_host(dn); in find_msi_translator() 185 if (!irq_domain) { in find_msi_translator() 191 msic = irq_domain->host_data; in find_msi_translator() 269 virq = irq_create_direct_mapping(msic->irq_domain); in axon_msi_setup_msi_irqs() 307 static int msic_host_map(struct irq_domain *h, unsigned int virq, in msic_host_map() 326 irq_domain_get_of_node(msic->irq_domain)); in axon_msi_shutdown() 382 msic->irq_domain = irq_domain_add_nomap(dn, 65536, &msic_host_ops, msic); in axon_msi_probe() 383 if (!msic->irq_domain) { in axon_msi_probe()
|
/linux/drivers/mailbox/ |
A D | qcom-ipcc.c | 54 struct irq_domain *irq_domain; member 83 virq = irq_find_mapping(ipcc->irq_domain, hwirq); in qcom_ipcc_irq_fn() 114 static int qcom_ipcc_domain_map(struct irq_domain *d, unsigned int irq, in qcom_ipcc_domain_map() 126 static int qcom_ipcc_domain_xlate(struct irq_domain *d, in qcom_ipcc_domain_xlate() 231 ipcc->irq_domain = irq_domain_add_tree(pdev->dev.of_node, in qcom_ipcc_probe() 233 if (!ipcc->irq_domain) in qcom_ipcc_probe() 253 irq_domain_remove(ipcc->irq_domain); in qcom_ipcc_probe() 263 irq_domain_remove(ipcc->irq_domain); in qcom_ipcc_remove()
|
/linux/arch/x86/platform/uv/ |
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() 189 struct irq_domain *domain = uv_get_irq_domain(); in uv_setup_irq()
|
/linux/drivers/mfd/ |
A D | twl6030-irq.c | 113 struct irq_domain *irq_domain; member 190 irq_find_mapping(pdata->irq_domain, in twl6030_irq_thread() 303 return irq_find_mapping(twl6030_irq->irq_domain, in twl6030_mmc_card_detect_config() 333 static int twl6030_irq_map(struct irq_domain *d, unsigned int virq, in twl6030_irq_map() 347 static void twl6030_irq_unmap(struct irq_domain *d, unsigned int virq) in twl6030_irq_unmap() 414 twl6030_irq->irq_domain = in twl6030_init_irq() 417 if (!twl6030_irq->irq_domain) { in twl6030_init_irq() 437 irq_domain_remove(twl6030_irq->irq_domain); in twl6030_init_irq()
|
/linux/drivers/bus/fsl-mc/ |
A D | fsl-mc-msi.c | 161 struct irq_domain *fsl_mc_msi_create_irq_domain(struct fwnode_handle *fwnode, in fsl_mc_msi_create_irq_domain() 163 struct irq_domain *parent) in fsl_mc_msi_create_irq_domain() 165 struct irq_domain *domain; in fsl_mc_msi_create_irq_domain() 181 struct irq_domain *fsl_mc_find_msi_domain(struct device *dev) in fsl_mc_find_msi_domain() 185 struct irq_domain *msi_domain; in fsl_mc_find_msi_domain() 253 struct irq_domain *msi_domain; in fsl_mc_msi_domain_alloc_irqs() 289 struct irq_domain *msi_domain; in fsl_mc_msi_domain_free_irqs()
|