aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/ipic.c
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2008-05-25 22:12:30 -0400
committerPaul Mackerras <paulus@samba.org>2008-06-08 23:51:14 -0400
commit84f1c1e08906f2206f2bbdd19e4ff6a0757ff7f8 (patch)
tree4acd7945bff1656d0f8edf0ae771fc16cbe74ab1 /arch/powerpc/sysdev/ipic.c
parent997526db9fa408058f23de19c0e12abd9207276b (diff)
powerpc: Rework ipic_init() so we can avoid freeing the irq_host
If we do the call to of_address_to_resource() first, then we don't need to worry about freeing the irq_host (which the code doesn't do currently anyway). Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/sysdev/ipic.c')
-rw-r--r--arch/powerpc/sysdev/ipic.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c
index 0f2dfb0aaa6a..f95d10ba3b9c 100644
--- a/arch/powerpc/sysdev/ipic.c
+++ b/arch/powerpc/sysdev/ipic.c
@@ -725,6 +725,10 @@ struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)
725 struct resource res; 725 struct resource res;
726 u32 temp = 0, ret; 726 u32 temp = 0, ret;
727 727
728 ret = of_address_to_resource(node, 0, &res);
729 if (ret)
730 return NULL;
731
728 ipic = alloc_bootmem(sizeof(struct ipic)); 732 ipic = alloc_bootmem(sizeof(struct ipic));
729 if (ipic == NULL) 733 if (ipic == NULL)
730 return NULL; 734 return NULL;
@@ -739,12 +743,6 @@ struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)
739 return NULL; 743 return NULL;
740 } 744 }
741 745
742 ret = of_address_to_resource(node, 0, &res);
743 if (ret) {
744 of_node_put(node);
745 return NULL;
746 }
747
748 ipic->regs = ioremap(res.start, res.end - res.start + 1); 746 ipic->regs = ioremap(res.start, res.end - res.start + 1);
749 747
750 ipic->irqhost->host_data = ipic; 748 ipic->irqhost->host_data = ipic;