Christian Zigotzky <chzigot...@xenosoft.de> writes: > Just for info: I tested it on my Nemo board today and it works.
Awesome thanks. That's probably sufficient to merge it, and if it breaks anything we can always revert it. cheers > On 31 July 2018 at 2:04PM, Michael Ellerman wrote: >> 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)