/linux/include/linux/ |
H A D | irqdomain.h | 3 * irq_domain - IRQ Translation Domains 20 struct irq_domain; 52 * struct irq_domain_ops - Methods for irq_domain objects 80 int (*match)(struct irq_domain *d, struct device_node *node, 82 int (*select)(struct irq_domain *d, struct irq_fwspec *fwspec, 84 int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw); 85 void (*unmap)(struct irq_domain *d, unsigned int virq); 86 int (*xlate)(struct irq_domain *d, struct device_node *node, 91 int (*alloc)(struct irq_domain *d, unsigned int virq, 93 void (*free)(struct irq_domain * 147 struct irq_domain { global() struct 150 opsirq_domain global() argument 155 rootirq_domain global() argument 159 bus_tokenirq_domain global() argument 160 gcirq_domain global() argument 164 parentirq_domain global() argument 169 exitirq_domain global() argument 172 hwirq_maxirq_domain global() argument 173 revmap_sizeirq_domain global() argument 174 revmap_treeirq_domain global() argument [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 号码 194 CPU Vector irq_domain (root irq_domain to manage CPU vectors) 197 Interrupt Remapping irq_domain (manage irq_remapping entries) 200 IOAPIC irq_domain (manage IOAPIC delivery entries/pins)
|
/linux/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-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 in __mips_cpu_irq_init() [all...] |
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-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_create_linear(dev_fwnode(dev), 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() [all...] |
H A D | irq-gic-its-msi-parent.c | 60 static int its_pci_msi_prepare(struct irq_domain *domain, struct device *dev, in its_pci_msi_prepare() 104 static int its_v5_pci_msi_prepare(struct irq_domain *domain, struct device *dev, in its_v5_pci_msi_prepare() 145 static int of_pmsi_get_dev_id(struct irq_domain *domain, struct device *dev, in of_pmsi_get_dev_id() 177 static int of_v5_pmsi_get_msi_info(struct irq_domain *domain, struct device *dev, in of_v5_pmsi_get_msi_info() 229 static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev, in its_pmsi_prepare() 254 static int its_v5_pmsi_prepare(struct irq_domain *domain, struct device *dev, in its_v5_pmsi_prepare() 281 static void its_msi_teardown(struct irq_domain *domain, msi_alloc_info_t *info) in its_msi_teardown() 289 static bool its_init_dev_msi_info(struct device *dev, struct irq_domain *domain, in its_init_dev_msi_info() 290 struct irq_domain *real_parent, struct msi_domain_info *info) in its_init_dev_msi_info() 332 static bool its_v5_init_dev_msi_info(struct device *dev, struct irq_domain *domai [all...] |
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_create_linear(of_fwnode_handle(node), INTC_IRQS_PER_WORD, in aspeed_intc_ic_of_init() 107 if (!intc_ic->irq_domain) { in aspeed_intc_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 * [all...] |
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-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()
|
/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 [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_create_linear(of_fwnode_handle(np), in flipper_pic_init() 155 if (!irq_domain) { in flipper_pic_init() 156 pr_err("failed to allocate irq_domain\n"); in flipper_pic_init() 161 return irq_domain; in flipper_pic_init()
|
/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/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/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_domai in dmar_get_irq_domain() [all...] |
/linux/drivers/ssb/ |
H A D | driver_gpio.c | 31 return irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_to_irq() 137 generic_handle_domain_irq_safe(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_handler() 153 bus->irq_domain = irq_domain_create_linear(NULL, chip->ngpio, &irq_domain_simple_ops, in ssb_gpio_irq_chipco_domain_init() 155 if (!bus->irq_domain) { in ssb_gpio_irq_chipco_domain_init() 160 int irq = irq_create_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_init() 180 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_init() 184 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_chipco_domain_init() 201 int irq = irq_find_mapping(bus->irq_domain, gpio); in ssb_gpio_irq_chipco_domain_exit() 205 irq_domain_remove(bus->irq_domain); in ssb_gpio_irq_chipco_domain_exit() 338 generic_handle_domain_irq_safe(bus->irq_domain, gpi in ssb_gpio_irq_extif_handler() [all...] |
/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 a mapping between hwirq and IRQ numbers on 33 top of the irq_alloc_desc*() API. An irq_domain to manage the mapping 37 irq_domain also implements a translation from an abstract struct 43 irq_domain Usage 45 struct irq_domain could be defined as an irq domain controller. That 57 unique identifier for an interrupt controller, the irq_domain code 60 An interrupt controller driver creates and registers a struct irq_domain 63 function will return a pointer to the struct irq_domain on success. The 67 In most cases, the irq_domain wil [all...] |
/linux/kernel/irq/ |
H A D | msi.c | 62 static int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, 601 static struct irq_domain *msi_get_device_domain(struct device *dev, unsigned int domid) in msi_get_device_domain() 603 struct irq_domain *domain; in msi_get_device_domain() 623 struct irq_domain *domain; in msi_domain_get_hwsize() 640 static void msi_check_level(struct irq_domain *domain, struct msi_msg *msg) in msi_check_level() 681 static int msi_domain_activate(struct irq_domain *domain, in msi_domain_activate() 692 static void msi_domain_deactivate(struct irq_domain *domain, in msi_domain_deactivate() 701 static int msi_domain_alloc(struct irq_domain *domain, unsigned int virq, in msi_domain_alloc() 733 static void msi_domain_free(struct irq_domain *domain, unsigned int virq, in msi_domain_free() 746 static int msi_domain_translate(struct irq_domain *domai [all...] |
/linux/drivers/gpio/ |
H A D | gpio-xgene-sb.c | 45 * @irq_domain: GPIO interrupt domain 53 struct irq_domain *irq_domain; member 150 static int xgene_gpio_sb_domain_activate(struct irq_domain *d, in xgene_gpio_sb_domain_activate() 171 static void xgene_gpio_sb_domain_deactivate(struct irq_domain *d, in xgene_gpio_sb_domain_deactivate() 182 static int xgene_gpio_sb_domain_translate(struct irq_domain *d, in xgene_gpio_sb_domain_translate() 197 static int xgene_gpio_sb_domain_alloc(struct irq_domain *domain, in xgene_gpio_sb_domain_alloc() 243 struct irq_domain *parent_domain = NULL; in xgene_gpio_sb_probe() 295 priv->irq_domain = irq_domain_create_hierarchy(parent_domain, in xgene_gpio_sb_probe() 298 if (!priv->irq_domain) in xgene_gpio_sb_probe() [all...] |
/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 | 45 * @irq_domain: The irq_domain associated with this instance 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() 268 virq = irq_find_mapping(ipcc->irq_domain, hwirq); in qcom_ipcc_pm_resume() 315 ipcc->irq_domain = irq_domain_create_tree(dev_fwnode(&pdev->dev), &qcom_ipcc_irq_ops, ipcc); in qcom_ipcc_probe() 316 if (!ipcc->irq_domain) in qcom_ipcc_probe() [all...] |
/linux/drivers/mfd/ |
H A D | twl6030-irq.c | 113 struct irq_domain *irq_domain; member 190 irq_find_mapping(pdata->irq_domain, in twl6030_irq_thread() 259 static int twl6030_irq_map(struct irq_domain *d, unsigned int virq, in twl6030_irq_map() 273 static void twl6030_irq_unmap(struct irq_domain *d, unsigned int virq) in twl6030_irq_unmap() 339 twl6030_irq->irq_domain = irq_domain_create_linear(dev_fwnode(dev), nr_irqs, in twl6030_init_irq() 341 if (!twl6030_irq->irq_domain) { in twl6030_init_irq() 342 dev_err(dev, "Can't add irq_domain\n"); in twl6030_init_irq() 361 irq_domain_remove(twl6030_irq->irq_domain); in twl6030_init_irq()
|