@ -240,6 +240,9 @@ static struct pci_controller pcie2_hose;
int first_free_busno = 0 ;
extern int fsl_pci_setup_inbound_windows ( struct pci_region * r ) ;
extern void fsl_pci_init ( struct pci_controller * hose ) ;
void pci_init_board ( void )
{
volatile immap_t * immap = ( immap_t * ) CONFIG_SYS_CCSRBAR ;
@ -256,11 +259,11 @@ void pci_init_board(void)
# ifdef CONFIG_PCIE1
{
volatile ccsr_fsl_pci_t * pci = ( ccsr_fsl_pci_t * ) CONFIG_SYS_PCIE1_ADDR ;
extern void fsl_pci_init ( struct pci_controller * hose ) ;
struct pci_controller * hose = & pcie1_hose ;
int pcie_configured = ( io_sel = = 1 ) | | ( io_sel = = 4 ) ;
int pcie_ep = ( host_agent = = 0 ) | | ( host_agent = = 2 ) | |
( host_agent = = 5 ) ;
struct pci_region * r = hose - > regions ;
if ( pcie_configured & & ! ( devdisr & MPC86xx_DEVDISR_PCIE1 ) ) {
printf ( " PCIe 1 connected to Uli as %s (base address %x) \n " ,
@ -270,27 +273,23 @@ void pci_init_board(void)
pci - > pme_msg_det = 0xffffffff ;
/* inbound */
pci_set_region ( hose - > regions + 0 ,
CONFIG_SYS_PCI_MEMORY_BUS ,
CONFIG_SYS_PCI_MEMORY_PHYS ,
CONFIG_SYS_PCI_MEMORY_SIZE ,
PCI_REGION_MEM | PCI_REGION_MEMORY ) ;
r + = fsl_pci_setup_inbound_windows ( r ) ;
/* outbound memory */
pci_set_region ( hose - > regions + 1 ,
pci_set_region ( r + + ,
CONFIG_SYS_PCIE1_MEM_BASE ,
CONFIG_SYS_PCIE1_MEM_PHYS ,
CONFIG_SYS_PCIE1_MEM_SIZE ,
PCI_REGION_MEM ) ;
/* outbound io */
pci_set_region ( hose - > regions + 2 ,
pci_set_region ( r + + ,
CONFIG_SYS_PCIE1_IO_BASE ,
CONFIG_SYS_PCIE1_IO_PHYS ,
CONFIG_SYS_PCIE1_IO_SIZE ,
PCI_REGION_IO ) ;
hose - > region_count = 3 ;
hose - > region_count = r - hose - > regions ;
hose - > first_busno = first_free_busno ;
pci_setup_indirect ( hose , ( int ) & pci - > cfg_addr ,
@ -313,8 +312,8 @@ void pci_init_board(void)
# ifdef CONFIG_PCIE2
{
volatile ccsr_fsl_pci_t * pci = ( ccsr_fsl_pci_t * ) CONFIG_SYS_PCIE2_ADDR ;
extern void fsl_pci_init ( struct pci_controller * hose ) ;
struct pci_controller * hose = & pcie2_hose ;
struct pci_region * r = hose - > regions ;
int pcie_configured = ( io_sel = = 0 ) | | ( io_sel = = 4 ) ;
int pcie_ep = ( host_agent = = 0 ) | | ( host_agent = = 1 ) | |
@ -329,27 +328,23 @@ void pci_init_board(void)
pci - > pme_msg_det = 0xffffffff ;
/* inbound */
pci_set_region ( hose - > regions + 0 ,
CONFIG_SYS_PCI_MEMORY_BUS ,
CONFIG_SYS_PCI_MEMORY_PHYS ,
CONFIG_SYS_PCI_MEMORY_SIZE ,
PCI_REGION_MEM | PCI_REGION_MEMORY ) ;
r + = fsl_pci_setup_inbound_windows ( r ) ;
/* outbound memory */
pci_set_region ( hose - > regions + 1 ,
pci_set_region ( r + + ,
CONFIG_SYS_PCIE2_MEM_BASE ,
CONFIG_SYS_PCIE2_MEM_PHYS ,
CONFIG_SYS_PCIE2_MEM_SIZE ,
PCI_REGION_MEM ) ;
/* outbound io */
pci_set_region ( hose - > regions + 2 ,
pci_set_region ( r + + ,
CONFIG_SYS_PCIE2_IO_BASE ,
CONFIG_SYS_PCIE2_IO_PHYS ,
CONFIG_SYS_PCIE2_IO_SIZE ,
PCI_REGION_IO ) ;
hose - > region_count = 3 ;
hose - > region_count = r - hose - > regions ;
hose - > first_busno = first_free_busno ;
pci_setup_indirect ( hose , ( int ) & pci - > cfg_addr ,
@ -371,9 +366,9 @@ void pci_init_board(void)
# ifdef CONFIG_PCI1
{
volatile ccsr_fsl_pci_t * pci = ( ccsr_fsl_pci_t * ) CONFIG_SYS_PCI1_ADDR ;
extern void fsl_pci_init ( struct pci_controller * hose ) ;
struct pci_controller * hose = & pci1_hose ;
int pci_agent = ( host_agent > = 4 ) & & ( host_agent < = 6 ) ;
struct pci_region * r = hose - > regions ;
if ( ! ( devdisr & MPC86xx_DEVDISR_PCI1 ) ) {
printf ( " PCI connected to PCI slots as %s " \
@ -382,27 +377,23 @@ void pci_init_board(void)
( uint ) pci ) ;
/* inbound */
pci_set_region ( hose - > regions + 0 ,
CONFIG_SYS_PCI_MEMORY_BUS ,
CONFIG_SYS_PCI_MEMORY_PHYS ,
CONFIG_SYS_PCI_MEMORY_SIZE ,
PCI_REGION_MEM | PCI_REGION_MEMORY ) ;
r + = fsl_pci_setup_inbound_windows ( r ) ;
/* outbound memory */
pci_set_region ( hose - > regions + 1 ,
pci_set_region ( r + + ,
CONFIG_SYS_PCI1_MEM_BASE ,
CONFIG_SYS_PCI1_MEM_PHYS ,
CONFIG_SYS_PCI1_MEM_SIZE ,
PCI_REGION_MEM ) ;
/* outbound io */
pci_set_region ( hose - > regions + 2 ,
pci_set_region ( r + + ,
CONFIG_SYS_PCI1_IO_BASE ,
CONFIG_SYS_PCI1_IO_PHYS ,
CONFIG_SYS_PCI1_IO_SIZE ,
PCI_REGION_IO ) ;
hose - > region_count = 3 ;
hose - > region_count = r - hose - > regions ;
hose - > first_busno = first_free_busno ;
pci_setup_indirect ( hose , ( int ) & pci - > cfg_addr ,
@ -422,12 +413,12 @@ void pci_init_board(void)
}
# if defined(CONFIG_OF_BOARD_SETUP)
extern void ft_fsl_pci_setup ( void * blob , const char * pci_alias ,
struct pci_controller * hose ) ;
void
ft_board_setup ( void * blob , bd_t * bd )
{
int node , tmp [ 2 ] ;
const char * path ;
do_fixup_by_prop_u32 ( blob , " device_type " , " cpu " , 4 ,
" timebase-frequency " , bd - > bi_busfreq / 4 , 1 ) ;
do_fixup_by_prop_u32 ( blob , " device_type " , " cpu " , 4 ,
@ -442,36 +433,15 @@ ft_board_setup(void *blob, bd_t *bd)
fdt_fixup_memory ( blob , bd - > bi_memstart , bd - > bi_memsize ) ;
node = fdt_path_offset ( blob , " /aliases " ) ;
tmp [ 0 ] = 0 ;
if ( node > = 0 ) {
# ifdef CONFIG_PCI1
path = fdt_getprop ( blob , node , " pci0 " , NULL ) ;
if ( path ) {
tmp [ 1 ] = pci1_hose . last_busno - pci1_hose . first_busno ;
do_fixup_by_path ( blob , path , " bus-range " , & tmp , 8 , 1 ) ;
}
ft_fsl_pci_setup ( blob , " pci0 " , & pci1_hose ) ;
# endif
# ifdef CONFIG_PCIE1
path = fdt_getprop ( blob , node , " pci1 " , NULL ) ;
if ( path ) {
tmp [ 1 ] = pcie1_hose . last_busno
- pcie1_hose . first_busno ;
do_fixup_by_path ( blob , path , " bus-range " , & tmp , 8 , 1 ) ;
}
ft_fsl_pci_setup ( blob , " pci1 " , & pcie1_hose ) ;
# endif
# ifdef CONFIG_PCIE2
path = fdt_getprop ( blob , node , " pci2 " , NULL ) ;
if ( path ) {
tmp [ 1 ] = pcie2_hose . last_busno
- pcie2_hose . first_busno ;
do_fixup_by_path ( blob , path , " bus-range " , & tmp , 8 , 1 ) ;
}
ft_fsl_pci_setup ( blob , " pci2 " , & pcie2_hose ) ;
# endif
}
}
# endif