| /linux/include/linux/ |
| H A D | irqdomain.h | 20 struct irq_domain; 100 int (*match)(struct irq_domain *d, struct device_node *node, 102 int (*select)(struct irq_domain *d, struct irq_fwspec *fwspec, 104 int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw); 105 void (*unmap)(struct irq_domain *d, unsigned int virq); 106 int (*xlate)(struct irq_domain *d, struct device_node *node, 111 int (*alloc)(struct irq_domain *d, unsigned int virq, 113 void (*free)(struct irq_domain *d, unsigned int virq, 115 int (*activate)(struct irq_domain *d, struct irq_data *irqd, bool reserve); 116 void (*deactivate)(struct irq_domain *d, struct irq_data *irq_data); [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/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 …]
|
| /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;
|
| /linux/drivers/irqchip/ |
| 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_create_hierarchy(irq_domain, IRQ_DOMAIN_FLAG_IPI_SINGLE, 2, in mips_cpu_register_ipi_domain() 261 irq_domain = irq_domain_create_legacy(of_fwnode_handle(of_node), 8, MIPS_CPU_IRQ_BASE, 0, in __mips_cpu_irq_init() 263 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_create_linear(of_fwnode_handle(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-atmel-aic5.c | 68 static struct irq_domain *aic5_domain; 87 struct irq_domain *domain = d->domain; in aic5_mask() 103 struct irq_domain *domain = d->domain; in aic5_unmask() 119 struct irq_domain *domain = d->domain; in aic5_retrigger() 131 struct irq_domain *domain = d->domain; in aic5_set_type() 150 struct irq_domain *domain = d->domain; in aic5_suspend() 179 struct irq_domain *domain = d->domain; in aic5_resume() 214 struct irq_domain *domain = d->domain; in aic5_pm_shutdown() 233 static void __init aic5_hw_init(struct irq_domain *domain) in aic5_hw_init() 264 static int aic5_irq_domain_xlate(struct irq_domain *d, in aic5_irq_domain_xlate() [all …]
|
| 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() 156 static int pch_msi_init_domains(struct pch_msi_data *priv, struct irq_domain *parent, in pch_msi_init_domains() 175 struct irq_domain *parent_domain, struct fwnode_handle *domain_handle) in pch_msi_init() 218 struct irq_domain *parent_domain; in pch_msi_of_init() 264 int __init pch_msi_acpi_init(struct irq_domain *parent, struct acpi_madt_msi_pic *acpi_pchmsi) in pch_msi_acpi_init() 279 int __init pch_msi_acpi_init_avec(struct irq_domain *parent) in pch_msi_acpi_init_avec()
|
| H 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_create_legacy(of_fwnode_handle(of_node), GFPIC_NR_IRQS, in goldfish_pic_of_init() 107 if (!gfpic->irq_domain) { in goldfish_pic_of_init()
|
| H A D | irq-idt3243x.c | 23 struct irq_domain *irq_domain; member 39 generic_handle_domain_irq(idtpic->irq_domain, hwirq); in idt_irq_dispatch() 48 struct irq_domain *domain; in idt_pic_init() 82 idtpic->irq_domain = domain; in idt_pic_init()
|
| H A D | irq-sun4i.c | 40 struct irq_domain *irq_domain; member 93 static int sun4i_irq_map(struct irq_domain *d, unsigned int virq, in sun4i_irq_map() 136 irq_ic_data->irq_domain = irq_domain_create_linear(of_fwnode_handle(node), 3 * 32, in sun4i_of_init() 138 if (!irq_ic_data->irq_domain) in sun4i_of_init() 198 generic_handle_domain_irq(irq_ic_data->irq_domain, hwirq); in sun4i_handle_irq()
|
| H A D | irq-xtensa-mx.c | 26 static int xtensa_mx_irq_map(struct irq_domain *d, unsigned int irq, in xtensa_mx_irq_map() 46 static int xtensa_mx_irq_domain_xlate(struct irq_domain *d, in xtensa_mx_irq_domain_xlate() 155 static void __init xtensa_mx_init_common(struct irq_domain *root_domain) in xtensa_mx_init_common() 169 struct irq_domain *root_domain = in xtensa_mx_init_legacy() 179 struct irq_domain *root_domain = in xtensa_mx_init()
|
| H A D | irq-gic-v3-mbi.c | 43 static int mbi_irq_gic_domain_alloc(struct irq_domain *domain, in mbi_irq_gic_domain_alloc() 86 static int mbi_irq_domain_alloc(struct irq_domain *domain, unsigned int virq, in mbi_irq_domain_alloc() 132 static void mbi_irq_domain_free(struct irq_domain *domain, in mbi_irq_domain_free() 164 static bool mbi_init_dev_msi_info(struct device *dev, struct irq_domain *domain, in mbi_init_dev_msi_info() 165 struct irq_domain *real_parent, struct msi_domain_info *info) in mbi_init_dev_msi_info() 207 static int mbi_allocate_domain(struct irq_domain *parent) in mbi_allocate_domain() 218 int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent) in mbi_init()
|
| H A D | irq-aspeed-scu-ic.c | 56 struct irq_domain *irq_domain; member 94 generic_handle_domain_irq(scu_ic->irq_domain, bit - scu_ic->irq_shift); in aspeed_scu_ic_irq_handler_combined() 120 generic_handle_domain_irq(scu_ic->irq_domain, bit - scu_ic->irq_shift); in aspeed_scu_ic_irq_handler_split() 193 static int aspeed_scu_ic_map(struct irq_domain *domain, unsigned int irq, in aspeed_scu_ic_map() 236 scu_ic->irq_domain = irq_domain_create_linear(of_fwnode_handle(node), scu_ic->num_irqs, in aspeed_scu_ic_of_init_common() 238 if (!scu_ic->irq_domain) { in aspeed_scu_ic_of_init_common()
|
| /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() 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/arch/powerpc/platforms/embedded6xx/ |
| 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_create_linear(of_fwnode_handle(np), in flipper_pic_init() 155 if (!irq_domain) { in flipper_pic_init() 161 return irq_domain; in flipper_pic_init()
|
| /linux/drivers/gpio/ |
| H A D | gpio-xgene-sb.c | 53 struct irq_domain *irq_domain; member 151 static int xgene_gpio_sb_domain_activate(struct irq_domain *d, in xgene_gpio_sb_domain_activate() 172 static void xgene_gpio_sb_domain_deactivate(struct irq_domain *d, in xgene_gpio_sb_domain_deactivate() 183 static int xgene_gpio_sb_domain_translate(struct irq_domain *d, in xgene_gpio_sb_domain_translate() 198 static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, in xgene_gpio_sb_domain_alloc() 245 struct irq_domain *parent_domain = NULL; in xgene_gpio_sb_probe() 302 priv->irq_domain = irq_domain_create_hierarchy(parent_domain, in xgene_gpio_sb_probe() 305 if (!priv->irq_domain) in xgene_gpio_sb_probe() 308 priv->chip.gc.irq.domain = priv->irq_domain; in xgene_gpio_sb_probe() 314 irq_domain_remove(priv->irq_domain); in xgene_gpio_sb_probe() [all …]
|
| H A D | gpio-em.c | 30 struct irq_domain *irq_domain; member 176 generic_handle_domain_irq(p->irq_domain, offset); in em_gio_irq_handler() 229 return irq_create_mapping(gpio_to_priv(chip)->irq_domain, offset); in em_gio_to_irq() 242 static int em_gio_irq_domain_map(struct irq_domain *h, unsigned int irq, in em_gio_irq_domain_map() 261 struct irq_domain *domain = data; in em_gio_irq_domain_remove() 328 p->irq_domain = irq_domain_create_simple(dev_fwnode(dev), ngpios, 0, in em_gio_probe() 330 if (!p->irq_domain) { in em_gio_probe() 336 p->irq_domain); in em_gio_probe()
|
| H A D | gpio-mt7621.c | 56 struct irq_domain *irq_domain; member 102 struct irq_domain *domain = priv->irq_domain; in mt7621_gpio_irq_bank_handler() 284 if (priv->irq_domain) { in mt7621_gpio_remove() 286 virq = irq_find_mapping(priv->irq_domain, offset); in mt7621_gpio_remove() 289 irq_domain_remove(priv->irq_domain); in mt7621_gpio_remove() 310 mt7621_gpio_irq_map(struct irq_domain *d, unsigned int irq, in mt7621_gpio_irq_map() 335 mt7621_gpio_irq_unmap(struct irq_domain *d, unsigned int irq) in mt7621_gpio_irq_unmap() 353 priv->irq_domain = irq_domain_create_linear(dev_fwnode(dev), in mt7621_gpio_irq_setup() 357 if (!priv->irq_domain) { in mt7621_gpio_irq_setup() 379 return irq_create_mapping(priv->irq_domain, hwirq); in mt7621_gpio_to_irq()
|
| H A D | gpio-davinci.c | 57 struct irq_domain *irq_domain; member 355 generic_handle_domain_irq(d->irq_domain, hw_irq); in gpio_irq_handler() 366 if (d->irq_domain) in gpio_to_irq_banked() 367 return irq_create_mapping(d->irq_domain, offset); in gpio_to_irq_banked() 415 davinci_gpio_irq_map(struct irq_domain *d, unsigned int irq, in davinci_gpio_irq_map() 472 struct irq_domain *irq_domain = NULL; in davinci_gpio_irq_setup() local 499 irq_domain = irq_domain_create_legacy(dev_fwnode(dev), ngpio, irq, 0, in davinci_gpio_irq_setup() 501 if (!irq_domain) { in davinci_gpio_irq_setup() 514 chips->irq_domain = irq_domain; in davinci_gpio_irq_setup() 572 irq_domain_remove(chips->irq_domain); in davinci_gpio_irq_setup()
|
| /linux/kernel/irq/ |
| 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()
|
| /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()
|
| /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() 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/drivers/mailbox/ |
| H A D | qcom-ipcc.c | 55 struct irq_domain *irq_domain; member 85 virq = irq_find_mapping(ipcc->irq_domain, hwirq); in qcom_ipcc_irq_fn() 116 static int qcom_ipcc_domain_map(struct irq_domain *d, unsigned int irq, in qcom_ipcc_domain_map() 128 static int qcom_ipcc_domain_xlate(struct irq_domain *d, in qcom_ipcc_domain_xlate() 273 virq = irq_find_mapping(ipcc->irq_domain, hwirq); in qcom_ipcc_pm_resume() 320 ipcc->irq_domain = irq_domain_create_tree(dev_fwnode(&pdev->dev), &qcom_ipcc_irq_ops, ipcc); in qcom_ipcc_probe() 321 if (!ipcc->irq_domain) in qcom_ipcc_probe() 342 irq_domain_remove(ipcc->irq_domain); in qcom_ipcc_probe() 352 irq_domain_remove(ipcc->irq_domain); in qcom_ipcc_remove()
|
| /linux/include/linux/irqchip/ |
| H A D | irq-msi-lib.h | 21 int msi_lib_irq_domain_select(struct irq_domain *d, struct irq_fwspec *fwspec, 24 bool msi_lib_init_dev_msi_info(struct device *dev, struct irq_domain *domain, 25 struct irq_domain *real_parent,
|