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