From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?Andr=E9_Schwarz?= Date: Fri, 18 Apr 2008 16:27:25 +0200 Subject: [U-Boot-Users] PCI stopped working on MPC8343 In-Reply-To: <4808AD5C.8080202@acm.org> References: <480883E6.5000304@matrix-vision.de> <4808AD5C.8080202@acm.org> Message-ID: <4808AFCD.5070909@matrix-vision.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Larry, you're right - but it doesn't fix my problem. Thanks, Andr? Larry Johnson schrieb: > Andre Schwarz wrote: >> Last week my PCI bus has been running fine showing all devices. >> Right now no devices are shown on the bus. >> >> I'm using CONFIG_83XX_GENERIC_PCI with common setup code for PCI. >> >> Nothing changed from my side during the last 2 weeks. >> >> >> Did I miss any changes in u-boot ? >> >> >> regards, >> Andre Schwarz >> Matrix Vision > > Hi Andre and everyone, > > I was just about to post on I problem I belatedly found with PCI on our > Korat PPC400EPx board. (I believe the same problem exists on the > Sequoia board, but have not proved it.) What appears to have broken it > was the following patch (I got to use "git bisect" for the first time): > > > commit 55774b512fdf63c0516d441cc5da7c54bbffb7f2 > Author: Nobuhiro Iwamatsu > Date: Fri Mar 7 16:04:25 2008 +0900 > > pci: Add CONFIG_PCI_SKIP_HOST_BRIDGE config option > In current source code, when the device number of PCI is 0, > process PCI > bridge without fail. However, when the device number is 0, it is not PCI > always bridge. There are times when device of PCI allocates. > When CONFIG_PCI_SKIP_HOST_BRIDGE is enable, this problem is solved > when > use this patch. > Signed-off-by: Nobuhiro Iwamatsu > Acked-by: Stefan Roese > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index 50ca6b0..7944b66 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -425,6 +425,9 @@ int pci_hose_scan_bus(struct pci_controller *hose, > int bus) > dev < PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1); > dev += PCI_BDF(0,0,1)) > { > + > + /* Bus 0 is not necessarily PCI bridge. */ > +#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE) > /* Skip our host bridge */ > if ( dev == PCI_BDF(hose->first_busno,0,0) ) { > #if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE) /* don't skip > host bridge */ > @@ -434,10 +437,11 @@ int pci_hose_scan_bus(struct pci_controller *hose, > int bus) > if (getenv("pciconfighost") == NULL) { > continue; /* Skip our host bridge */ > } > -#else > +#else /* CONFIG_PCI_CONFIG_HOST_BRIDGE */ > continue; /* Skip our host bridge */ > -#endif > +#endif /* CONFIG_PCI_CONFIG_HOST_BRIDGE */ > } > +#endif /* CONFIG_PCI_SKIP_HOST_BRIDGE */ > > if (PCI_FUNC(dev) && !found_multi) > continue; > @@ -473,8 +477,11 @@ int pci_hose_scan_bus(struct pci_controller *hose, > int bus) > hose->fixup_irq(hose, dev); > > #ifdef CONFIG_PCI_SCAN_SHOW > +#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE) > /* Skip our host bridge */ > - if ( dev != PCI_BDF(hose->first_busno,0,0) ) { > + if ( dev != PCI_BDF(hose->first_busno,0,0) ) > +#endif > + { > unsigned char int_line; > > pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE, > > > > The patch changes the behavior of the code _unless_ > CONFIG_PCI_SKIP_HOST_BRIDGE is defined. Defining that switch in the > Korat configuration fixes the problem. The MPC8323ERDB configuration > has also been patched to add the switch, so maybe this is is the cause > of your problem as well. > > I was going to submit the patch for Korat, but then decided I'd first > like to ask Nobuhiro and the group whether it might not be better to > change the occurrences of > > #if defined(CONFIG_PCI_SKIP_HOST_BRIDGE) > > in "drivers/pci/pci.c" to > > #if !defined(CONFIG_PCI_NO_SKIP_HOST_BRIDGE) > > That would allow those boards that need to patch to specify it > explicity, while leaving the default functionality unchanged. > > Comments? > > Best regards, > Larry > MATRIX VISION GmbH, Talstra?e 16, DE-71570 Oppenweiler - Registergericht: Amtsgericht Stuttgart, HRB 271090 Gesch?ftsf?hrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner