@ -14,12 +14,6 @@
# include <errno.h>
# include <pci.h>
# ifdef DEBUG
# define DEBUGF(x...) printf(x)
# else
# define DEBUGF(x...)
# endif /* DEBUG */
/* the user can define CONFIG_SYS_PCI_CACHE_LINE_SIZE to avoid problems */
# ifndef CONFIG_SYS_PCI_CACHE_LINE_SIZE
# define CONFIG_SYS_PCI_CACHE_LINE_SIZE 8
@ -50,20 +44,21 @@ int pciauto_region_allocate(struct pci_region *res, pci_size_t size,
pci_addr_t addr ;
if ( ! res ) {
DEBUGF ( " No resource " ) ;
debug ( " No resource " ) ;
goto error ;
}
addr = ( ( res - > bus_lower - 1 ) | ( size - 1 ) ) + 1 ;
if ( addr - res - > bus_start + size > res - > size ) {
DEBUGF ( " No room in resource " ) ;
debug ( " No room in resource " ) ;
goto error ;
}
res - > bus_lower = addr + size ;
DEBUGF ( " address=0x%llx bus_lower=0x%llx " , ( u64 ) addr , ( u64 ) res - > bus_lower ) ;
debug ( " address=0x%llx bus_lower=0x%llx " , ( unsigned long long ) addr ,
( unsigned long long ) res - > bus_lower ) ;
* bar = addr ;
return 0 ;
@ -122,7 +117,8 @@ void pciauto_setup_device(struct pci_controller *hose,
bar_res = io ;
# endif
DEBUGF ( " PCI Autoconfig: BAR %d, I/O, size=0x%llx, " , bar_nr , ( u64 ) bar_size ) ;
debug ( " PCI Autoconfig: BAR %d, I/O, size=0x%llx, " ,
bar_nr , ( unsigned long long ) bar_size ) ;
} else {
if ( ( bar_response & PCI_BASE_ADDRESS_MEM_TYPE_MASK ) = =
PCI_BASE_ADDRESS_MEM_TYPE_64 ) {
@ -152,7 +148,8 @@ void pciauto_setup_device(struct pci_controller *hose,
bar_res = mem ;
# endif
DEBUGF ( " PCI Autoconfig: BAR %d, Mem, size=0x%llx, " , bar_nr , ( u64 ) bar_size ) ;
debug ( " PCI Autoconfig: BAR %d, Mem, size=0x%llx, " ,
bar_nr , ( unsigned long long ) bar_size ) ;
}
# ifndef CONFIG_PCI_ENUM_ONLY
@ -179,7 +176,7 @@ void pciauto_setup_device(struct pci_controller *hose,
cmdstat | = ( bar_response & PCI_BASE_ADDRESS_SPACE ) ?
PCI_COMMAND_IO : PCI_COMMAND_MEMORY ;
DEBUGF ( " \n " ) ;
debug ( " \n " ) ;
bar_nr + + ;
}
@ -193,14 +190,15 @@ void pciauto_setup_device(struct pci_controller *hose,
pci_hose_read_config_dword ( hose , dev , rom_addr , & bar_response ) ;
if ( bar_response ) {
bar_size = - ( bar_response & ~ 1 ) ;
DEBUGF ( " PCI Autoconfig: ROM, size=%#x, " , bar_size ) ;
debug ( " PCI Autoconfig: ROM, size=%#x, " ,
( unsigned int ) bar_size ) ;
if ( pciauto_region_allocate ( mem , bar_size ,
& bar_value ) = = 0 ) {
pci_hose_write_config_dword ( hose , dev , rom_addr ,
bar_value ) ;
}
cmdstat | = PCI_COMMAND_MEMORY ;
DEBUGF ( " \n " ) ;
debug ( " \n " ) ;
}
}
@ -411,7 +409,7 @@ void pciauto_config_init(struct pci_controller *hose)
if ( hose - > pci_mem ) {
pciauto_region_init ( hose - > pci_mem ) ;
DEBUGF ( " PCI Autoconfig: Bus Memory region: [0x%llx-0x%llx], \n "
debug ( " PCI Autoconfig: Bus Memory region: [0x%llx-0x%llx], \n "
" \t \t Physical Memory [%llx-%llxx] \n " ,
( u64 ) hose - > pci_mem - > bus_start ,
( u64 ) ( hose - > pci_mem - > bus_start + hose - > pci_mem - > size - 1 ) ,
@ -422,7 +420,7 @@ void pciauto_config_init(struct pci_controller *hose)
if ( hose - > pci_prefetch ) {
pciauto_region_init ( hose - > pci_prefetch ) ;
DEBUGF ( " PCI Autoconfig: Bus Prefetchable Mem: [0x%llx-0x%llx], \n "
debug ( " PCI Autoconfig: Bus Prefetchable Mem: [0x%llx-0x%llx], \n "
" \t \t Physical Memory [%llx-%llx] \n " ,
( u64 ) hose - > pci_prefetch - > bus_start ,
( u64 ) ( hose - > pci_prefetch - > bus_start +
@ -435,7 +433,7 @@ void pciauto_config_init(struct pci_controller *hose)
if ( hose - > pci_io ) {
pciauto_region_init ( hose - > pci_io ) ;
DEBUGF ( " PCI Autoconfig: Bus I/O region: [0x%llx-0x%llx], \n "
debug ( " PCI Autoconfig: Bus I/O region: [0x%llx-0x%llx], \n "
" \t \t Physical Memory: [%llx-%llx] \n " ,
( u64 ) hose - > pci_io - > bus_start ,
( u64 ) ( hose - > pci_io - > bus_start + hose - > pci_io - > size - 1 ) ,
@ -475,8 +473,8 @@ int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev)
switch ( class ) {
case PCI_CLASS_BRIDGE_PCI :
DEBUGF ( " PCI Autoconfig: Found P2P bridge, device %d \n " ,
PCI_DEV ( dev ) ) ;
debug ( " PCI Autoconfig: Found P2P bridge, device %d \n " ,
PCI_DEV ( dev ) ) ;
pciauto_setup_device ( hose , dev , 2 , pci_mem ,
pci_prefetch , pci_io ) ;
@ -512,8 +510,8 @@ int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev)
pciauto_setup_device ( hose , dev , 0 , pci_mem ,
pci_prefetch , pci_io ) ;
DEBUGF ( " PCI Autoconfig: Found P2CardBus bridge, device %d \n " ,
PCI_DEV ( dev ) ) ;
debug ( " PCI Autoconfig: Found P2CardBus bridge, device %d \n " ,
PCI_DEV ( dev ) ) ;
# ifndef CONFIG_DM_PCI
hose - > current_busno + + ;
@ -522,8 +520,8 @@ int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev)
# if defined(CONFIG_PCIAUTO_SKIP_HOST_BRIDGE)
case PCI_CLASS_BRIDGE_OTHER :
DEBUGF ( " PCI Autoconfig: Skipping bridge device %d \n " ,
PCI_DEV ( dev ) ) ;
debug ( " PCI Autoconfig: Skipping bridge device %d \n " ,
PCI_DEV ( dev ) ) ;
break ;
# endif
# if defined(CONFIG_MPC834x) && !defined(CONFIG_VME8349)
@ -534,14 +532,14 @@ int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev)
* device claiming resources io / mem / irq . . we only allow for
* the PIMMR window to be allocated ( BAR0 - 1 MB size )
*/
DEBUGF ( " PCI Autoconfig: Broken bridge found, only minimal config \n " ) ;
debug ( " PCI Autoconfig: Broken bridge found, only minimal config \n " ) ;
pciauto_setup_device ( hose , dev , 0 , hose - > pci_mem ,
hose - > pci_prefetch , hose - > pci_io ) ;
break ;
# endif
case PCI_CLASS_PROCESSOR_POWERPC : /* an agent or end-point */
DEBUGF ( " PCI AutoConfig: Found PowerPC device \n " ) ;
debug ( " PCI AutoConfig: Found PowerPC device \n " ) ;
default :
pciauto_setup_device ( hose , dev , 6 , pci_mem ,