Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
This commit is contained in:
		
						commit
						f8030519bb
					
				| 
						 | 
				
			
			@ -182,6 +182,9 @@ static struct pci_controller pcie1_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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -211,10 +214,10 @@ 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_ep = (host_agent == 5);
 | 
			
		||||
	int pcie_configured  = io_sel & 6;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE1 connected to slot as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -227,36 +230,31 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE1_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -279,8 +277,8 @@ 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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	uint pci_agent = (host_agent == 6);
 | 
			
		||||
	uint pci_speed = 33333000; /*get_clock_freq (); PCI PSPEED in [4:5] */
 | 
			
		||||
| 
						 | 
				
			
			@ -300,26 +298,22 @@ pci_init_board(void)
 | 
			
		|||
			);
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -340,26 +334,23 @@ pci_init_board(void)
 | 
			
		|||
	volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI2_ADDR;
 | 
			
		||||
	extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
	struct pci_controller *hose = &pci2_hose;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (!(devdisr & MPC85xx_DEVDISR_PCI2)) {
 | 
			
		||||
		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);
 | 
			
		||||
 | 
			
		||||
		pci_set_region(hose->regions + 1,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCI2_MEM_BASE,
 | 
			
		||||
			       CONFIG_SYS_PCI2_MEM_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCI2_MEM_SIZE,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
 | 
			
		||||
		pci_set_region(hose->regions + 2,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCI2_IO_BASE,
 | 
			
		||||
			       CONFIG_SYS_PCI2_IO_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCI2_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, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -385,39 +376,21 @@ int last_stage_init(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)
 | 
			
		||||
void ft_board_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
	const char *path;
 | 
			
		||||
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
 | 
			
		||||
	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_PCI2
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci1", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pci2_hose.last_busno - pci2_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci2", 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, "pci2", &pcie1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,6 +155,9 @@ static struct pci_controller pcie2_hose;
 | 
			
		|||
static struct pci_controller pcie3_hose;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
extern int fsl_pci_setup_inbound_windows(struct pci_region *r);
 | 
			
		||||
extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
int first_free_busno=0;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
| 
						 | 
				
			
			@ -181,10 +184,10 @@ pci_init_board(void)
 | 
			
		|||
#ifdef CONFIG_PCIE3
 | 
			
		||||
{
 | 
			
		||||
	volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE3_ADDR;
 | 
			
		||||
	extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
	struct pci_controller *hose = &pcie3_hose;
 | 
			
		||||
	int pcie_ep = (host_agent == 1);
 | 
			
		||||
	int pcie_configured  = (io_sel == 7);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE3 connected to Slot3 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -197,27 +200,23 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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_PCIE3_MEM_BASE,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_SIZE,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
 | 
			
		||||
		/* outbound io */
 | 
			
		||||
		pci_set_region(hose->regions + 2,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_IO_BASE,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_IO_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -239,11 +238,11 @@ 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_ep = (host_agent == 5);
 | 
			
		||||
	int pcie_configured  = (io_sel == 2 || io_sel == 3
 | 
			
		||||
				|| io_sel == 5 || io_sel == 7);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE1 connected to Slot1 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -256,36 +255,31 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE1_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -308,10 +302,10 @@ 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;
 | 
			
		||||
	int pcie_ep = (host_agent == 3);
 | 
			
		||||
	int pcie_configured  = (io_sel == 5 || io_sel == 7);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE2 connected to Slot 2 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -324,36 +318,31 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE2_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE2_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE2_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE2_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -375,8 +364,8 @@ 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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	uint pci_agent = (host_agent == 6);
 | 
			
		||||
	uint pci_speed = 66666000; /*get_clock_freq (); PCI PSPEED in [4:5] */
 | 
			
		||||
| 
						 | 
				
			
			@ -397,35 +386,31 @@ pci_init_board(void)
 | 
			
		|||
			);
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SYS_PCI1_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCI1_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCI1_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCI1_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -660,45 +645,24 @@ int board_eth_init(bd_t *bis)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_OF_BOARD_SETUP)
 | 
			
		||||
void
 | 
			
		||||
ft_board_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
	const char *path;
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
 | 
			
		||||
	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_PCIE2
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci1", 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, "pci1", &pcie2_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE2
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci2", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pcie1_hose.last_busno - pcie1_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE3
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci3", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pcie3_hose.last_busno - pcie3_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci3", &pcie3_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -103,6 +103,9 @@ static struct pci_controller pcie2_hose;
 | 
			
		|||
static struct pci_controller pcie3_hose;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
extern int fsl_pci_setup_inbound_windows(struct pci_region *r);
 | 
			
		||||
extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
int first_free_busno=0;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
| 
						 | 
				
			
			@ -126,10 +129,10 @@ pci_init_board(void)
 | 
			
		|||
#ifdef CONFIG_PCIE3
 | 
			
		||||
{
 | 
			
		||||
	volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE3_ADDR;
 | 
			
		||||
	extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
	struct pci_controller *hose = &pcie3_hose;
 | 
			
		||||
	int pcie_ep = (host_agent == 1);
 | 
			
		||||
	int pcie_configured  = io_sel >= 1;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE3 connected to ULI as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -142,36 +145,31 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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_PCIE3_MEM_BASE,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_SIZE,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
 | 
			
		||||
		/* outbound io */
 | 
			
		||||
		pci_set_region(hose->regions + 2,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_IO_BASE,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_IO_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_IO_SIZE,
 | 
			
		||||
			       PCI_REGION_IO);
 | 
			
		||||
 | 
			
		||||
		hose->region_count = 3;
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE3_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -198,10 +196,10 @@ 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_ep = (host_agent == 5);
 | 
			
		||||
	int pcie_configured  = io_sel & 6;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE1 connected to Slot2 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -214,36 +212,31 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE1_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE1_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -266,10 +259,10 @@ 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;
 | 
			
		||||
	int pcie_ep = (host_agent == 3);
 | 
			
		||||
	int pcie_configured  = io_sel & 4;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
		printf ("\n    PCIE2 connected to Slot 1 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -282,36 +275,31 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE2_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE2_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE2_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE2_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -333,8 +321,8 @@ 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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	uint pci_agent = (host_agent == 6);
 | 
			
		||||
	uint pci_speed = 66666000; /*get_clock_freq (); PCI PSPEED in [4:5] */
 | 
			
		||||
| 
						 | 
				
			
			@ -355,35 +343,31 @@ pci_init_board(void)
 | 
			
		|||
			);
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SYS_PCIE3_MEM_BASE2
 | 
			
		||||
		/* outbound memory */
 | 
			
		||||
		pci_set_region(hose->regions + 3,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_BASE2,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_PHYS2,
 | 
			
		||||
			       CONFIG_SYS_PCIE3_MEM_SIZE2,
 | 
			
		||||
			       PCI_REGION_MEM);
 | 
			
		||||
		hose->region_count++;
 | 
			
		||||
#endif
 | 
			
		||||
		hose->region_count = r - hose->regions;
 | 
			
		||||
		hose->first_busno=first_free_busno;
 | 
			
		||||
		pci_setup_indirect(hose, (int) &pci->cfg_addr, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -503,46 +487,25 @@ int board_eth_init(bd_t *bis)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#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)
 | 
			
		||||
void ft_board_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
	const char *path;
 | 
			
		||||
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
 | 
			
		||||
	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_PCIE2
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci1", 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, "pci1", &pcie1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci2", 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, "pci2", &pcie3_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE3
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci3", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pcie3_hose.last_busno - pcie3_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci3", &pcie2_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -285,6 +285,9 @@ static struct pci_controller pci2_hose;
 | 
			
		|||
static struct pci_controller pcie1_hose;
 | 
			
		||||
#endif	/* CONFIG_PCIE1 */
 | 
			
		||||
 | 
			
		||||
extern int fsl_pci_setup_inbound_windows(struct pci_region *r);
 | 
			
		||||
extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
int first_free_busno=0;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
| 
						 | 
				
			
			@ -298,9 +301,9 @@ 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;
 | 
			
		||||
	struct pci_config_table *table;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	uint pci_32 = gur->pordevsr & MPC85xx_PORDEVSR_PCI1_PCI32;	/* PORDEVSR[15] */
 | 
			
		||||
	uint pci_arb = gur->pordevsr & MPC85xx_PORDEVSR_PCI1_ARB;	/* PORDEVSR[14] */
 | 
			
		||||
| 
						 | 
				
			
			@ -322,27 +325,22 @@ pci_init_board(void)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
 | 
			
		||||
		/* relocate config table pointers */
 | 
			
		||||
		hose->config_table = \
 | 
			
		||||
| 
						 | 
				
			
			@ -393,9 +391,9 @@ 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_ep =  (host_agent == 0) || (host_agent == 2 ) || (host_agent == 3);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	int pcie_configured  = io_sel >= 1;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -411,27 +409,23 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -484,29 +478,16 @@ int last_stage_init(void)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_OF_BOARD_SETUP)
 | 
			
		||||
void
 | 
			
		||||
ft_pci_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
	const char *path;
 | 
			
		||||
extern void ft_fsl_pci_setup(void *blob, const char *pci_alias,
 | 
			
		||||
                        struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
	node = fdt_path_offset(blob, "/aliases");
 | 
			
		||||
	tmp[0] = 0;
 | 
			
		||||
	if (node >= 0) {
 | 
			
		||||
void ft_pci_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
#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
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -323,6 +323,9 @@ static struct pci_controller pci1_hose = {
 | 
			
		|||
static struct pci_controller pcie1_hose;
 | 
			
		||||
#endif  /* CONFIG_PCIE1 */
 | 
			
		||||
 | 
			
		||||
extern int fsl_pci_setup_inbound_windows(struct pci_region *r);
 | 
			
		||||
extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
int first_free_busno = 0;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -380,8 +383,8 @@ pci_init_board(void)
 | 
			
		|||
	pib_init();
 | 
			
		||||
 | 
			
		||||
	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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	uint pci_32 = 1;      /* PORDEVSR[15] */
 | 
			
		||||
	uint pci_arb = gur->pordevsr & MPC85xx_PORDEVSR_PCI1_ARB;       /* PORDEVSR[14] */
 | 
			
		||||
| 
						 | 
				
			
			@ -402,27 +405,23 @@ pci_init_board(void)
 | 
			
		|||
			);
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -441,9 +440,9 @@ 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_ep =  (host_agent == 0) || (host_agent == 2 ) || (host_agent == 3);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	int pcie_configured  = io_sel >= 1;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -459,27 +458,23 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -500,31 +495,18 @@ pci_init_board(void)
 | 
			
		|||
#endif /* CONFIG_PCI */
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_OF_BOARD_SETUP)
 | 
			
		||||
void
 | 
			
		||||
ft_board_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
	const char *path;
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -147,6 +147,9 @@ static struct pci_controller pcie2_hose;
 | 
			
		|||
static struct pci_controller pcie3_hose;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
extern int fsl_pci_setup_inbound_windows(struct pci_region *r);
 | 
			
		||||
extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
int first_free_busno=0;
 | 
			
		||||
#ifdef CONFIG_PCI
 | 
			
		||||
void pci_init_board(void)
 | 
			
		||||
| 
						 | 
				
			
			@ -172,11 +175,11 @@ void pci_init_board(void)
 | 
			
		|||
#ifdef CONFIG_PCIE3
 | 
			
		||||
	{
 | 
			
		||||
		volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE3_ADDR;
 | 
			
		||||
		extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
		struct pci_controller *hose = &pcie3_hose;
 | 
			
		||||
		int pcie_ep = (host_agent == 0) || (host_agent == 3) ||
 | 
			
		||||
			(host_agent == 5) || (host_agent == 6);
 | 
			
		||||
		int pcie_configured  = io_sel >= 1;
 | 
			
		||||
		struct pci_region *r = hose->regions;
 | 
			
		||||
		u32 temp32;
 | 
			
		||||
 | 
			
		||||
		if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
| 
						 | 
				
			
			@ -190,27 +193,23 @@ void pci_init_board(void)
 | 
			
		|||
			printf ("\n");
 | 
			
		||||
 | 
			
		||||
			/* 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_PCIE3_MEM_BASE,
 | 
			
		||||
					CONFIG_SYS_PCIE3_MEM_PHYS,
 | 
			
		||||
					CONFIG_SYS_PCIE3_MEM_SIZE,
 | 
			
		||||
					PCI_REGION_MEM);
 | 
			
		||||
 | 
			
		||||
			/* outbound io */
 | 
			
		||||
			pci_set_region(hose->regions + 2,
 | 
			
		||||
			pci_set_region(r++,
 | 
			
		||||
					CONFIG_SYS_PCIE3_IO_BASE,
 | 
			
		||||
					CONFIG_SYS_PCIE3_IO_PHYS,
 | 
			
		||||
					CONFIG_SYS_PCIE3_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, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -244,11 +243,11 @@ 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;
 | 
			
		||||
		int pcie_ep = (host_agent == 2) || (host_agent == 4) ||
 | 
			
		||||
			(host_agent == 6) || (host_agent == 0);
 | 
			
		||||
		int pcie_configured  = io_sel & 4;
 | 
			
		||||
		struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
		if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
			printf ("\n    PCIE2 connected to Slot 1 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -261,27 +260,23 @@ void pci_init_board(void)
 | 
			
		|||
			printf ("\n");
 | 
			
		||||
 | 
			
		||||
			/* 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, (int) &pci->cfg_data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -301,11 +296,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_ep = (host_agent <= 1) || (host_agent == 4) ||
 | 
			
		||||
			(host_agent == 5);
 | 
			
		||||
		int pcie_configured  = io_sel & 6;
 | 
			
		||||
		struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
		if (pcie_configured && !(devdisr & MPC85xx_DEVDISR_PCIE)){
 | 
			
		||||
			printf ("\n    PCIE1 connected to Slot 2 as %s (base address %x)",
 | 
			
		||||
| 
						 | 
				
			
			@ -318,27 +313,23 @@ void pci_init_board(void)
 | 
			
		|||
			printf ("\n");
 | 
			
		||||
 | 
			
		||||
			/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -568,10 +559,11 @@ int board_eth_init(bd_t *bis)
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#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;
 | 
			
		||||
	ulong base, size;
 | 
			
		||||
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
| 
						 | 
				
			
			@ -581,32 +573,16 @@ void ft_board_setup(void *blob, bd_t *bd)
 | 
			
		|||
 | 
			
		||||
	fdt_fixup_memory(blob, (u64)base, (u64)size);
 | 
			
		||||
 | 
			
		||||
	node = fdt_path_offset(blob, "/aliases");
 | 
			
		||||
	tmp[0] = 0;
 | 
			
		||||
	if (node >= 0) {
 | 
			
		||||
#ifdef CONFIG_PCIE3
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci0", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pcie3_hose.last_busno - pcie3_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci0", &pcie3_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE2
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci1", 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, "pci1", &pcie2_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci2", 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, "pci2", &pcie1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_MP
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,37 +433,16 @@ 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
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -161,6 +161,8 @@ static struct pci_controller pci2_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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -173,8 +175,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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
	uint host1_agent = (gur->porbmsr & MPC8641_PORBMSR_HA)
 | 
			
		||||
		>> MPC8641_PORBMSR_HA_SHIFT;
 | 
			
		||||
| 
						 | 
				
			
			@ -193,27 +196,23 @@ void pci_init_board(void)
 | 
			
		|||
		debug("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -242,32 +241,27 @@ void pci_init_board(void)
 | 
			
		|||
#ifdef CONFIG_PCI2
 | 
			
		||||
{
 | 
			
		||||
	volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI2_ADDR;
 | 
			
		||||
	extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
	struct pci_controller *hose = &pci2_hose;
 | 
			
		||||
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	/* 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_PCI2_MEM_BASE,
 | 
			
		||||
		       CONFIG_SYS_PCI2_MEM_PHYS,
 | 
			
		||||
		       CONFIG_SYS_PCI2_MEM_SIZE,
 | 
			
		||||
		       PCI_REGION_MEM);
 | 
			
		||||
 | 
			
		||||
	/* outbound io */
 | 
			
		||||
	pci_set_region(hose->regions + 2,
 | 
			
		||||
	pci_set_region(r++,
 | 
			
		||||
		       CONFIG_SYS_PCI2_IO_BASE,
 | 
			
		||||
		       CONFIG_SYS_PCI2_IO_PHYS,
 | 
			
		||||
		       CONFIG_SYS_PCI2_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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -286,34 +280,21 @@ 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;
 | 
			
		||||
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
 | 
			
		||||
	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_PCI2
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci1", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pci2_hose.last_busno - pci2_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -364,6 +364,9 @@ static struct pci_controller pcie1_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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -372,9 +375,9 @@ 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;
 | 
			
		||||
	struct pci_config_table *table;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	uint pci_32 = gur->pordevsr & MPC85xx_PORDEVSR_PCI1_PCI32;	/* PORDEVSR[15] */
 | 
			
		||||
	uint pci_arb = gur->pordevsr & MPC85xx_PORDEVSR_PCI1_ARB;	/* PORDEVSR[14] */
 | 
			
		||||
| 
						 | 
				
			
			@ -396,27 +399,22 @@ pci_init_board(void)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
		/* 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;
 | 
			
		||||
 | 
			
		||||
		/* relocate config table pointers */
 | 
			
		||||
		hose->config_table = \
 | 
			
		||||
| 
						 | 
				
			
			@ -467,9 +465,9 @@ 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_ep =  (host_agent == 0) || (host_agent == 2 ) || (host_agent == 3);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	int pcie_configured  = io_sel >= 1;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -485,27 +483,27 @@ pci_init_board(void)
 | 
			
		|||
		printf ("\n");
 | 
			
		||||
 | 
			
		||||
		/* inbound */
 | 
			
		||||
		pci_set_region(hose->regions + 0,
 | 
			
		||||
		pci_set_region(r++,
 | 
			
		||||
			       CONFIG_SYS_PCI_MEMORY_BUS,
 | 
			
		||||
			       CONFIG_SYS_PCI_MEMORY_PHYS,
 | 
			
		||||
			       CONFIG_SYS_PCI_MEMORY_SIZE,
 | 
			
		||||
			       PCI_REGION_MEM | PCI_REGION_MEMORY);
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -531,41 +529,17 @@ int last_stage_init(void)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_OF_BOARD_SETUP)
 | 
			
		||||
void
 | 
			
		||||
ft_pci_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
extern void ft_fsl_pci_setup(void *blob, const char *pci_alias,
 | 
			
		||||
                        struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
	node = fdt_path_offset(blob, "/aliases");
 | 
			
		||||
	tmp[0] = 0;
 | 
			
		||||
	if (node >= 0) {
 | 
			
		||||
#ifdef CONFIG_PCI1
 | 
			
		||||
		const char *path;
 | 
			
		||||
		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);
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
		const char *path;
 | 
			
		||||
		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);
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_OF_BOARD_SETUP)
 | 
			
		||||
void
 | 
			
		||||
ft_board_setup(void *blob, bd_t *bd)
 | 
			
		||||
void ft_board_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
#ifdef CONFIG_PCI
 | 
			
		||||
	ft_pci_setup(blob, bd);
 | 
			
		||||
#ifdef CONFIG_PCI1
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci1", &pcie1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -220,6 +220,9 @@ static struct pci_controller pci2_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;
 | 
			
		||||
| 
						 | 
				
			
			@ -231,8 +234,8 @@ 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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
	uint host1_agent = (gur->porbmsr & MPC8641_PORBMSR_HA)
 | 
			
		||||
		>> MPC8641_PORBMSR_HA_SHIFT;
 | 
			
		||||
| 
						 | 
				
			
			@ -251,27 +254,23 @@ void pci_init_board(void)
 | 
			
		|||
		debug("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -293,32 +292,28 @@ void pci_init_board(void)
 | 
			
		|||
#ifdef CONFIG_PCI2
 | 
			
		||||
{
 | 
			
		||||
	volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI2_ADDR;
 | 
			
		||||
	extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
	struct pci_controller *hose = &pci2_hose;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	/* 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_PCI2_MEM_BASE,
 | 
			
		||||
		       CONFIG_SYS_PCI2_MEM_PHYS,
 | 
			
		||||
		       CONFIG_SYS_PCI2_MEM_SIZE,
 | 
			
		||||
		       PCI_REGION_MEM);
 | 
			
		||||
 | 
			
		||||
	/* outbound io */
 | 
			
		||||
	pci_set_region(hose->regions + 2,
 | 
			
		||||
	pci_set_region(r++,
 | 
			
		||||
		       CONFIG_SYS_PCI2_IO_BASE,
 | 
			
		||||
		       CONFIG_SYS_PCI2_IO_PHYS,
 | 
			
		||||
		       CONFIG_SYS_PCI2_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, (int) &pci->cfg_data);
 | 
			
		||||
| 
						 | 
				
			
			@ -337,34 +332,20 @@ 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)
 | 
			
		||||
void ft_board_setup (void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	int node, tmp[2];
 | 
			
		||||
	const char *path;
 | 
			
		||||
 | 
			
		||||
	ft_cpu_setup(blob, bd);
 | 
			
		||||
 | 
			
		||||
	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_PCI2
 | 
			
		||||
		path = fdt_getprop(blob, node, "pci1", NULL);
 | 
			
		||||
		if (path) {
 | 
			
		||||
			tmp[1] = pci2_hose.last_busno - pci2_hose.first_busno;
 | 
			
		||||
			do_fixup_by_path(blob, path, "bus-range", &tmp, 8, 1);
 | 
			
		||||
		}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void sbc8641d_reset_board (void)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -538,6 +538,9 @@ void local_bus_init (void)
 | 
			
		|||
 */
 | 
			
		||||
static int first_free_busno;
 | 
			
		||||
 | 
			
		||||
extern int fsl_pci_setup_inbound_windows(struct pci_region *r);
 | 
			
		||||
extern void fsl_pci_init(struct pci_controller *hose);
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_PCI) || defined(CONFIG_PCI1)
 | 
			
		||||
static struct pci_controller pci1_hose;
 | 
			
		||||
#endif /* CONFIG_PCI || CONFIG_PCI1 */
 | 
			
		||||
| 
						 | 
				
			
			@ -552,8 +555,8 @@ static inline void init_pci1(void)
 | 
			
		|||
#if defined(CONFIG_PCI) || defined(CONFIG_PCI1)
 | 
			
		||||
	uint host_agent = (gur->porbmsr & MPC85xx_PORBMSR_HA) >> 16;
 | 
			
		||||
	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;
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	/* PORDEVSR[15] */
 | 
			
		||||
	uint pci_32 = gur->pordevsr & MPC85xx_PORDEVSR_PCI1_PCI32;
 | 
			
		||||
| 
						 | 
				
			
			@ -578,28 +581,23 @@ static inline void init_pci1(void)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
		/* 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -641,10 +639,10 @@ static inline void init_pcie1(void)
 | 
			
		|||
	uint io_sel = (gur->pordevsr & MPC85xx_PORDEVSR_IO_SEL) >> 19;
 | 
			
		||||
	uint host_agent = (gur->porbmsr & MPC85xx_PORBMSR_HA) >> 16;
 | 
			
		||||
	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_ep =  (host_agent == 0) || (host_agent == 2 ) ||
 | 
			
		||||
		(host_agent == 3);
 | 
			
		||||
	struct pci_region *r = hose->regions;
 | 
			
		||||
 | 
			
		||||
	int pcie_configured  = io_sel >= 1;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -660,27 +658,23 @@ static inline void init_pcie1(void)
 | 
			
		|||
		puts ("\n");
 | 
			
		||||
 | 
			
		||||
		/* 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,
 | 
			
		||||
| 
						 | 
				
			
			@ -707,31 +701,19 @@ void pci_init_board (void)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#ifdef 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;
 | 
			
		||||
 | 
			
		||||
	ft_cpu_setup (blob, bd);
 | 
			
		||||
 | 
			
		||||
	node = fdt_path_offset (blob, "/aliases");
 | 
			
		||||
	tmp[0] = 0;
 | 
			
		||||
	if (node >= 0) {
 | 
			
		||||
#if defined(CONFIG_PCI) || defined(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);
 | 
			
		||||
		}
 | 
			
		||||
#endif /* CONFIG_PCI || CONFIG_PCI1 */
 | 
			
		||||
	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);
 | 
			
		||||
		}
 | 
			
		||||
#endif /* CONFIG_PCIE1 */
 | 
			
		||||
	}
 | 
			
		||||
	ft_fsl_pci_setup(blob, "pci1", &pcie1_hose);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#endif /* CONFIG_OF_BOARD_SETUP */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,6 +35,33 @@
 | 
			
		|||
 */
 | 
			
		||||
DECLARE_GLOBAL_DATA_PTR;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * fdt_getprop_u32_default - Find a node and return it's property or a default
 | 
			
		||||
 *
 | 
			
		||||
 * @fdt: ptr to device tree
 | 
			
		||||
 * @path: path of node
 | 
			
		||||
 * @prop: property name
 | 
			
		||||
 * @dflt: default value if the property isn't found
 | 
			
		||||
 *
 | 
			
		||||
 * Convenience function to find a node and return it's property or a
 | 
			
		||||
 * default value if it doesn't exist.
 | 
			
		||||
 */
 | 
			
		||||
u32 fdt_getprop_u32_default(void *fdt, const char *path, const char *prop,
 | 
			
		||||
				const u32 dflt)
 | 
			
		||||
{
 | 
			
		||||
	const u32 *val;
 | 
			
		||||
	int off;
 | 
			
		||||
 | 
			
		||||
	off = fdt_path_offset(fdt, path);
 | 
			
		||||
	if (off < 0)
 | 
			
		||||
		return dflt;
 | 
			
		||||
 | 
			
		||||
	val = fdt_getprop(fdt, off, prop, NULL);
 | 
			
		||||
	if (val)
 | 
			
		||||
		return *val;
 | 
			
		||||
	else
 | 
			
		||||
		return dflt;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * fdt_find_and_setprop: Find a node and set it's property
 | 
			
		||||
| 
						 | 
				
			
			@ -593,3 +620,72 @@ int fdt_resize(void *blob)
 | 
			
		|||
 | 
			
		||||
	return actualsize;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCI
 | 
			
		||||
#define CONFIG_SYS_PCI_NR_INBOUND_WIN 3
 | 
			
		||||
 | 
			
		||||
#define FDT_PCI_PREFETCH	(0x40000000)
 | 
			
		||||
#define FDT_PCI_MEM32		(0x02000000)
 | 
			
		||||
#define FDT_PCI_IO		(0x01000000)
 | 
			
		||||
#define FDT_PCI_MEM64		(0x03000000)
 | 
			
		||||
 | 
			
		||||
int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose) {
 | 
			
		||||
 | 
			
		||||
	int addrcell, sizecell, len, r;
 | 
			
		||||
	u32 *dma_range;
 | 
			
		||||
	/* sized based on pci addr cells, size-cells, & address-cells */
 | 
			
		||||
	u32 dma_ranges[(3 + 2 + 2) * CONFIG_SYS_PCI_NR_INBOUND_WIN];
 | 
			
		||||
 | 
			
		||||
	addrcell = fdt_getprop_u32_default(blob, "/", "#address-cells", 1);
 | 
			
		||||
	sizecell = fdt_getprop_u32_default(blob, "/", "#size-cells", 1);
 | 
			
		||||
 | 
			
		||||
	dma_range = &dma_ranges[0];
 | 
			
		||||
	for (r = 0; r < hose->region_count; r++) {
 | 
			
		||||
		u64 bus_start, phys_start, size;
 | 
			
		||||
 | 
			
		||||
		/* skip if !PCI_REGION_MEMORY */
 | 
			
		||||
		if (!(hose->regions[r].flags & PCI_REGION_MEMORY))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		bus_start = (u64)hose->regions[r].bus_start;
 | 
			
		||||
		phys_start = (u64)hose->regions[r].phys_start;
 | 
			
		||||
		size = (u64)hose->regions[r].size;
 | 
			
		||||
 | 
			
		||||
		dma_range[0] = 0;
 | 
			
		||||
		if (size > 0x100000000ull)
 | 
			
		||||
			dma_range[0] |= FDT_PCI_MEM64;
 | 
			
		||||
		else
 | 
			
		||||
			dma_range[0] |= FDT_PCI_MEM32;
 | 
			
		||||
		if (hose->regions[r].flags & PCI_REGION_PREFETCH)
 | 
			
		||||
			dma_range[0] |= FDT_PCI_PREFETCH;
 | 
			
		||||
#ifdef CONFIG_SYS_PCI_64BIT
 | 
			
		||||
		dma_range[1] = bus_start >> 32;
 | 
			
		||||
#else
 | 
			
		||||
		dma_range[1] = 0;
 | 
			
		||||
#endif
 | 
			
		||||
		dma_range[2] = bus_start & 0xffffffff;
 | 
			
		||||
 | 
			
		||||
		if (addrcell == 2) {
 | 
			
		||||
			dma_range[3] = phys_start >> 32;
 | 
			
		||||
			dma_range[4] = phys_start & 0xffffffff;
 | 
			
		||||
		} else {
 | 
			
		||||
			dma_range[3] = phys_start & 0xffffffff;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (sizecell == 2) {
 | 
			
		||||
			dma_range[3 + addrcell + 0] = size >> 32;
 | 
			
		||||
			dma_range[3 + addrcell + 1] = size & 0xffffffff;
 | 
			
		||||
		} else {
 | 
			
		||||
			dma_range[3 + addrcell + 0] = size & 0xffffffff;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		dma_range += (3 + addrcell + sizecell);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	len = dma_range - &dma_ranges[0];
 | 
			
		||||
	if (len)
 | 
			
		||||
		fdt_setprop(blob, phb_off, "dma-ranges", &dma_ranges[0], len*4);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -134,6 +134,10 @@ int checkcpu (void)
 | 
			
		|||
	    puts("Unknown");
 | 
			
		||||
	    break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (PVR_MEM(pvr) == 0x03)
 | 
			
		||||
		puts("MC");
 | 
			
		||||
 | 
			
		||||
	printf(", Version: %d.%d, (0x%08x)\n", major, minor, pvr);
 | 
			
		||||
 | 
			
		||||
	get_sys_info(&sysinfo);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,15 +79,18 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
 | 
			
		|||
	out_be32(&ddr->ddr_sdram_rcw_2, regs->ddr_sdram_rcw_2);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * 32-bit workaround for DDR2
 | 
			
		||||
	 * 32_BE
 | 
			
		||||
	 * For 8572 DDR1 erratum - DDR controller may enter illegal state
 | 
			
		||||
	 * when operatiing in 32-bit bus mode with 4-beat bursts,
 | 
			
		||||
	 * This erratum does not affect DDR3 mode, only for DDR2 mode.
 | 
			
		||||
	 */
 | 
			
		||||
#ifdef CONFIG_MPC8572
 | 
			
		||||
	if ((((in_be32(&ddr->sdram_cfg) >> 24) & 0x7) == SDRAM_TYPE_DDR2)
 | 
			
		||||
	    && in_be32(&ddr->sdram_cfg_2) & 0x80000) {
 | 
			
		||||
	    && in_be32(&ddr->sdram_cfg) & 0x80000) {
 | 
			
		||||
		/* set DEBUG_1[31] */
 | 
			
		||||
		u32 temp = in_be32(&ddr->debug_1);
 | 
			
		||||
		out_be32(&ddr->debug_1, temp | 1);
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * 200 painful micro-seconds must elapse between
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,14 +24,18 @@
 | 
			
		|||
__secondary_start_page:
 | 
			
		||||
/* First do some preliminary setup */
 | 
			
		||||
	lis	r3, HID0_EMCP@h		/* enable machine check */
 | 
			
		||||
#ifndef CONFIG_E500MC
 | 
			
		||||
	ori	r3,r3,HID0_TBEN@l	/* enable Timebase */
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PHYS_64BIT
 | 
			
		||||
	ori	r3,r3,HID0_ENMAS7@l	/* enable MAS7 updates */
 | 
			
		||||
#endif
 | 
			
		||||
	mtspr	SPRN_HID0,r3
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_E500MC
 | 
			
		||||
	li	r3,(HID1_ASTME|HID1_ABE)@l	/* Addr streaming & broadcast */
 | 
			
		||||
	mtspr	SPRN_HID1,r3
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* Enable branch prediction */
 | 
			
		||||
	li	r3,0x201
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +68,11 @@ __secondary_start_page:
 | 
			
		|||
 | 
			
		||||
	/* r10 has the base address for the entry */
 | 
			
		||||
	mfspr	r0,SPRN_PIR
 | 
			
		||||
#ifdef CONFIG_E500MC
 | 
			
		||||
	rlwinm	r4,r0,27,27,31
 | 
			
		||||
#else
 | 
			
		||||
	mr	r4,r0
 | 
			
		||||
#endif
 | 
			
		||||
	slwi	r8,r4,5
 | 
			
		||||
	add	r10,r3,r8
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -163,8 +163,10 @@ _start_e500:
 | 
			
		|||
	ori	r0,r0,HID0_TBEN@l	/* Enable Timebase */
 | 
			
		||||
	mtspr	HID0,r0
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_E500MC
 | 
			
		||||
	li	r0,(HID1_ASTME|HID1_ABE)@l	/* Addr streaming & broadcast */
 | 
			
		||||
	mtspr	HID1,r0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* Enable Branch Prediction */
 | 
			
		||||
#if defined(CONFIG_BTB)
 | 
			
		||||
| 
						 | 
				
			
			@ -998,8 +1000,8 @@ trap_reloc:
 | 
			
		|||
.globl unlock_ram_in_cache
 | 
			
		||||
unlock_ram_in_cache:
 | 
			
		||||
	/* invalidate the INIT_RAM section */
 | 
			
		||||
	lis	r3,(CONFIG_SYS_INIT_RAM_ADDR & ~31)@h
 | 
			
		||||
	ori	r3,r3,(CONFIG_SYS_INIT_RAM_ADDR & ~31)@l
 | 
			
		||||
	lis	r3,(CONFIG_SYS_INIT_RAM_ADDR & ~(CONFIG_SYS_CACHELINE_SIZE-1))@h
 | 
			
		||||
	ori	r3,r3,(CONFIG_SYS_INIT_RAM_ADDR & ~(CONFIG_SYS_CACHELINE_SIZE-1))@l
 | 
			
		||||
	mfspr	r4,L1CFG0
 | 
			
		||||
	andi.	r4,r4,0x1ff
 | 
			
		||||
	slwi	r4,r4,(10 - 1 - L1_CACHE_SHIFT)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,8 @@
 | 
			
		|||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
 | 
			
		||||
DECLARE_GLOBAL_DATA_PTR;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * PCI/PCIE Controller initialization for mpc85xx/mpc86xx soc's
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -39,10 +41,88 @@ void pciauto_prescan_setup_bridge(struct pci_controller *hose,
 | 
			
		|||
				pci_dev_t dev, int sub_bus);
 | 
			
		||||
void pciauto_postscan_setup_bridge(struct pci_controller *hose,
 | 
			
		||||
				pci_dev_t dev, int sub_bus);
 | 
			
		||||
 | 
			
		||||
void pciauto_config_init(struct pci_controller *hose);
 | 
			
		||||
void
 | 
			
		||||
fsl_pci_init(struct pci_controller *hose)
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_SYS_PCI_MEMORY_BUS
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_SYS_PCI_MEMORY_PHYS
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_SYS_PCI_64BIT) && !defined(CONFIG_SYS_PCI64_MEMORY_BUS)
 | 
			
		||||
#define CONFIG_SYS_PCI64_MEMORY_BUS (64ull*1024*1024*1024)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int fsl_pci_setup_inbound_windows(struct pci_region *r)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_region *rgn_base = r;
 | 
			
		||||
	u64 sz = min((u64)gd->ram_size, 1ull << 32);
 | 
			
		||||
 | 
			
		||||
	phys_addr_t phys_start = CONFIG_SYS_PCI_MEMORY_PHYS;
 | 
			
		||||
	pci_addr_t bus_start = CONFIG_SYS_PCI_MEMORY_BUS;
 | 
			
		||||
	pci_size_t pci_sz = 1ull << __ilog2_u64(sz);
 | 
			
		||||
 | 
			
		||||
	debug ("R0 bus_start: %llx phys_start: %llx size: %llx\n",
 | 
			
		||||
		(u64)bus_start, (u64)phys_start, (u64)pci_sz);
 | 
			
		||||
	pci_set_region(r++, bus_start, phys_start, pci_sz,
 | 
			
		||||
			PCI_REGION_MEM | PCI_REGION_MEMORY | \
 | 
			
		||||
			PCI_REGION_PREFETCH);
 | 
			
		||||
 | 
			
		||||
	sz -= pci_sz;
 | 
			
		||||
	bus_start += pci_sz;
 | 
			
		||||
	phys_start += pci_sz;
 | 
			
		||||
 | 
			
		||||
	pci_sz = 1ull << __ilog2_u64(sz);
 | 
			
		||||
	if (sz) {
 | 
			
		||||
		debug ("R1 bus_start: %llx phys_start: %llx size: %llx\n",
 | 
			
		||||
			(u64)bus_start, (u64)phys_start, (u64)pci_sz);
 | 
			
		||||
		pci_set_region(r++, bus_start, phys_start, pci_sz,
 | 
			
		||||
				PCI_REGION_MEM | PCI_REGION_MEMORY | \
 | 
			
		||||
				PCI_REGION_PREFETCH);
 | 
			
		||||
		sz -= pci_sz;
 | 
			
		||||
		bus_start += pci_sz;
 | 
			
		||||
		phys_start += pci_sz;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_PHYS_64BIT) && defined(CONFIG_SYS_PCI_64BIT)
 | 
			
		||||
	pci_sz = 1ull << __ilog2_u64(gd->ram_size);
 | 
			
		||||
	/* round up to the next largest power of two */
 | 
			
		||||
	if (gd->ram_size > pci_sz)
 | 
			
		||||
		sz = 1ull << (__ilog2_u64(gd->ram_size) + 1);
 | 
			
		||||
	debug ("R64 bus_start: %llx phys_start: %llx size: %llx\n",
 | 
			
		||||
		(u64)CONFIG_SYS_PCI_MEMORY_BUS,
 | 
			
		||||
		(u64)CONFIG_SYS_PCI_MEMORY_PHYS,
 | 
			
		||||
		(u64)pci_sz);
 | 
			
		||||
	pci_set_region(r++,
 | 
			
		||||
			CONFIG_SYS_PCI_MEMORY_BUS,
 | 
			
		||||
			CONFIG_SYS_PCI_MEMORY_PHYS,
 | 
			
		||||
			pci_sz,
 | 
			
		||||
			PCI_REGION_MEM | PCI_REGION_MEMORY | \
 | 
			
		||||
			PCI_REGION_PREFETCH);
 | 
			
		||||
#else
 | 
			
		||||
	pci_sz = 1ull << __ilog2_u64(sz);
 | 
			
		||||
	if (sz) {
 | 
			
		||||
		debug ("R2 bus_start: %llx phys_start: %llx size: %llx\n",
 | 
			
		||||
			(u64)bus_start, (u64)phys_start, (u64)pci_sz);
 | 
			
		||||
		pci_set_region(r++, bus_start, phys_start, pci_sz,
 | 
			
		||||
				PCI_REGION_MEM | PCI_REGION_MEMORY | \
 | 
			
		||||
				PCI_REGION_PREFETCH);
 | 
			
		||||
		sz -= pci_sz;
 | 
			
		||||
		bus_start += pci_sz;
 | 
			
		||||
		phys_start += pci_sz;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if (sz && (((u64)gd->ram_size) < (1ull << 32)))
 | 
			
		||||
		printf("Was not able to map all of memory via "
 | 
			
		||||
			"inbound windows -- %lld remaining\n", sz);
 | 
			
		||||
 | 
			
		||||
	return r - rgn_base;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void fsl_pci_init(struct pci_controller *hose)
 | 
			
		||||
{
 | 
			
		||||
	u16 temp16;
 | 
			
		||||
	u32 temp32;
 | 
			
		||||
| 
						 | 
				
			
			@ -65,25 +145,36 @@ fsl_pci_init(struct pci_controller *hose)
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
	for (r=0; r<hose->region_count; r++) {
 | 
			
		||||
		u32 sz = (__ilog2_u64((u64)hose->regions[r].size) - 1);
 | 
			
		||||
		if (hose->regions[r].flags & PCI_REGION_MEMORY) { /* inbound */
 | 
			
		||||
			pi->pitar = (hose->regions[r].bus_start >> 12) & 0x000fffff;
 | 
			
		||||
			pi->piwbar = (hose->regions[r].phys_start >> 12) & 0x000fffff;
 | 
			
		||||
			u32 flag = PIWAR_EN | PIWAR_LOCAL | \
 | 
			
		||||
					PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP;
 | 
			
		||||
			pi->pitar = (hose->regions[r].phys_start >> 12);
 | 
			
		||||
			pi->piwbar = (hose->regions[r].bus_start >> 12);
 | 
			
		||||
#ifdef CONFIG_SYS_PCI_64BIT
 | 
			
		||||
			pi->piwbear = (hose->regions[r].bus_start >> 44);
 | 
			
		||||
#else
 | 
			
		||||
			pi->piwbear = 0;
 | 
			
		||||
			pi->piwar = PIWAR_EN | PIWAR_PF | PIWAR_LOCAL |
 | 
			
		||||
				PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP |
 | 
			
		||||
				(__ilog2(hose->regions[r].size) - 1);
 | 
			
		||||
#endif
 | 
			
		||||
			if (hose->regions[r].flags & PCI_REGION_PREFETCH)
 | 
			
		||||
				flag |= PIWAR_PF;
 | 
			
		||||
			pi->piwar = flag | sz;
 | 
			
		||||
			pi++;
 | 
			
		||||
			inbound = hose->regions[r].size > 0;
 | 
			
		||||
		} else { /* Outbound */
 | 
			
		||||
			po->powbar = (hose->regions[r].phys_start >> 12) & 0x000fffff;
 | 
			
		||||
			po->potar = (hose->regions[r].bus_start >> 12) & 0x000fffff;
 | 
			
		||||
			po->powbar = (hose->regions[r].phys_start >> 12);
 | 
			
		||||
			po->potar = (hose->regions[r].bus_start >> 12);
 | 
			
		||||
#ifdef CONFIG_SYS_PCI_64BIT
 | 
			
		||||
			po->potear = (hose->regions[r].bus_start >> 44);
 | 
			
		||||
#else
 | 
			
		||||
			po->potear = 0;
 | 
			
		||||
#endif
 | 
			
		||||
			if (hose->regions[r].flags & PCI_REGION_IO)
 | 
			
		||||
				po->powar = POWAR_EN | POWAR_IO_READ | POWAR_IO_WRITE |
 | 
			
		||||
					(__ilog2(hose->regions[r].size) - 1);
 | 
			
		||||
				po->powar = POWAR_EN | sz | \
 | 
			
		||||
					POWAR_IO_READ | POWAR_IO_WRITE;
 | 
			
		||||
			else
 | 
			
		||||
				po->powar = POWAR_EN | POWAR_MEM_READ | POWAR_MEM_WRITE |
 | 
			
		||||
					(__ilog2(hose->regions[r].size) - 1);
 | 
			
		||||
				po->powar = POWAR_EN | sz | \
 | 
			
		||||
					POWAR_MEM_READ | POWAR_MEM_WRITE;
 | 
			
		||||
			po++;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -208,3 +299,23 @@ fsl_pci_init(struct pci_controller *hose)
 | 
			
		|||
		pci_hose_write_config_word(hose, dev, PCI_SEC_STATUS, 0xffff);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_OF_BOARD_SETUP
 | 
			
		||||
#include <libfdt.h>
 | 
			
		||||
#include <fdt_support.h>
 | 
			
		||||
 | 
			
		||||
void ft_fsl_pci_setup(void *blob, const char *pci_alias,
 | 
			
		||||
			struct pci_controller *hose)
 | 
			
		||||
{
 | 
			
		||||
	int off = fdt_path_offset(blob, pci_alias);
 | 
			
		||||
 | 
			
		||||
	if (off >= 0) {
 | 
			
		||||
		u32 bus_range[2];
 | 
			
		||||
 | 
			
		||||
		bus_range[0] = 0;
 | 
			
		||||
		bus_range[1] = hose->last_busno - hose->first_busno;
 | 
			
		||||
		fdt_setprop(blob, off, "bus-range", &bus_range[0], 2*4);
 | 
			
		||||
		fdt_pci_dma_ranges(blob, off, hose);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -218,12 +218,12 @@ pci_dev_t pci_find_device(unsigned int vendor, unsigned int device, int index)
 | 
			
		|||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
unsigned long pci_hose_phys_to_bus (struct pci_controller *hose,
 | 
			
		||||
pci_addr_t pci_hose_phys_to_bus (struct pci_controller *hose,
 | 
			
		||||
				    phys_addr_t phys_addr,
 | 
			
		||||
				    unsigned long flags)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_region *res;
 | 
			
		||||
	unsigned long bus_addr;
 | 
			
		||||
	pci_addr_t bus_addr;
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	if (!hose) {
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +252,7 @@ Done:
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
 | 
			
		||||
				 unsigned long bus_addr,
 | 
			
		||||
				 pci_addr_t bus_addr,
 | 
			
		||||
				 unsigned long flags)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_region *res;
 | 
			
		||||
| 
						 | 
				
			
			@ -288,15 +288,17 @@ Done:
 | 
			
		|||
int pci_hose_config_device(struct pci_controller *hose,
 | 
			
		||||
			   pci_dev_t dev,
 | 
			
		||||
			   unsigned long io,
 | 
			
		||||
			   unsigned long mem,
 | 
			
		||||
			   pci_addr_t mem,
 | 
			
		||||
			   unsigned long command)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int bar_response, bar_size, bar_value, old_command;
 | 
			
		||||
	unsigned int bar_response, old_command;
 | 
			
		||||
	pci_addr_t bar_value;
 | 
			
		||||
	pci_size_t bar_size;
 | 
			
		||||
	unsigned char pin;
 | 
			
		||||
	int bar, found_mem64;
 | 
			
		||||
 | 
			
		||||
	debug ("PCI Config: I/O=0x%lx, Memory=0x%lx, Command=0x%lx\n",
 | 
			
		||||
		io, mem, command);
 | 
			
		||||
	debug ("PCI Config: I/O=0x%lx, Memory=0x%llx, Command=0x%lx\n",
 | 
			
		||||
		io, (u64)mem, command);
 | 
			
		||||
 | 
			
		||||
	pci_hose_write_config_dword (hose, dev, PCI_COMMAND, 0);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -319,10 +321,19 @@ int pci_hose_config_device(struct pci_controller *hose,
 | 
			
		|||
			io = io + bar_size;
 | 
			
		||||
		} else {
 | 
			
		||||
			if ((bar_response & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
 | 
			
		||||
				PCI_BASE_ADDRESS_MEM_TYPE_64)
 | 
			
		||||
				found_mem64 = 1;
 | 
			
		||||
				PCI_BASE_ADDRESS_MEM_TYPE_64) {
 | 
			
		||||
				u32 bar_response_upper;
 | 
			
		||||
				u64 bar64;
 | 
			
		||||
				pci_hose_write_config_dword(hose, dev, bar+4, 0xffffffff);
 | 
			
		||||
				pci_hose_read_config_dword(hose, dev, bar+4, &bar_response_upper);
 | 
			
		||||
 | 
			
		||||
			bar_size = ~(bar_response & PCI_BASE_ADDRESS_MEM_MASK) + 1;
 | 
			
		||||
				bar64 = ((u64)bar_response_upper << 32) | bar_response;
 | 
			
		||||
 | 
			
		||||
				bar_size = ~(bar64 & PCI_BASE_ADDRESS_MEM_MASK) + 1;
 | 
			
		||||
				found_mem64 = 1;
 | 
			
		||||
			} else {
 | 
			
		||||
				bar_size = (u32)(~(bar_response & PCI_BASE_ADDRESS_MEM_MASK) + 1);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/* round up region base address to multiple of size */
 | 
			
		||||
			mem = ((mem - 1) | (bar_size - 1)) + 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -332,11 +343,15 @@ int pci_hose_config_device(struct pci_controller *hose,
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		/* Write it out and update our limit */
 | 
			
		||||
		pci_hose_write_config_dword (hose, dev, bar, bar_value);
 | 
			
		||||
		pci_hose_write_config_dword (hose, dev, bar, (u32)bar_value);
 | 
			
		||||
 | 
			
		||||
		if (found_mem64) {
 | 
			
		||||
			bar += 4;
 | 
			
		||||
#ifdef CONFIG_SYS_PCI_64BIT
 | 
			
		||||
			pci_hose_write_config_dword(hose, dev, bar, (u32)(bar_value>>32));
 | 
			
		||||
#else
 | 
			
		||||
			pci_hose_write_config_dword (hose, dev, bar, 0x00000000);
 | 
			
		||||
#endif
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,14 +45,14 @@ void pciauto_region_init(struct pci_region* res)
 | 
			
		|||
	res->bus_lower = res->bus_start ? res->bus_start : 0x1000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void pciauto_region_align(struct pci_region *res, unsigned long size)
 | 
			
		||||
void pciauto_region_align(struct pci_region *res, pci_size_t size)
 | 
			
		||||
{
 | 
			
		||||
	res->bus_lower = ((res->bus_lower - 1) | (size - 1)) + 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int pciauto_region_allocate(struct pci_region* res, unsigned int size, unsigned int *bar)
 | 
			
		||||
int pciauto_region_allocate(struct pci_region* res, pci_size_t size, pci_addr_t *bar)
 | 
			
		||||
{
 | 
			
		||||
	unsigned long addr;
 | 
			
		||||
	pci_addr_t addr;
 | 
			
		||||
 | 
			
		||||
	if (!res) {
 | 
			
		||||
		DEBUGF("No resource");
 | 
			
		||||
| 
						 | 
				
			
			@ -68,13 +68,13 @@ int pciauto_region_allocate(struct pci_region* res, unsigned int size, unsigned
 | 
			
		|||
 | 
			
		||||
	res->bus_lower = addr + size;
 | 
			
		||||
 | 
			
		||||
	DEBUGF("address=0x%lx bus_lower=%x", addr, res->bus_lower);
 | 
			
		||||
	DEBUGF("address=0x%llx bus_lower=0x%llx", (u64)addr, (u64)res->bus_lower);
 | 
			
		||||
 | 
			
		||||
	*bar = addr;
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
 error:
 | 
			
		||||
	*bar = 0xffffffff;
 | 
			
		||||
	*bar = (pci_addr_t)-1;
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +88,9 @@ void pciauto_setup_device(struct pci_controller *hose,
 | 
			
		|||
			  struct pci_region *prefetch,
 | 
			
		||||
			  struct pci_region *io)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int bar_value, bar_response, bar_size;
 | 
			
		||||
	unsigned int bar_response;
 | 
			
		||||
	pci_addr_t bar_value;
 | 
			
		||||
	pci_size_t bar_size;
 | 
			
		||||
	unsigned int cmdstat = 0;
 | 
			
		||||
	struct pci_region *bar_res;
 | 
			
		||||
	int bar, bar_nr = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -114,33 +116,46 @@ void pciauto_setup_device(struct pci_controller *hose,
 | 
			
		|||
				   & 0xffff) + 1;
 | 
			
		||||
			bar_res = io;
 | 
			
		||||
 | 
			
		||||
			DEBUGF("PCI Autoconfig: BAR %d, I/O, size=0x%x, ", bar_nr, bar_size);
 | 
			
		||||
			DEBUGF("PCI Autoconfig: BAR %d, I/O, size=0x%llx, ", bar_nr, (u64)bar_size);
 | 
			
		||||
		} else {
 | 
			
		||||
			if ( (bar_response & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
 | 
			
		||||
			     PCI_BASE_ADDRESS_MEM_TYPE_64)
 | 
			
		||||
				found_mem64 = 1;
 | 
			
		||||
			     PCI_BASE_ADDRESS_MEM_TYPE_64) {
 | 
			
		||||
				u32 bar_response_upper;
 | 
			
		||||
				u64 bar64;
 | 
			
		||||
				pci_hose_write_config_dword(hose, dev, bar+4, 0xffffffff);
 | 
			
		||||
				pci_hose_read_config_dword(hose, dev, bar+4, &bar_response_upper);
 | 
			
		||||
 | 
			
		||||
			bar_size = ~(bar_response & PCI_BASE_ADDRESS_MEM_MASK) + 1;
 | 
			
		||||
				bar64 = ((u64)bar_response_upper << 32) | bar_response;
 | 
			
		||||
 | 
			
		||||
				bar_size = ~(bar64 & PCI_BASE_ADDRESS_MEM_MASK) + 1;
 | 
			
		||||
				found_mem64 = 1;
 | 
			
		||||
			} else {
 | 
			
		||||
				bar_size = (u32)(~(bar_response & PCI_BASE_ADDRESS_MEM_MASK) + 1);
 | 
			
		||||
			}
 | 
			
		||||
			if (prefetch && (bar_response & PCI_BASE_ADDRESS_MEM_PREFETCH))
 | 
			
		||||
				bar_res = prefetch;
 | 
			
		||||
			else
 | 
			
		||||
				bar_res = mem;
 | 
			
		||||
 | 
			
		||||
			DEBUGF("PCI Autoconfig: BAR %d, Mem, size=0x%x, ", bar_nr, bar_size);
 | 
			
		||||
			DEBUGF("PCI Autoconfig: BAR %d, Mem, size=0x%llx, ", bar_nr, (u64)bar_size);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (pciauto_region_allocate(bar_res, bar_size, &bar_value) == 0) {
 | 
			
		||||
			/* Write it out and update our limit */
 | 
			
		||||
			pci_hose_write_config_dword(hose, dev, bar, bar_value);
 | 
			
		||||
			pci_hose_write_config_dword(hose, dev, bar, (u32)bar_value);
 | 
			
		||||
 | 
			
		||||
			if (found_mem64) {
 | 
			
		||||
				bar += 4;
 | 
			
		||||
#ifdef CONFIG_SYS_PCI_64BIT
 | 
			
		||||
				pci_hose_write_config_dword(hose, dev, bar, (u32)(bar_value>>32));
 | 
			
		||||
#else
 | 
			
		||||
				/*
 | 
			
		||||
				 * If we are a 64-bit decoder then increment to the
 | 
			
		||||
				 * upper 32 bits of the bar and force it to locate
 | 
			
		||||
				 * in the lower 4GB of memory.
 | 
			
		||||
				 */
 | 
			
		||||
			if (found_mem64) {
 | 
			
		||||
				bar += 4;
 | 
			
		||||
				pci_hose_write_config_dword(hose, dev, bar, 0x00000000);
 | 
			
		||||
#endif
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			cmdstat |= (bar_response & PCI_BASE_ADDRESS_SPACE) ?
 | 
			
		||||
| 
						 | 
				
			
			@ -289,35 +304,36 @@ void pciauto_config_init(struct pci_controller *hose)
 | 
			
		|||
	if (hose->pci_mem) {
 | 
			
		||||
		pciauto_region_init(hose->pci_mem);
 | 
			
		||||
 | 
			
		||||
		DEBUGF("PCI Autoconfig: Bus Memory region: [%lx-%lx],\n"
 | 
			
		||||
		       "\t\tPhysical Memory [%x-%x]\n",
 | 
			
		||||
		    hose->pci_mem->bus_start,
 | 
			
		||||
		    hose->pci_mem->bus_start + hose->pci_mem->size - 1,
 | 
			
		||||
		    hose->pci_mem->phys_start,
 | 
			
		||||
		    hose->pci_mem->phys_start + hose->pci_mem->size - 1);
 | 
			
		||||
		DEBUGF("PCI Autoconfig: Bus Memory region: [0x%llx-0x%llx],\n"
 | 
			
		||||
		       "\t\tPhysical Memory [%llx-%llxx]\n",
 | 
			
		||||
		    (u64)hose->pci_mem->bus_start,
 | 
			
		||||
		    (u64)(hose->pci_mem->bus_start + hose->pci_mem->size - 1),
 | 
			
		||||
		    (u64)hose->pci_mem->phys_start,
 | 
			
		||||
		    (u64)(hose->pci_mem->phys_start + hose->pci_mem->size - 1));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (hose->pci_prefetch) {
 | 
			
		||||
		pciauto_region_init(hose->pci_prefetch);
 | 
			
		||||
 | 
			
		||||
		DEBUGF("PCI Autoconfig: Bus Prefetchable Mem: [%lx-%lx],\n"
 | 
			
		||||
		       "\t\tPhysical Memory [%x-%x]\n",
 | 
			
		||||
		    hose->pci_prefetch->bus_start,
 | 
			
		||||
		    hose->pci_prefetch->bus_start + hose->pci_prefetch->size - 1,
 | 
			
		||||
		    hose->pci_prefetch->phys_start,
 | 
			
		||||
		    hose->pci_prefetch->phys_start +
 | 
			
		||||
				hose->pci_prefetch->size - 1);
 | 
			
		||||
		DEBUGF("PCI Autoconfig: Bus Prefetchable Mem: [0x%llx-0x%llx],\n"
 | 
			
		||||
		       "\t\tPhysical Memory [%llx-%llx]\n",
 | 
			
		||||
		    (u64)hose->pci_prefetch->bus_start,
 | 
			
		||||
		    (u64)(hose->pci_prefetch->bus_start +
 | 
			
		||||
			    hose->pci_prefetch->size - 1),
 | 
			
		||||
		    (u64)hose->pci_prefetch->phys_start,
 | 
			
		||||
		    (u64)(hose->pci_prefetch->phys_start +
 | 
			
		||||
			    hose->pci_prefetch->size - 1));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (hose->pci_io) {
 | 
			
		||||
		pciauto_region_init(hose->pci_io);
 | 
			
		||||
 | 
			
		||||
		DEBUGF("PCI Autoconfig: Bus I/O region: [%lx-%lx],\n"
 | 
			
		||||
		       "\t\tPhysical Memory: [%x-%x]\n",
 | 
			
		||||
		    hose->pci_io->bus_start,
 | 
			
		||||
		    hose->pci_io->bus_start + hose->pci_io->size - 1,
 | 
			
		||||
		    hose->pci_io->phys_start,
 | 
			
		||||
		    hose->pci_io->phys_start + hose->pci_io->size - 1);
 | 
			
		||||
		DEBUGF("PCI Autoconfig: Bus I/O region: [0x%llx-0x%llx],\n"
 | 
			
		||||
		       "\t\tPhysical Memory: [%llx-%llx]\n",
 | 
			
		||||
		    (u64)hose->pci_io->bus_start,
 | 
			
		||||
		    (u64)(hose->pci_io->bus_start + hose->pci_io->size - 1),
 | 
			
		||||
		    (u64)hose->pci_io->phys_start,
 | 
			
		||||
		    (u64)(hose->pci_io->phys_start + hose->pci_io->size - 1));
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,8 @@
 | 
			
		|||
#define	L1_CACHE_SHIFT	4
 | 
			
		||||
#elif defined(CONFIG_PPC64BRIDGE)
 | 
			
		||||
#define L1_CACHE_SHIFT	7
 | 
			
		||||
#elif defined(CONFIG_E500MC)
 | 
			
		||||
#define L1_CACHE_SHIFT	6
 | 
			
		||||
#else
 | 
			
		||||
#define	L1_CACHE_SHIFT	5
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -287,11 +287,6 @@
 | 
			
		|||
 | 
			
		||||
#undef CONFIG_PCI_SCAN_SHOW		/* show pci devices on startup */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
#endif	/* CONFIG_PCI */
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_TSEC_ENET)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,7 @@
 | 
			
		|||
#define CONFIG_PCIE3		1	/* PCIE controler 3 (ULI bridge) */
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* Use common FSL init code */
 | 
			
		||||
#define CONFIG_FSL_PCIE_RESET	1	/* need PCIe reset errata */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL init code */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -134,14 +135,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
 | 
			
		|||
#define CONFIG_SYS_DDR_ERR_DIS		0x00000000
 | 
			
		||||
#define CONFIG_SYS_DDR_SBE		0x00010000
 | 
			
		||||
 | 
			
		||||
/* FIXME: Not used in fixed_sdram function */
 | 
			
		||||
#define CONFIG_SYS_DDR_MODE		0x00000022
 | 
			
		||||
#define CONFIG_SYS_DDR_CS1_BNDS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_DDR_CS2_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
#define CONFIG_SYS_DDR_CS3_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
#define CONFIG_SYS_DDR_CS4_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
#define CONFIG_SYS_DDR_CS5_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
 | 
			
		||||
/* Make sure required options are set */
 | 
			
		||||
#ifndef CONFIG_SPD_EEPROM
 | 
			
		||||
#error ("CONFIG_SPD_EEPROM is required")
 | 
			
		||||
| 
						 | 
				
			
			@ -314,11 +307,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
 | 
			
		|||
 * Memory space is mapped 1-1, but I/O space must start from 0.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_PCI1_MEM_BASE	0x80000000
 | 
			
		||||
#define CONFIG_SYS_PCI1_MEM_PHYS	CONFIG_SYS_PCI1_MEM_BASE
 | 
			
		||||
#define CONFIG_SYS_PCI1_MEM_SIZE	0x10000000	/* 256M */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,6 +46,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#define CONFIG_PCI
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL init code */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@
 | 
			
		|||
#define CONFIG_MPC8541CDS	1	/* MPC8541CDS board specific */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_PCI
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,7 @@
 | 
			
		|||
#define CONFIG_PCIE3		1	/* PCIE controler 3 (ULI bridge) */
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* Use common FSL init code */
 | 
			
		||||
#define CONFIG_FSL_PCIE_RESET	1	/* need PCIe reset errata */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL init code */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -275,11 +276,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 | 
			
		|||
#define CONFIG_SYS_PCI1_IO_PHYS	0xe1000000
 | 
			
		||||
#define CONFIG_SYS_PCI1_IO_SIZE	0x00010000	/* 64k */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
/* controller 2, Slot 1, tgtid 1, Base address 9000 */
 | 
			
		||||
#define CONFIG_SYS_PCIE2_MEM_BASE	0x80000000
 | 
			
		||||
#define CONFIG_SYS_PCIE2_MEM_PHYS	CONFIG_SYS_PCIE2_MEM_BASE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,7 @@
 | 
			
		|||
#undef CONFIG_PCI2
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* Use common FSL init code */
 | 
			
		||||
#define CONFIG_FSL_PCIE_RESET	1	/* need PCIe reset errata */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
| 
						 | 
				
			
			@ -419,11 +420,6 @@ extern unsigned long get_clock_freq(void);
 | 
			
		|||
 | 
			
		||||
#undef CONFIG_PCI_SCAN_SHOW		/* show pci devices on startup */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
#endif	/* CONFIG_PCI */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@
 | 
			
		|||
#define CONFIG_MPC8555CDS	1	/* MPC8555CDS board specific */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_PCI
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL init code */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,7 @@
 | 
			
		|||
#define CONFIG_MPC8560		1
 | 
			
		||||
 | 
			
		||||
#define CONFIG_PCI
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
#undef CONFIG_ETHER_ON_FCC             /* cpm FCC ethernet support */
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@
 | 
			
		|||
#define CONFIG_PCIE1		1	/* PCIE controller */
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* use common fsl pci init code */
 | 
			
		||||
#define CONFIG_FSL_PCIE_RESET	1	/* need PCIe reset errata */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
#define CONFIG_QE			/* Enable QE */
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
| 
						 | 
				
			
			@ -388,11 +389,6 @@ extern unsigned long get_clock_freq(void);
 | 
			
		|||
#undef CONFIG_PCI_SCAN_SHOW		/* show pci devices on startup */
 | 
			
		||||
#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x1057  /* Motorola */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS      0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS     0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE     0x80000000
 | 
			
		||||
 | 
			
		||||
#endif	/* CONFIG_PCI */
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_NET_MULTI
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,7 @@
 | 
			
		|||
#define CONFIG_PCIE3		1	/* PCIE controler 3 (ULI bridge) */
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* Use common FSL init code */
 | 
			
		||||
#define CONFIG_FSL_PCIE_RESET	1	/* need PCIe reset errata */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL init code */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -134,16 +135,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
 | 
			
		|||
#define CONFIG_SYS_DDR_ERR_DIS		0x00000000
 | 
			
		||||
#define CONFIG_SYS_DDR_SBE		0x00010000
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * FIXME: Not used in fixed_sdram function
 | 
			
		||||
 */
 | 
			
		||||
#define CONFIG_SYS_DDR_MODE		0x00000022
 | 
			
		||||
#define CONFIG_SYS_DDR_CS1_BNDS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_DDR_CS2_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
#define CONFIG_SYS_DDR_CS3_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
#define CONFIG_SYS_DDR_CS4_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
#define CONFIG_SYS_DDR_CS5_BNDS	0x00000FFF	/* Not done */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Make sure required options are set
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -335,11 +326,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
 | 
			
		|||
 * Memory space is mapped 1-1, but I/O space must start from 0.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
/* controller 3, direct to uli, tgtid 3, Base address 8000 */
 | 
			
		||||
#define CONFIG_SYS_PCIE3_MEM_BASE	0x80000000
 | 
			
		||||
#define CONFIG_SYS_PCIE3_MEM_PHYS	CONFIG_SYS_PCIE3_MEM_BASE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,7 @@
 | 
			
		|||
#define CONFIG_PCIE1		1	/* PCIe 1 connected to ULI bridge */
 | 
			
		||||
#define CONFIG_PCIE2		1	/* PCIe 2 connected to slot */
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* Use common FSL init code */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL init code */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_ENV_OVERWRITE
 | 
			
		||||
| 
						 | 
				
			
			@ -278,11 +279,6 @@
 | 
			
		|||
#define CONFIG_SYS_PCI1_IO_PHYS	0xe1000000
 | 
			
		||||
#define CONFIG_SYS_PCI1_IO_SIZE	0x00100000	/* 1M */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
/* For RTL8139 */
 | 
			
		||||
#define KSEG1ADDR(x)	({u32 _x = le32_to_cpu(*(u32 *)(x)); (&_x); })
 | 
			
		||||
#define _IO_BASE		0x00000000
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@
 | 
			
		|||
#define CONFIG_PCI1		1	/* PCIE controler 1 (ULI bridge) */
 | 
			
		||||
#define CONFIG_PCI2		1	/* PCIE controler 2 (slot) */
 | 
			
		||||
#define CONFIG_FSL_PCI_INIT	1	/* Use common FSL init code */
 | 
			
		||||
#define CONFIG_SYS_PCI_64BIT	1	/* enable 64-bit PCI resources */
 | 
			
		||||
#define CONFIG_FSL_LAW		1	/* Use common FSL law init code */
 | 
			
		||||
 | 
			
		||||
#define CONFIG_TSEC_ENET		/* tsec ethernet support */
 | 
			
		||||
| 
						 | 
				
			
			@ -304,11 +305,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 | 
			
		|||
#define CONFIG_SYS_PCI1_IO_PHYS	0xe2000000
 | 
			
		||||
#define CONFIG_SYS_PCI1_IO_SIZE	0x00100000	/* 1M */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
/* For RTL8139 */
 | 
			
		||||
#define KSEG1ADDR(x)		({u32 _x=le32_to_cpu(*(u32 *)(x)); (&_x);})
 | 
			
		||||
#define _IO_BASE		0x00000000
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -403,11 +403,6 @@
 | 
			
		|||
#define CONFIG_SYS_PCI1_IO_PHYS	CONFIG_SYS_PCI1_IO_BASE
 | 
			
		||||
#define CONFIG_SYS_PCI1_IO_SIZE	0x1000000	/*  16M			*/
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCIE1
 | 
			
		||||
/*
 | 
			
		||||
 * General PCI express
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -387,11 +387,6 @@
 | 
			
		|||
 | 
			
		||||
#undef CONFIG_PCI_SCAN_SHOW		/* show pci devices on startup */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS	0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE	0x80000000
 | 
			
		||||
 | 
			
		||||
#endif	/* CONFIG_PCI */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,11 +308,6 @@
 | 
			
		|||
#define CONFIG_SYS_PCI1_IO_PHYS	CONFIG_SYS_PCI1_IO_BASE
 | 
			
		||||
#define CONFIG_SYS_PCI1_IO_SIZE	0x1000000	/* 16M */
 | 
			
		||||
 | 
			
		||||
/* PCI view of System Memory */
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_BUS      0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_PHYS     0x00000000
 | 
			
		||||
#define CONFIG_SYS_PCI_MEMORY_SIZE     0x80000000
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_PCI2_MEM_BASE	0xa0000000
 | 
			
		||||
#define CONFIG_SYS_PCI2_MEM_PHYS	CONFIG_SYS_PCI2_MEM_BASE
 | 
			
		||||
#define CONFIG_SYS_PCI2_MEM_SIZE	0x10000000	/* 256M */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,8 @@
 | 
			
		|||
 | 
			
		||||
#include <fdt.h>
 | 
			
		||||
 | 
			
		||||
u32 fdt_getprop_u32_default(void *fdt, const char *path, const char *prop,
 | 
			
		||||
				const u32 dflt);
 | 
			
		||||
int fdt_chosen(void *fdt, int force);
 | 
			
		||||
int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force);
 | 
			
		||||
void do_fixup_by_path(void *fdt, const char *path, const char *prop,
 | 
			
		||||
| 
						 | 
				
			
			@ -63,6 +65,11 @@ void fdt_fixup_crypto_node(void *blob, int sec_rev);
 | 
			
		|||
static inline void fdt_fixup_crypto_node(void *blob, int sec_rev) {}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCI
 | 
			
		||||
#include <pci.h>
 | 
			
		||||
int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_OF_BOARD_SETUP
 | 
			
		||||
void ft_board_setup(void *blob, bd_t *bd);
 | 
			
		||||
void ft_cpu_setup(void *blob, bd_t *bd);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,8 +101,8 @@
 | 
			
		|||
#define  PCI_BASE_ADDRESS_MEM_TYPE_1M	0x02	/* Below 1M [obsolete] */
 | 
			
		||||
#define  PCI_BASE_ADDRESS_MEM_TYPE_64	0x04	/* 64 bit address */
 | 
			
		||||
#define  PCI_BASE_ADDRESS_MEM_PREFETCH	0x08	/* prefetchable? */
 | 
			
		||||
#define  PCI_BASE_ADDRESS_MEM_MASK	(~0x0fUL)
 | 
			
		||||
#define  PCI_BASE_ADDRESS_IO_MASK	(~0x03UL)
 | 
			
		||||
#define  PCI_BASE_ADDRESS_MEM_MASK	(~0x0fULL)
 | 
			
		||||
#define  PCI_BASE_ADDRESS_IO_MASK	(~0x03ULL)
 | 
			
		||||
/* bit 1 is reserved if address_space = 1 */
 | 
			
		||||
 | 
			
		||||
/* Header type 0 (normal devices) */
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +111,7 @@
 | 
			
		|||
#define PCI_SUBSYSTEM_ID	0x2e
 | 
			
		||||
#define PCI_ROM_ADDRESS		0x30	/* Bits 31..11 are address, 10..1 reserved */
 | 
			
		||||
#define  PCI_ROM_ADDRESS_ENABLE 0x01
 | 
			
		||||
#define PCI_ROM_ADDRESS_MASK	(~0x7ffUL)
 | 
			
		||||
#define PCI_ROM_ADDRESS_MASK	(~0x7ffULL)
 | 
			
		||||
 | 
			
		||||
#define PCI_CAPABILITY_LIST	0x34	/* Offset of first capability list entry */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -312,13 +312,21 @@
 | 
			
		|||
 | 
			
		||||
#include <pci_ids.h>
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SYS_PCI_64BIT
 | 
			
		||||
typedef u64 pci_addr_t;
 | 
			
		||||
typedef u64 pci_size_t;
 | 
			
		||||
#else
 | 
			
		||||
typedef u32 pci_addr_t;
 | 
			
		||||
typedef u32 pci_size_t;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
struct pci_region {
 | 
			
		||||
	unsigned long bus_start;		/* Start on the bus */
 | 
			
		||||
	pci_addr_t bus_start;	/* Start on the bus */
 | 
			
		||||
	phys_addr_t phys_start;	/* Start in physical address space */
 | 
			
		||||
	unsigned long size;			/* Size */
 | 
			
		||||
	pci_size_t size;	/* Size */
 | 
			
		||||
	unsigned long flags;	/* Resource flags */
 | 
			
		||||
 | 
			
		||||
	unsigned long bus_lower;
 | 
			
		||||
	pci_addr_t bus_lower;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define PCI_REGION_MEM		0x00000000	/* PCI memory space */
 | 
			
		||||
| 
						 | 
				
			
			@ -330,9 +338,9 @@ struct pci_region {
 | 
			
		|||
#define PCI_REGION_RO		0x00000200	/* Read-only memory */
 | 
			
		||||
 | 
			
		||||
extern __inline__ void pci_set_region(struct pci_region *reg,
 | 
			
		||||
				      unsigned long bus_start,
 | 
			
		||||
				      pci_addr_t bus_start,
 | 
			
		||||
				      phys_addr_t phys_start,
 | 
			
		||||
				      unsigned long size,
 | 
			
		||||
				      pci_size_t size,
 | 
			
		||||
				      unsigned long flags) {
 | 
			
		||||
	reg->bus_start	= bus_start;
 | 
			
		||||
	reg->phys_start = phys_start;
 | 
			
		||||
| 
						 | 
				
			
			@ -433,8 +441,8 @@ extern __inline__ void pci_set_ops(struct pci_controller *hose,
 | 
			
		|||
extern void pci_setup_indirect(struct pci_controller* hose, u32 cfg_addr, u32 cfg_data);
 | 
			
		||||
 | 
			
		||||
extern phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
 | 
			
		||||
					unsigned long addr, unsigned long flags);
 | 
			
		||||
extern unsigned long pci_hose_phys_to_bus(struct pci_controller* hose,
 | 
			
		||||
					pci_addr_t addr, unsigned long flags);
 | 
			
		||||
extern pci_addr_t pci_hose_phys_to_bus(struct pci_controller* hose,
 | 
			
		||||
					phys_addr_t addr, unsigned long flags);
 | 
			
		||||
 | 
			
		||||
#define pci_phys_to_bus(dev, addr, flags) \
 | 
			
		||||
| 
						 | 
				
			
			@ -483,8 +491,8 @@ extern int pci_hose_scan(struct pci_controller *hose);
 | 
			
		|||
extern int pci_hose_scan_bus(struct pci_controller *hose, int bus);
 | 
			
		||||
 | 
			
		||||
extern void pciauto_region_init(struct pci_region* res);
 | 
			
		||||
extern void pciauto_region_align(struct pci_region *res, unsigned long size);
 | 
			
		||||
extern int pciauto_region_allocate(struct pci_region* res, unsigned int size, unsigned int *bar);
 | 
			
		||||
extern void pciauto_region_align(struct pci_region *res, pci_size_t size);
 | 
			
		||||
extern int pciauto_region_allocate(struct pci_region* res, pci_size_t size, pci_addr_t *bar);
 | 
			
		||||
extern void pciauto_setup_device(struct pci_controller *hose,
 | 
			
		||||
				 pci_dev_t dev, int bars_num,
 | 
			
		||||
				 struct pci_region *mem,
 | 
			
		||||
| 
						 | 
				
			
			@ -500,7 +508,7 @@ extern pci_dev_t pci_find_class(int wanted_class, int wanted_sub_code,
 | 
			
		|||
extern int pci_hose_config_device(struct pci_controller *hose,
 | 
			
		||||
				  pci_dev_t dev,
 | 
			
		||||
				  unsigned long io,
 | 
			
		||||
				  unsigned long mem,
 | 
			
		||||
				  pci_addr_t mem,
 | 
			
		||||
				  unsigned long command);
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_MPC824X
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue