diff options
author | Scott Wood <scottwood@freescale.com> | 2007-08-30 13:06:21 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2007-10-03 21:35:43 -0400 |
commit | 568091512d464b06f17b88bfd2bdc1ec98a697bd (patch) | |
tree | 91842035fa5fa538fc42744716083033deafac7b /arch | |
parent | c374e00e17f1c10768d5af922a1ff33e43df2eb0 (diff) |
[POWERPC] bootwrapper: Support all-in-one PCI nodes in cuboot-pq2.
Consensus was reached to put PCI nodes at the root of the tree (and not
under /soc), but the phandle to a control node was rejected in favor of
simply not worrying about /pci/reg overlapping /soc/ranges.
This updates cuboot-82xx to not look for the phandle.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/boot/cuboot-pq2.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/arch/powerpc/boot/cuboot-pq2.c b/arch/powerpc/boot/cuboot-pq2.c index b150bd4f1b7..d3d3388d552 100644 --- a/arch/powerpc/boot/cuboot-pq2.c +++ b/arch/powerpc/boot/cuboot-pq2.c | |||
@@ -139,11 +139,11 @@ static void fixup_pci(void) | |||
139 | u32 *pci_regs[3]; | 139 | u32 *pci_regs[3]; |
140 | u8 *soc_regs; | 140 | u8 *soc_regs; |
141 | int i, len; | 141 | int i, len; |
142 | void *ctrl_node, *bus_node, *parent_node, *soc_node; | 142 | void *node, *parent_node, *soc_node; |
143 | u32 naddr, nsize, bus_ph, mem_log2; | 143 | u32 naddr, nsize, mem_log2; |
144 | 144 | ||
145 | ctrl_node = finddevice("/soc/pci"); | 145 | node = finddevice("/pci"); |
146 | if (!ctrl_node || !dt_is_compatible(ctrl_node, "fsl,pq2-pci")) | 146 | if (!node || !dt_is_compatible(node, "fsl,pq2-pci")) |
147 | return; | 147 | return; |
148 | 148 | ||
149 | soc_node = finddevice("/soc"); | 149 | soc_node = finddevice("/soc"); |
@@ -151,27 +151,18 @@ static void fixup_pci(void) | |||
151 | goto err; | 151 | goto err; |
152 | 152 | ||
153 | for (i = 0; i < 3; i++) | 153 | for (i = 0; i < 3; i++) |
154 | if (!dt_xlate_reg(ctrl_node, i, | 154 | if (!dt_xlate_reg(node, i, |
155 | (unsigned long *)&pci_regs[i], NULL)) | 155 | (unsigned long *)&pci_regs[i], NULL)) |
156 | goto err; | 156 | goto err; |
157 | 157 | ||
158 | if (!dt_xlate_reg(soc_node, 0, (unsigned long *)&soc_regs, NULL)) | 158 | if (!dt_xlate_reg(soc_node, 0, (unsigned long *)&soc_regs, NULL)) |
159 | goto err; | 159 | goto err; |
160 | 160 | ||
161 | len = getprop(ctrl_node, "fsl,bus", &bus_ph, 4); | 161 | dt_get_reg_format(node, &naddr, &nsize); |
162 | if (len != 4) | ||
163 | goto err; | ||
164 | |||
165 | bus_node = find_node_by_prop_value(NULL, "linux,phandle", | ||
166 | (char *)&bus_ph, 4); | ||
167 | if (!bus_node) | ||
168 | goto err; | ||
169 | |||
170 | dt_get_reg_format(bus_node, &naddr, &nsize); | ||
171 | if (naddr != 3 || nsize != 2) | 162 | if (naddr != 3 || nsize != 2) |
172 | goto err; | 163 | goto err; |
173 | 164 | ||
174 | parent_node = get_parent(bus_node); | 165 | parent_node = get_parent(node); |
175 | if (!parent_node) | 166 | if (!parent_node) |
176 | goto err; | 167 | goto err; |
177 | 168 | ||
@@ -179,7 +170,7 @@ static void fixup_pci(void) | |||
179 | if (naddr != 1 || nsize != 1) | 170 | if (naddr != 1 || nsize != 1) |
180 | goto err; | 171 | goto err; |
181 | 172 | ||
182 | len = getprop(bus_node, "ranges", pci_ranges_buf, | 173 | len = getprop(node, "ranges", pci_ranges_buf, |
183 | sizeof(pci_ranges_buf)); | 174 | sizeof(pci_ranges_buf)); |
184 | 175 | ||
185 | for (i = 0; i < len / sizeof(struct pci_range); i++) { | 176 | for (i = 0; i < len / sizeof(struct pci_range); i++) { |