[U-Boot-Users] PCI stopped working on MPC8343
André Schwarz
andre.schwarz at matrix-vision.de
Fri Apr 18 16:27:25 CEST 2008
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):
>
> <patch>
> commit 55774b512fdf63c0516d441cc5da7c54bbffb7f2
> Author: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
> 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 <iwamatsu at nigauri.org>
> Acked-by: Stefan Roese <sr at denx.de>
>
> 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,
>
> </patch>
>
> 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
More information about the U-Boot
mailing list