[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