diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pci.c | 2 | ||||
-rw-r--r-- | drivers/pci_auto.c | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/drivers/pci.c b/drivers/pci.c index c618f5b..5360030 100644 --- a/drivers/pci.c +++ b/drivers/pci.c @@ -142,7 +142,7 @@ struct pci_controller *pci_bus_to_hose (int bus) if (bus >= hose->first_busno && bus <= hose->last_busno) return hose; - debug ("pci_bus_to_hose() failed\n"); + printf("pci_bus_to_hose() failed\n"); return NULL; } diff --git a/drivers/pci_auto.c b/drivers/pci_auto.c index 3f26886..3302457 100644 --- a/drivers/pci_auto.c +++ b/drivers/pci_auto.c @@ -319,7 +319,18 @@ int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev) PCI_DEV(dev)); break; #endif - +#ifdef CONFIG_MPC834X + case PCI_CLASS_BRIDGE_OTHER: + /* + * The host/PCI bridge 1 seems broken in 8349 - it presents + * itself as 'PCI_CLASS_BRIDGE_OTHER' and appears as an _agent_ + * device claiming resources io/mem/irq.. we only allow for + * the PIMMR window to be allocated (BAR0 - 1MB size) + */ + DEBUGF("PCI Autoconfig: Broken bridge found, only minimal config\n"); + pciauto_setup_device(hose, dev, 0, hose->pci_mem, hose->pci_io); + break; +#endif default: pciauto_setup_device(hose, dev, 6, hose->pci_mem, hose->pci_io); break; |