diff options
| -rw-r--r-- | include/linux/irqdomain.h | 1 | ||||
| -rw-r--r-- | kernel/irq/irqdomain.c | 11 |
2 files changed, 9 insertions, 3 deletions
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index f64622ad02c1..04579d9fbce4 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h | |||
| @@ -70,6 +70,7 @@ struct irq_fwspec { | |||
| 70 | */ | 70 | */ |
| 71 | enum irq_domain_bus_token { | 71 | enum irq_domain_bus_token { |
| 72 | DOMAIN_BUS_ANY = 0, | 72 | DOMAIN_BUS_ANY = 0, |
| 73 | DOMAIN_BUS_WIRED, | ||
| 73 | DOMAIN_BUS_PCI_MSI, | 74 | DOMAIN_BUS_PCI_MSI, |
| 74 | DOMAIN_BUS_PLATFORM_MSI, | 75 | DOMAIN_BUS_PLATFORM_MSI, |
| 75 | DOMAIN_BUS_NEXUS, | 76 | DOMAIN_BUS_NEXUS, |
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 8cf95de1ab3f..d75179735a28 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c | |||
| @@ -575,10 +575,15 @@ unsigned int irq_create_fwspec_mapping(struct irq_fwspec *fwspec) | |||
| 575 | unsigned int type = IRQ_TYPE_NONE; | 575 | unsigned int type = IRQ_TYPE_NONE; |
| 576 | int virq; | 576 | int virq; |
| 577 | 577 | ||
| 578 | if (fwspec->fwnode) | 578 | if (fwspec->fwnode) { |
| 579 | domain = irq_find_matching_fwnode(fwspec->fwnode, DOMAIN_BUS_ANY); | 579 | domain = irq_find_matching_fwnode(fwspec->fwnode, |
| 580 | else | 580 | DOMAIN_BUS_WIRED); |
| 581 | if (!domain) | ||
| 582 | domain = irq_find_matching_fwnode(fwspec->fwnode, | ||
| 583 | DOMAIN_BUS_ANY); | ||
| 584 | } else { | ||
| 581 | domain = irq_default_domain; | 585 | domain = irq_default_domain; |
| 586 | } | ||
| 582 | 587 | ||
| 583 | if (!domain) { | 588 | if (!domain) { |
| 584 | pr_warn("no irq domain found for %s !\n", | 589 | pr_warn("no irq domain found for %s !\n", |
