Michael Ellerman <m...@ellerman.id.au> writes: > Darren Stevens <dar...@stevens-zone.net> writes: > >> Pasemi arch code finds the root of the PCI-e bus by searching the >> device-tree for a node called 'pxp'. But the root bus has a >> compatible property of 'pasemi,rootbus' so search for that instead. >> >> Signed-off-by: Darren Stevens <dar...@stevens-zone.net> >> --- >> >> This works on the Amigaone X1000, I don't know if this method of >> finding the pci bus was there bcause of earlier firmwares. > > Does anyone have another pasemi board they can test this on? > > The last time I plugged mine in it popped the power supply and took out > power to half the office :) - I haven't had a chance to try it since.
I actually I remembered I have a device tree lying around from an electra. It has: [I] home:pxp@0,80000000(7)(I)> lsprop name compatible name "pxp" compatible "pasemi,rootbus" "pa-pxp" So it looks like the patch would work fine on it at least. cheers >> diff --git a/arch/powerpc/platforms/pasemi/pci.c >> b/arch/powerpc/platforms/pasemi/pci.c >> index c7c8607..be62380 100644 >> --- a/arch/powerpc/platforms/pasemi/pci.c >> +++ b/arch/powerpc/platforms/pasemi/pci.c >> @@ -216,6 +216,7 @@ static int __init pas_add_bridge(struct device_node *dev) >> void __init pas_pci_init(void) >> { >> struct device_node *np, *root; >> + int res; >> >> root = of_find_node_by_path("/"); >> if (!root) { >> @@ -226,11 +227,11 @@ void __init pas_pci_init(void) >> >> pci_set_flags(PCI_SCAN_ALL_PCIE_DEVS); >> >> - for (np = NULL; (np = of_get_next_child(root, np)) != NULL;) >> - if (np->name && !strcmp(np->name, "pxp") && !pas_add_bridge(np)) >> - of_node_get(np); >> - >> - of_node_put(root); >> + np = of_find_compatible_node(root, NULL, "pasemi,rootbus"); >> + if (np) { >> + res = pas_add_bridge(np); >> + of_node_put(np); >> + } >> } >> >> void __iomem *pasemi_pci_getcfgaddr(struct pci_dev *dev, int offset)