提交 03848373 编写于 作者: G Grant Likely

irq_domain: remove NO_IRQ from irq domain code

zero always means no irq when using irq domains.  Get rid of the NO_IRQ
references.
Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Milton Miller <miltonm@bga.com>
Tested-by: NOlof Johansson <olof@lixom.net>
上级 cc79ca69
...@@ -108,7 +108,7 @@ struct irq_domain *irq_alloc_host(struct device_node *of_node, ...@@ -108,7 +108,7 @@ struct irq_domain *irq_alloc_host(struct device_node *of_node,
case IRQ_DOMAIN_MAP_LINEAR: case IRQ_DOMAIN_MAP_LINEAR:
rmap = (unsigned int *)(host + 1); rmap = (unsigned int *)(host + 1);
for (i = 0; i < revmap_arg; i++) for (i = 0; i < revmap_arg; i++)
rmap[i] = NO_IRQ; rmap[i] = 0;
host->revmap_data.linear.size = revmap_arg; host->revmap_data.linear.size = revmap_arg;
host->revmap_data.linear.revmap = rmap; host->revmap_data.linear.revmap = rmap;
break; break;
...@@ -218,9 +218,9 @@ unsigned int irq_create_direct_mapping(struct irq_domain *host) ...@@ -218,9 +218,9 @@ unsigned int irq_create_direct_mapping(struct irq_domain *host)
WARN_ON(host->revmap_type != IRQ_DOMAIN_MAP_NOMAP); WARN_ON(host->revmap_type != IRQ_DOMAIN_MAP_NOMAP);
virq = irq_alloc_desc_from(1, 0); virq = irq_alloc_desc_from(1, 0);
if (virq == NO_IRQ) { if (!virq) {
pr_debug("irq: create_direct virq allocation failed\n"); pr_debug("irq: create_direct virq allocation failed\n");
return NO_IRQ; return 0;
} }
if (virq >= irq_virq_count) { if (virq >= irq_virq_count) {
pr_err("ERROR: no free irqs available below %i maximum\n", pr_err("ERROR: no free irqs available below %i maximum\n",
...@@ -233,7 +233,7 @@ unsigned int irq_create_direct_mapping(struct irq_domain *host) ...@@ -233,7 +233,7 @@ unsigned int irq_create_direct_mapping(struct irq_domain *host)
if (irq_setup_virq(host, virq, virq)) { if (irq_setup_virq(host, virq, virq)) {
irq_free_desc(virq); irq_free_desc(virq);
return NO_IRQ; return 0;
} }
return virq; return virq;
...@@ -263,13 +263,13 @@ unsigned int irq_create_mapping(struct irq_domain *host, ...@@ -263,13 +263,13 @@ unsigned int irq_create_mapping(struct irq_domain *host,
printk(KERN_WARNING "irq_create_mapping called for" printk(KERN_WARNING "irq_create_mapping called for"
" NULL host, hwirq=%lx\n", hwirq); " NULL host, hwirq=%lx\n", hwirq);
WARN_ON(1); WARN_ON(1);
return NO_IRQ; return 0;
} }
pr_debug("irq: -> using host @%p\n", host); pr_debug("irq: -> using host @%p\n", host);
/* Check if mapping already exists */ /* Check if mapping already exists */
virq = irq_find_mapping(host, hwirq); virq = irq_find_mapping(host, hwirq);
if (virq != NO_IRQ) { if (virq) {
pr_debug("irq: -> existing mapping on virq %d\n", virq); pr_debug("irq: -> existing mapping on virq %d\n", virq);
return virq; return virq;
} }
...@@ -279,7 +279,7 @@ unsigned int irq_create_mapping(struct irq_domain *host, ...@@ -279,7 +279,7 @@ unsigned int irq_create_mapping(struct irq_domain *host,
/* Handle legacy */ /* Handle legacy */
virq = (unsigned int)hwirq; virq = (unsigned int)hwirq;
if (virq == 0 || virq >= NUM_ISA_INTERRUPTS) if (virq == 0 || virq >= NUM_ISA_INTERRUPTS)
return NO_IRQ; return 0;
return virq; return virq;
} else { } else {
/* Allocate a virtual interrupt number */ /* Allocate a virtual interrupt number */
...@@ -289,16 +289,16 @@ unsigned int irq_create_mapping(struct irq_domain *host, ...@@ -289,16 +289,16 @@ unsigned int irq_create_mapping(struct irq_domain *host,
virq = irq_alloc_desc_from(hint, 0); virq = irq_alloc_desc_from(hint, 0);
if (!virq) if (!virq)
virq = irq_alloc_desc_from(1, 0); virq = irq_alloc_desc_from(1, 0);
if (virq == NO_IRQ) { if (!virq) {
pr_debug("irq: -> virq allocation failed\n"); pr_debug("irq: -> virq allocation failed\n");
return NO_IRQ; return 0;
} }
} }
if (irq_setup_virq(host, virq, hwirq)) { if (irq_setup_virq(host, virq, hwirq)) {
if (host->revmap_type != IRQ_DOMAIN_MAP_LEGACY) if (host->revmap_type != IRQ_DOMAIN_MAP_LEGACY)
irq_free_desc(virq); irq_free_desc(virq);
return NO_IRQ; return 0;
} }
pr_debug("irq: irq %lu on host %s mapped to virtual irq %u\n", pr_debug("irq: irq %lu on host %s mapped to virtual irq %u\n",
...@@ -323,7 +323,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller, ...@@ -323,7 +323,7 @@ unsigned int irq_create_of_mapping(struct device_node *controller,
if (host == NULL) { if (host == NULL) {
printk(KERN_WARNING "irq: no irq host found for %s !\n", printk(KERN_WARNING "irq: no irq host found for %s !\n",
controller->full_name); controller->full_name);
return NO_IRQ; return 0;
} }
/* If host has no translation, then we assume interrupt line */ /* If host has no translation, then we assume interrupt line */
...@@ -332,12 +332,12 @@ unsigned int irq_create_of_mapping(struct device_node *controller, ...@@ -332,12 +332,12 @@ unsigned int irq_create_of_mapping(struct device_node *controller,
else { else {
if (host->ops->xlate(host, controller, intspec, intsize, if (host->ops->xlate(host, controller, intspec, intsize,
&hwirq, &type)) &hwirq, &type))
return NO_IRQ; return 0;
} }
/* Create mapping */ /* Create mapping */
virq = irq_create_mapping(host, hwirq); virq = irq_create_mapping(host, hwirq);
if (virq == NO_IRQ) if (!virq)
return virq; return virq;
/* Set type if specified and different than the current one */ /* Set type if specified and different than the current one */
...@@ -358,7 +358,7 @@ void irq_dispose_mapping(unsigned int virq) ...@@ -358,7 +358,7 @@ void irq_dispose_mapping(unsigned int virq)
struct irq_domain *host; struct irq_domain *host;
irq_hw_number_t hwirq; irq_hw_number_t hwirq;
if (virq == NO_IRQ || !irq_data) if (!virq || !irq_data)
return; return;
host = irq_data->domain; host = irq_data->domain;
...@@ -387,7 +387,7 @@ void irq_dispose_mapping(unsigned int virq) ...@@ -387,7 +387,7 @@ void irq_dispose_mapping(unsigned int virq)
switch(host->revmap_type) { switch(host->revmap_type) {
case IRQ_DOMAIN_MAP_LINEAR: case IRQ_DOMAIN_MAP_LINEAR:
if (hwirq < host->revmap_data.linear.size) if (hwirq < host->revmap_data.linear.size)
host->revmap_data.linear.revmap[hwirq] = NO_IRQ; host->revmap_data.linear.revmap[hwirq] = 0;
break; break;
case IRQ_DOMAIN_MAP_TREE: case IRQ_DOMAIN_MAP_TREE:
mutex_lock(&revmap_trees_mutex); mutex_lock(&revmap_trees_mutex);
...@@ -422,7 +422,7 @@ unsigned int irq_find_mapping(struct irq_domain *host, ...@@ -422,7 +422,7 @@ unsigned int irq_find_mapping(struct irq_domain *host,
if (host == NULL) if (host == NULL)
host = irq_default_host; host = irq_default_host;
if (host == NULL) if (host == NULL)
return NO_IRQ; return 0;
/* legacy -> bail early */ /* legacy -> bail early */
if (host->revmap_type == IRQ_DOMAIN_MAP_LEGACY) if (host->revmap_type == IRQ_DOMAIN_MAP_LEGACY)
...@@ -440,7 +440,7 @@ unsigned int irq_find_mapping(struct irq_domain *host, ...@@ -440,7 +440,7 @@ unsigned int irq_find_mapping(struct irq_domain *host,
if (i >= irq_virq_count) if (i >= irq_virq_count)
i = 1; i = 1;
} while(i != hint); } while(i != hint);
return NO_IRQ; return 0;
} }
EXPORT_SYMBOL_GPL(irq_find_mapping); EXPORT_SYMBOL_GPL(irq_find_mapping);
...@@ -493,7 +493,7 @@ void irq_radix_revmap_insert(struct irq_domain *host, unsigned int virq, ...@@ -493,7 +493,7 @@ void irq_radix_revmap_insert(struct irq_domain *host, unsigned int virq,
if (WARN_ON(host->revmap_type != IRQ_DOMAIN_MAP_TREE)) if (WARN_ON(host->revmap_type != IRQ_DOMAIN_MAP_TREE))
return; return;
if (virq != NO_IRQ) { if (virq) {
mutex_lock(&revmap_trees_mutex); mutex_lock(&revmap_trees_mutex);
radix_tree_insert(&host->revmap_data.tree, hwirq, irq_data); radix_tree_insert(&host->revmap_data.tree, hwirq, irq_data);
mutex_unlock(&revmap_trees_mutex); mutex_unlock(&revmap_trees_mutex);
...@@ -527,7 +527,7 @@ unsigned int irq_linear_revmap(struct irq_domain *host, ...@@ -527,7 +527,7 @@ unsigned int irq_linear_revmap(struct irq_domain *host,
return irq_find_mapping(host, hwirq); return irq_find_mapping(host, hwirq);
/* Fill up revmap with slow path if no mapping found */ /* Fill up revmap with slow path if no mapping found */
if (unlikely(revmap[hwirq] == NO_IRQ)) if (unlikely(!revmap[hwirq]))
revmap[hwirq] = irq_find_mapping(host, hwirq); revmap[hwirq] = irq_find_mapping(host, hwirq);
return revmap[hwirq]; return revmap[hwirq];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册