Commit 997526db authored by Michael Ellerman's avatar Michael Ellerman Committed by Paul Mackerras

powerpc: Rework Axon MSI setup so we can avoid freeing the irq_host

If we do the call to irq_of_parse_and_map() first, then we don't
need to worry about freeing the irq_host.
Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 7c4f10b9
...@@ -358,6 +358,13 @@ static int axon_msi_probe(struct of_device *device, ...@@ -358,6 +358,13 @@ static int axon_msi_probe(struct of_device *device,
goto out_free_msic; goto out_free_msic;
} }
virq = irq_of_parse_and_map(dn, 0);
if (virq == NO_IRQ) {
printk(KERN_ERR "axon_msi: irq parse and map failed for %s\n",
dn->full_name);
goto out_free_fifo;
}
msic->irq_host = irq_alloc_host(of_node_get(dn), IRQ_HOST_MAP_NOMAP, msic->irq_host = irq_alloc_host(of_node_get(dn), IRQ_HOST_MAP_NOMAP,
NR_IRQS, &msic_host_ops, 0); NR_IRQS, &msic_host_ops, 0);
if (!msic->irq_host) { if (!msic->irq_host) {
...@@ -368,13 +375,6 @@ static int axon_msi_probe(struct of_device *device, ...@@ -368,13 +375,6 @@ static int axon_msi_probe(struct of_device *device,
msic->irq_host->host_data = msic; msic->irq_host->host_data = msic;
virq = irq_of_parse_and_map(dn, 0);
if (virq == NO_IRQ) {
printk(KERN_ERR "axon_msi: irq parse and map failed for %s\n",
dn->full_name);
goto out_free_host;
}
set_irq_data(virq, msic); set_irq_data(virq, msic);
set_irq_chained_handler(virq, axon_msi_cascade); set_irq_chained_handler(virq, axon_msi_cascade);
pr_debug("axon_msi: irq 0x%x setup for axon_msi\n", virq); pr_debug("axon_msi: irq 0x%x setup for axon_msi\n", virq);
...@@ -399,8 +399,6 @@ static int axon_msi_probe(struct of_device *device, ...@@ -399,8 +399,6 @@ static int axon_msi_probe(struct of_device *device,
return 0; return 0;
out_free_host:
kfree(msic->irq_host);
out_free_fifo: out_free_fifo:
dma_free_coherent(&device->dev, MSIC_FIFO_SIZE_BYTES, msic->fifo_virt, dma_free_coherent(&device->dev, MSIC_FIFO_SIZE_BYTES, msic->fifo_virt,
msic->fifo_phys); msic->fifo_phys);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment