powerpc: Remove all usages of NO_IRQ
NO_IRQ has been == 0 on powerpc for just over ten years (since commit
0ebfff1491
("[POWERPC] Add new interrupt mapping core and change
platforms to use it")). It's also 0 on most other arches.
Although it's fairly harmless, every now and then it causes confusion
when a driver is built on powerpc and another arch which doesn't define
NO_IRQ. There's at least 6 definitions of NO_IRQ in drivers/, at least
some of which are to work around that problem.
So we'd like to remove it. This is fairly trivial in the arch code, we
just convert:
if (irq == NO_IRQ) to if (!irq)
if (irq != NO_IRQ) to if (irq)
irq = NO_IRQ; to irq = 0;
return NO_IRQ; to return 0;
And a few other odd cases as well.
At least for now we keep the #define NO_IRQ, because there is driver
code that uses NO_IRQ and the fixes to remove those will go via other
trees.
Note we also change some occurrences in PPC sound drivers, drivers/ps3,
and drivers/macintosh.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
@@ -207,11 +207,11 @@ static void spider_irq_cascade(struct irq_desc *desc)
|
||||
|
||||
cs = in_be32(pic->regs + TIR_CS) >> 24;
|
||||
if (cs == SPIDER_IRQ_INVALID)
|
||||
virq = NO_IRQ;
|
||||
virq = 0;
|
||||
else
|
||||
virq = irq_linear_revmap(pic->host, cs);
|
||||
|
||||
if (virq != NO_IRQ)
|
||||
if (virq)
|
||||
generic_handle_irq(virq);
|
||||
|
||||
chip->irq_eoi(&desc->irq_data);
|
||||
@@ -245,19 +245,19 @@ static unsigned int __init spider_find_cascade_and_node(struct spider_pic *pic)
|
||||
/* Now do the horrible hacks */
|
||||
tmp = of_get_property(of_node, "#interrupt-cells", NULL);
|
||||
if (tmp == NULL)
|
||||
return NO_IRQ;
|
||||
return 0;
|
||||
intsize = *tmp;
|
||||
imap = of_get_property(of_node, "interrupt-map", &imaplen);
|
||||
if (imap == NULL || imaplen < (intsize + 1))
|
||||
return NO_IRQ;
|
||||
return 0;
|
||||
iic = of_find_node_by_phandle(imap[intsize]);
|
||||
if (iic == NULL)
|
||||
return NO_IRQ;
|
||||
return 0;
|
||||
imap += intsize + 1;
|
||||
tmp = of_get_property(iic, "#interrupt-cells", NULL);
|
||||
if (tmp == NULL) {
|
||||
of_node_put(iic);
|
||||
return NO_IRQ;
|
||||
return 0;
|
||||
}
|
||||
intsize = *tmp;
|
||||
/* Assume unit is last entry of interrupt specifier */
|
||||
@@ -266,7 +266,7 @@ static unsigned int __init spider_find_cascade_and_node(struct spider_pic *pic)
|
||||
tmp = of_get_property(iic, "ibm,interrupt-server-ranges", NULL);
|
||||
if (tmp == NULL) {
|
||||
of_node_put(iic);
|
||||
return NO_IRQ;
|
||||
return 0;
|
||||
}
|
||||
/* ugly as hell but works for now */
|
||||
pic->node_id = (*tmp) >> 1;
|
||||
@@ -281,7 +281,7 @@ static unsigned int __init spider_find_cascade_and_node(struct spider_pic *pic)
|
||||
(pic->node_id << IIC_IRQ_NODE_SHIFT) |
|
||||
(2 << IIC_IRQ_CLASS_SHIFT) |
|
||||
unit);
|
||||
if (virq == NO_IRQ)
|
||||
if (!virq)
|
||||
printk(KERN_ERR "spider_pic: failed to map cascade !");
|
||||
return virq;
|
||||
}
|
||||
@@ -318,7 +318,7 @@ static void __init spider_init_one(struct device_node *of_node, int chip,
|
||||
|
||||
/* Hook up the cascade interrupt to the iic and nodeid */
|
||||
virq = spider_find_cascade_and_node(pic);
|
||||
if (virq == NO_IRQ)
|
||||
if (!virq)
|
||||
return;
|
||||
irq_set_handler_data(virq, pic);
|
||||
irq_set_chained_handler(virq, spider_irq_cascade);
|
||||
|
Reference in New Issue
Block a user