[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>
This commit is contained in:
@@ -139,11 +139,11 @@ static void fixup_pci(void)
|
|||||||
u32 *pci_regs[3];
|
u32 *pci_regs[3];
|
||||||
u8 *soc_regs;
|
u8 *soc_regs;
|
||||||
int i, len;
|
int i, len;
|
||||||
void *ctrl_node, *bus_node, *parent_node, *soc_node;
|
void *node, *parent_node, *soc_node;
|
||||||
u32 naddr, nsize, bus_ph, mem_log2;
|
u32 naddr, nsize, mem_log2;
|
||||||
|
|
||||||
ctrl_node = finddevice("/soc/pci");
|
node = finddevice("/pci");
|
||||||
if (!ctrl_node || !dt_is_compatible(ctrl_node, "fsl,pq2-pci"))
|
if (!node || !dt_is_compatible(node, "fsl,pq2-pci"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
soc_node = finddevice("/soc");
|
soc_node = finddevice("/soc");
|
||||||
@@ -151,27 +151,18 @@ static void fixup_pci(void)
|
|||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
if (!dt_xlate_reg(ctrl_node, i,
|
if (!dt_xlate_reg(node, i,
|
||||||
(unsigned long *)&pci_regs[i], NULL))
|
(unsigned long *)&pci_regs[i], NULL))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (!dt_xlate_reg(soc_node, 0, (unsigned long *)&soc_regs, NULL))
|
if (!dt_xlate_reg(soc_node, 0, (unsigned long *)&soc_regs, NULL))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
len = getprop(ctrl_node, "fsl,bus", &bus_ph, 4);
|
dt_get_reg_format(node, &naddr, &nsize);
|
||||||
if (len != 4)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
bus_node = find_node_by_prop_value(NULL, "linux,phandle",
|
|
||||||
(char *)&bus_ph, 4);
|
|
||||||
if (!bus_node)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
dt_get_reg_format(bus_node, &naddr, &nsize);
|
|
||||||
if (naddr != 3 || nsize != 2)
|
if (naddr != 3 || nsize != 2)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
parent_node = get_parent(bus_node);
|
parent_node = get_parent(node);
|
||||||
if (!parent_node)
|
if (!parent_node)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@@ -179,7 +170,7 @@ static void fixup_pci(void)
|
|||||||
if (naddr != 1 || nsize != 1)
|
if (naddr != 1 || nsize != 1)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
len = getprop(bus_node, "ranges", pci_ranges_buf,
|
len = getprop(node, "ranges", pci_ranges_buf,
|
||||||
sizeof(pci_ranges_buf));
|
sizeof(pci_ranges_buf));
|
||||||
|
|
||||||
for (i = 0; i < len / sizeof(struct pci_range); i++) {
|
for (i = 0; i < len / sizeof(struct pci_range); i++) {
|
||||||
|
Reference in New Issue
Block a user