
On Mon, 20 Aug 2007, Kumar Gala wrote:
I don't understand why this is needed. It seems like something more fundamental in the u-boot allocator if it can't handle all the devices in 1M of memory space. No devices memory space requirement is greater than 4k and there are only 5 or 6 of them.
This 'hack' seems to workaround the issue in slightly better way. Not sure if we can do anything better.
The problem is pciauto_setup_device() getting called from fsl_pci_init.c is allocating memory space it doesn't need.
- k
diff --git a/drivers/fsl_pci_init.c b/drivers/fsl_pci_init.c index 1084dc6..193343b 100644 --- a/drivers/fsl_pci_init.c +++ b/drivers/fsl_pci_init.c @@ -54,6 +54,7 @@ fsl_pci_init(struct pci_controller *hose) u8 temp8; int r; int bridge; + unsigned long bus_lower_temp; volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) hose->cfg_addr; pci_dev_t dev = PCI_BDF(busno,0,0);
@@ -131,8 +132,11 @@ fsl_pci_init(struct pci_controller *hose) }
/* Call setup to allocate PCSRBAR window */ + bus_lower_temp = hose->pci_mem->bus_lower; pciauto_setup_device(hose, dev, 1, hose->pci_mem, hose->pci_prefetch, hose->pci_io); + hose->pci_mem->bus_lower = bus_lower_temp; + #ifndef CONFIG_PCI_NOSCAN printf (" Scanning PCI bus %02x\n", hose->current_busno); hose->last_busno = pci_hose_scan_bus(hose,hose->current_busno); diff --git a/drivers/pci_auto.c b/drivers/pci_auto.c