mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-30 00:21:06 +00:00
Merge branch 'master' of /home/wd/git/u-boot/custodians
This commit is contained in:
commit
07c9cd8117
66 changed files with 1128 additions and 450 deletions
|
@ -58,7 +58,9 @@ COBJS-$(CONFIG_P1021) += ddr-gen3.o
|
|||
COBJS-$(CONFIG_P1022) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_P2010) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_P2020) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_PPC_P3041) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_PPC_P4080) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_PPC_P5020) += ddr-gen3.o
|
||||
|
||||
COBJS-$(CONFIG_CPM2) += ether_fcc.o
|
||||
COBJS-$(CONFIG_OF_LIBFDT) += fdt.o
|
||||
|
|
|
@ -179,7 +179,7 @@ int checkcpu (void)
|
|||
|
||||
#ifdef CONFIG_SYS_DPAA_FMAN
|
||||
for (i = 0; i < CONFIG_SYS_NUM_FMAN; i++) {
|
||||
printf(" FMAN%d: %s MHz\n", i,
|
||||
printf(" FMAN%d: %s MHz\n", i + 1,
|
||||
strmhz(buf1, sysinfo.freqFMan[i]));
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -39,10 +39,6 @@
|
|||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifdef CONFIG_MPC8536
|
||||
extern void fsl_serdes_init(void);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_QE
|
||||
extern qe_iop_conf_t qe_iop_conf_tab[];
|
||||
extern void qe_config_iopin(u8 port, u8 pin, int dir,
|
||||
|
@ -185,9 +181,6 @@ void cpu_init_f (void)
|
|||
/* Config QE ioports */
|
||||
config_qe_ioports();
|
||||
#endif
|
||||
#if defined(CONFIG_MPC8536)
|
||||
fsl_serdes_init();
|
||||
#endif
|
||||
#if defined(CONFIG_FSL_DMA)
|
||||
dma_init();
|
||||
#endif
|
||||
|
@ -332,6 +325,11 @@ int cpu_init_r(void)
|
|||
qe_reset();
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SYS_HAS_SERDES)
|
||||
/* needs to be in ram since code uses global static vars */
|
||||
fsl_serdes_init();
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_MP)
|
||||
setup_mp();
|
||||
#endif
|
||||
|
|
|
@ -298,17 +298,17 @@ void fdt_add_enet_stashing(void *fdt)
|
|||
}
|
||||
|
||||
#if defined(CONFIG_SYS_DPAA_FMAN) || defined(CONFIG_SYS_DPAA_PME)
|
||||
static void ft_fixup_clks(void *blob, const char *alias, unsigned long freq)
|
||||
static void ft_fixup_clks(void *blob, const char *compat, u32 offset,
|
||||
unsigned long freq)
|
||||
{
|
||||
const char *path = fdt_get_alias(blob, alias);
|
||||
|
||||
int off = fdt_path_offset(blob, path);
|
||||
phys_addr_t phys = offset + CONFIG_SYS_CCSRBAR_PHYS;
|
||||
int off = fdt_node_offset_by_compat_reg(blob, compat, phys);
|
||||
|
||||
if (off >= 0) {
|
||||
off = fdt_setprop_cell(blob, off, "clock-frequency", freq);
|
||||
if (off > 0)
|
||||
printf("WARNING enable to set clock-frequency "
|
||||
"for %s: %s\n", alias, fdt_strerror(off));
|
||||
"for %s: %s\n", compat, fdt_strerror(off));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -317,14 +317,17 @@ static void ft_fixup_dpaa_clks(void *blob)
|
|||
sys_info_t sysinfo;
|
||||
|
||||
get_sys_info(&sysinfo);
|
||||
ft_fixup_clks(blob, "fman0", sysinfo.freqFMan[0]);
|
||||
ft_fixup_clks(blob, "fsl,fman", CONFIG_SYS_FSL_FM1_OFFSET,
|
||||
sysinfo.freqFMan[0]);
|
||||
|
||||
#if (CONFIG_SYS_NUM_FMAN == 2)
|
||||
ft_fixup_clks(blob, "fman1", sysinfo.freqFMan[1]);
|
||||
ft_fixup_clks(blob, "fsl,fman", CONFIG_SYS_FSL_FM2_OFFSET,
|
||||
sysinfo.freqFMan[1]);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_DPAA_PME
|
||||
ft_fixup_clks(blob, "pme", sysinfo.freqPME);
|
||||
do_fixup_by_compat_u32(blob, "fsl,pme",
|
||||
"clock-frequency", sysinfo.freqPME, 1);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
|
@ -400,6 +403,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
|||
"clock-frequency", bd->bi_brgfreq, 1);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FSL_CORENET
|
||||
do_fixup_by_compat_u32(blob, "fsl,qoriq-clockgen-1.0",
|
||||
"clock-frequency", CONFIG_SYS_CLK_FREQ, 1);
|
||||
#endif
|
||||
|
||||
fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
|
||||
|
||||
#ifdef CONFIG_MP
|
||||
|
|
|
@ -66,10 +66,11 @@
|
|||
#define FSL_SRDSCR3_LANEE_SGMII 0x00000000
|
||||
#define FSL_SRDSCR3_LANEE_SATA 0x00150005
|
||||
|
||||
|
||||
#define SRDS1_MAX_LANES 8
|
||||
#define SRDS2_MAX_LANES 2
|
||||
|
||||
static u32 serdes1_prtcl_map, serdes2_prtcl_map;
|
||||
|
||||
static u8 serdes1_cfg_tbl[][SRDS1_MAX_LANES] = {
|
||||
[0x2] = {PCIE1, PCIE1, PCIE1, PCIE1, NONE, NONE, NONE, NONE},
|
||||
[0x3] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1},
|
||||
|
@ -86,39 +87,12 @@ static u8 serdes2_cfg_tbl[][SRDS2_MAX_LANES] = {
|
|||
|
||||
int is_serdes_configured(enum srds_prtcl device)
|
||||
{
|
||||
int i;
|
||||
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
u32 pordevsr = in_be32(&gur->pordevsr);
|
||||
u32 srds1_cfg = (pordevsr & MPC85xx_PORDEVSR_IO_SEL) >>
|
||||
MPC85xx_PORDEVSR_IO_SEL_SHIFT;
|
||||
int ret = (1 << device) & serdes1_prtcl_map;
|
||||
|
||||
u32 srds2_cfg = (pordevsr & MPC85xx_PORDEVSR_SRDS2_IO_SEL) >>
|
||||
GUTS_PORDEVSR_SERDES2_IO_SEL_SHIFT;
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
debug("%s: dev = %d\n", __FUNCTION__, device);
|
||||
debug("PORDEVSR[IO_SEL] = %x\n", srds1_cfg);
|
||||
debug("PORDEVSR[SRDS2_IO_SEL] = %x\n", srds2_cfg);
|
||||
|
||||
if (srds1_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[IO_SEL] = %d\n", srds1_cfg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (srds2_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[SRDS2_IO_SEL] = %d\n", srds2_cfg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < SRDS1_MAX_LANES; i++) {
|
||||
if (serdes1_cfg_tbl[srds1_cfg][i] == device)
|
||||
return 1;
|
||||
}
|
||||
for (i = 0; i < SRDS2_MAX_LANES; i++) {
|
||||
if (serdes2_cfg_tbl[srds2_cfg][i] == device)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return (1 << device) & serdes2_prtcl_map;
|
||||
}
|
||||
|
||||
void fsl_serdes_init(void)
|
||||
|
@ -126,13 +100,20 @@ void fsl_serdes_init(void)
|
|||
void *guts = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
void *sd = (void *)CONFIG_SYS_MPC85xx_SERDES2_ADDR;
|
||||
u32 pordevsr = in_be32(guts + GUTS_PORDEVSR_OFFS);
|
||||
u32 srds2_io_sel;
|
||||
u32 srds1_io_sel, srds2_io_sel;
|
||||
u32 tmp;
|
||||
int lane;
|
||||
|
||||
srds1_io_sel = (pordevsr & MPC85xx_PORDEVSR_IO_SEL) >>
|
||||
MPC85xx_PORDEVSR_IO_SEL_SHIFT;
|
||||
|
||||
/* parse the SRDS2_IO_SEL of PORDEVSR */
|
||||
srds2_io_sel = (pordevsr & GUTS_PORDEVSR_SERDES2_IO_SEL)
|
||||
>> GUTS_PORDEVSR_SERDES2_IO_SEL_SHIFT;
|
||||
|
||||
debug("PORDEVSR[SRDS1_IO_SEL] = %x\n", srds1_io_sel);
|
||||
debug("PORDEVSR[SRDS2_IO_SEL] = %x\n", srds2_io_sel);
|
||||
|
||||
switch (srds2_io_sel) {
|
||||
case 1: /* Lane A - SATA1, Lane E - SATA2 */
|
||||
/* CR 0 */
|
||||
|
@ -246,4 +227,23 @@ void fsl_serdes_init(void)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (srds1_io_sel > ARRAY_SIZE(serdes1_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[SRDS1_IO_SEL] = %d\n", srds1_io_sel);
|
||||
return;
|
||||
}
|
||||
for (lane = 0; lane < SRDS1_MAX_LANES; lane++) {
|
||||
enum srds_prtcl lane_prtcl = serdes1_cfg_tbl[srds1_io_sel][lane];
|
||||
serdes1_prtcl_map |= (1 << lane_prtcl);
|
||||
}
|
||||
|
||||
if (srds2_io_sel > ARRAY_SIZE(serdes2_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[SRDS2_IO_SEL] = %d\n", srds2_io_sel);
|
||||
return;
|
||||
}
|
||||
|
||||
for (lane = 0; lane < SRDS2_MAX_LANES; lane++) {
|
||||
enum srds_prtcl lane_prtcl = serdes2_cfg_tbl[srds2_io_sel][lane];
|
||||
serdes2_prtcl_map |= (1 << lane_prtcl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
#define SRDS1_MAX_LANES 4
|
||||
#define SRDS2_MAX_LANES 2
|
||||
|
||||
static u32 serdes1_prtcl_map, serdes2_prtcl_map;
|
||||
|
||||
static const u8 serdes1_cfg_tbl[][SRDS1_MAX_LANES] = {
|
||||
[0x00] = {NONE, NONE, NONE, NONE},
|
||||
[0x01] = {NONE, NONE, NONE, NONE},
|
||||
|
@ -72,27 +74,41 @@ static const u8 serdes2_cfg_tbl[][SRDS2_MAX_LANES] = {
|
|||
};
|
||||
|
||||
int is_serdes_configured(enum srds_prtcl device)
|
||||
{
|
||||
int ret = (1 << device) & serdes1_prtcl_map;
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return (1 << device) & serdes2_prtcl_map;
|
||||
}
|
||||
|
||||
void fsl_serdes_init(void)
|
||||
{
|
||||
ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
|
||||
u32 pordevsr = in_be32(&gur->pordevsr);
|
||||
u32 srds_cfg = (pordevsr & MPC85xx_PORDEVSR_IO_SEL) >>
|
||||
MPC85xx_PORDEVSR_IO_SEL_SHIFT;
|
||||
unsigned int i;
|
||||
int lane;
|
||||
|
||||
debug("%s: dev = %d\n", __FUNCTION__, device);
|
||||
debug("PORDEVSR[IO_SEL] = 0x%x\n", srds_cfg);
|
||||
debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
|
||||
|
||||
if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[IO_SEL] = %d\n", srds_cfg);
|
||||
return 0;
|
||||
printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
|
||||
return;
|
||||
}
|
||||
for (lane = 0; lane < SRDS1_MAX_LANES; lane++) {
|
||||
enum srds_prtcl lane_prtcl = serdes1_cfg_tbl[srds_cfg][lane];
|
||||
serdes1_prtcl_map |= (1 << lane_prtcl);
|
||||
}
|
||||
|
||||
for (i = 0; i < SRDS1_MAX_LANES; i++) {
|
||||
if (serdes1_cfg_tbl[srds_cfg][i] == device)
|
||||
return 1;
|
||||
if (serdes2_cfg_tbl[srds_cfg][i] == device)
|
||||
return 1;
|
||||
if (srds_cfg > ARRAY_SIZE(serdes2_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
|
||||
return;
|
||||
}
|
||||
|
||||
return 0;
|
||||
for (lane = 0; lane < SRDS2_MAX_LANES; lane++) {
|
||||
enum srds_prtcl lane_prtcl = serdes2_cfg_tbl[srds_cfg][lane];
|
||||
serdes2_prtcl_map |= (1 << lane_prtcl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,10 +80,16 @@ struct cpu_type cpu_type_list [] = {
|
|||
CPU_TYPE_ENTRY(P2010, P2010_E, 1),
|
||||
CPU_TYPE_ENTRY(P2020, P2020, 2),
|
||||
CPU_TYPE_ENTRY(P2020, P2020_E, 2),
|
||||
CPU_TYPE_ENTRY(P3041, P3041, 4),
|
||||
CPU_TYPE_ENTRY(P3041, P3041_E, 4),
|
||||
CPU_TYPE_ENTRY(P4040, P4040, 4),
|
||||
CPU_TYPE_ENTRY(P4040, P4040_E, 4),
|
||||
CPU_TYPE_ENTRY(P4080, P4080, 8),
|
||||
CPU_TYPE_ENTRY(P4080, P4080_E, 8),
|
||||
CPU_TYPE_ENTRY(P5010, P5010, 1),
|
||||
CPU_TYPE_ENTRY(P5010, P5010_E, 1),
|
||||
CPU_TYPE_ENTRY(P5020, P5020, 2),
|
||||
CPU_TYPE_ENTRY(P5020, P5020_E, 2),
|
||||
#elif defined(CONFIG_MPC86xx)
|
||||
CPU_TYPE_ENTRY(8610, 8610, 1),
|
||||
CPU_TYPE_ENTRY(8641, 8641, 2),
|
||||
|
|
|
@ -767,6 +767,13 @@ static u32 DQS_calibration_methodB(struct ddrautocal *cal)
|
|||
|
||||
debug("\n\n");
|
||||
|
||||
#if defined(CONFIG_DDR_RFDC_FIXED)
|
||||
mtsdram(SDRAM_RFDC, CONFIG_DDR_RFDC_FIXED);
|
||||
size = 512;
|
||||
rffd_average = CONFIG_DDR_RFDC_FIXED & SDRAM_RFDC_RFFD_MASK;
|
||||
mfsdram(SDRAM_RDCC, rdcc); /* record this value */
|
||||
cal->rdcc = rdcc;
|
||||
#else /* CONFIG_DDR_RFDC_FIXED */
|
||||
in_window = 0;
|
||||
rdcc = 0;
|
||||
|
||||
|
@ -830,6 +837,7 @@ static u32 DQS_calibration_methodB(struct ddrautocal *cal)
|
|||
rffd_average = SDRAM_RFDC_RFFD_MAX;
|
||||
|
||||
mtsdram(SDRAM_RFDC, rfdc_reg | SDRAM_RFDC_RFFD_ENCODE(rffd_average));
|
||||
#endif /* CONFIG_DDR_RFDC_FIXED */
|
||||
|
||||
rffd = rffd_average;
|
||||
in_window = 0;
|
||||
|
@ -1211,10 +1219,14 @@ u32 DQS_autocalibration(void)
|
|||
debug("*** best_result: read value SDRAM_RQDC 0x%08x\n",
|
||||
rqdc_reg);
|
||||
|
||||
#if defined(CONFIG_DDR_RFDC_FIXED)
|
||||
mtsdram(SDRAM_RFDC, CONFIG_DDR_RFDC_FIXED);
|
||||
#else /* CONFIG_DDR_RFDC_FIXED */
|
||||
mfsdram(SDRAM_RFDC, rfdc_reg);
|
||||
rfdc_reg &= ~(SDRAM_RFDC_RFFD_MASK);
|
||||
mtsdram(SDRAM_RFDC, rfdc_reg |
|
||||
SDRAM_RFDC_RFFD_ENCODE(tcal.autocal.rffd));
|
||||
#endif /* CONFIG_DDR_RFDC_FIXED */
|
||||
|
||||
mfsdram(SDRAM_RFDC, rfdc_reg);
|
||||
debug("*** best_result: read value SDRAM_RFDC 0x%08x\n",
|
||||
|
|
|
@ -51,6 +51,9 @@ COBJS += cpu_init.o
|
|||
COBJS += denali_data_eye.o
|
||||
COBJS += denali_spd_ddr2.o
|
||||
COBJS += ecc.o
|
||||
ifdef CONFIG_CMD_ECCTEST
|
||||
COBJS += cmd_ecctest.o
|
||||
endif
|
||||
COBJS += fdt.o
|
||||
COBJS += interrupts.o
|
||||
COBJS += iop480_uart.o
|
||||
|
|
284
arch/powerpc/cpu/ppc4xx/cmd_ecctest.c
Normal file
284
arch/powerpc/cpu/ppc4xx/cmd_ecctest.c
Normal file
|
@ -0,0 +1,284 @@
|
|||
/*
|
||||
* (C) Copyright 2010
|
||||
* Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <ppc4xx.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/cache.h>
|
||||
|
||||
#if defined(CONFIG_SDRAM_PPC4xx_IBM_DDR) || \
|
||||
defined(CONFIG_SDRAM_PPC4xx_IBM_DDR2)
|
||||
#if defined(CONFIG_DDR_ECC) || defined(CONFIG_SDRAM_ECC)
|
||||
|
||||
#if defined(CONFIG_405EX)
|
||||
/*
|
||||
* Currently only 405EX uses 16bit data bus width as an alternative
|
||||
* option to 32bit data width (SDRAM0_MCOPT1_WDTH)
|
||||
*/
|
||||
#define SDRAM_DATA_ALT_WIDTH 2
|
||||
#else
|
||||
#define SDRAM_DATA_ALT_WIDTH 8
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SYS_OCM_BASE)
|
||||
#define CONFIG_FUNC_ISRAM_ADDR CONFIG_SYS_OCM_BASE
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SYS_ISRAM_BASE)
|
||||
#define CONFIG_FUNC_ISRAM_ADDR CONFIG_SYS_ISRAM_BASE
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_FUNC_ISRAM_ADDR)
|
||||
#error "No internal SRAM/OCM provided!"
|
||||
#endif
|
||||
|
||||
#define force_inline inline __attribute__ ((always_inline))
|
||||
|
||||
static inline void machine_check_disable(void)
|
||||
{
|
||||
mtmsr(mfmsr() & ~MSR_ME);
|
||||
}
|
||||
|
||||
static inline void machine_check_enable(void)
|
||||
{
|
||||
mtmsr(mfmsr() | MSR_ME);
|
||||
}
|
||||
|
||||
/*
|
||||
* These helper functions need to be inlined, since they
|
||||
* are called from the functions running from internal SRAM.
|
||||
* SDRAM operation is forbidden at that time, so calling
|
||||
* functions in SDRAM has to be avoided.
|
||||
*/
|
||||
static force_inline void wait_ddr_idle(void)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
do {
|
||||
mfsdram(SDRAM_MCSTAT, val);
|
||||
} while ((val & SDRAM_MCSTAT_IDLE_MASK) == SDRAM_MCSTAT_IDLE_NOT);
|
||||
}
|
||||
|
||||
static force_inline void recalibrate_ddr(void)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
/*
|
||||
* Rewrite RQDC & RFDC to calibrate again. If this is not
|
||||
* done, the SDRAM controller is working correctly after
|
||||
* changing the MCOPT1_MCHK bits.
|
||||
*/
|
||||
mfsdram(SDRAM_RQDC, val);
|
||||
mtsdram(SDRAM_RQDC, val);
|
||||
mfsdram(SDRAM_RFDC, val);
|
||||
mtsdram(SDRAM_RFDC, val);
|
||||
}
|
||||
|
||||
static force_inline void set_mcopt1_mchk(u32 bits)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
wait_ddr_idle();
|
||||
mfsdram(SDRAM_MCOPT1, val);
|
||||
mtsdram(SDRAM_MCOPT1, (val & ~SDRAM_MCOPT1_MCHK_MASK) | bits);
|
||||
recalibrate_ddr();
|
||||
}
|
||||
|
||||
/*
|
||||
* The next 2 functions are copied to internal SRAM/OCM and run
|
||||
* there. No function calls allowed here. No SDRAM acitivity should
|
||||
* be done here.
|
||||
*/
|
||||
static void inject_ecc_error(void *ptr, int par)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
/*
|
||||
* Taken from PPC460EX/EXr/GT users manual (Rev 1.21)
|
||||
* 22.2.17.13 ECC Diagnostics
|
||||
*
|
||||
* Items 1 ... 5 are already done by now, running from RAM
|
||||
* with ECC enabled
|
||||
*/
|
||||
|
||||
out_be32(ptr, 0x00000000);
|
||||
val = in_be32(ptr);
|
||||
|
||||
/* 6. Set memory controller to no error checking */
|
||||
set_mcopt1_mchk(SDRAM_MCOPT1_MCHK_NON);
|
||||
|
||||
/* 7. Modify one or two bits for error simulation */
|
||||
if (par == 1)
|
||||
out_be32(ptr, in_be32(ptr) ^ 0x00000001);
|
||||
else
|
||||
out_be32(ptr, in_be32(ptr) ^ 0x00000003);
|
||||
|
||||
/* 8. Wait for SDRAM idle */
|
||||
val = in_be32(ptr);
|
||||
set_mcopt1_mchk(SDRAM_MCOPT1_MCHK_CHK_REP);
|
||||
|
||||
/* Wait for SDRAM idle */
|
||||
wait_ddr_idle();
|
||||
|
||||
/* Continue with 9. in calling function... */
|
||||
}
|
||||
|
||||
static void rewrite_ecc_parity(void *ptr, int par)
|
||||
{
|
||||
u32 current_address = (u32)ptr;
|
||||
u32 end_address;
|
||||
u32 address_increment;
|
||||
u32 mcopt1;
|
||||
u32 val;
|
||||
|
||||
/*
|
||||
* Fill ECC parity byte again. Otherwise further accesses to
|
||||
* the failure address will result in exceptions.
|
||||
*/
|
||||
|
||||
/* Wait for SDRAM idle */
|
||||
val = in_be32(0x00000000);
|
||||
set_mcopt1_mchk(SDRAM_MCOPT1_MCHK_GEN);
|
||||
|
||||
/* ECC bit set method for non-cached memory */
|
||||
mfsdram(SDRAM_MCOPT1, mcopt1);
|
||||
if ((mcopt1 & SDRAM_MCOPT1_DMWD_MASK) == SDRAM_MCOPT1_DMWD_32)
|
||||
address_increment = 4;
|
||||
else
|
||||
address_increment = SDRAM_DATA_ALT_WIDTH;
|
||||
end_address = current_address + CONFIG_SYS_CACHELINE_SIZE;
|
||||
|
||||
while (current_address < end_address) {
|
||||
*((unsigned long *)current_address) = 0;
|
||||
current_address += address_increment;
|
||||
}
|
||||
|
||||
set_mcopt1_mchk(SDRAM_MCOPT1_MCHK_CHK_REP);
|
||||
|
||||
/* Wait for SDRAM idle */
|
||||
wait_ddr_idle();
|
||||
}
|
||||
|
||||
static int do_ecctest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
u32 old_val;
|
||||
u32 val;
|
||||
u32 *ptr;
|
||||
void (*sram_func)(u32 *, int);
|
||||
int error;
|
||||
|
||||
if (argc < 3) {
|
||||
cmd_usage(cmdtp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
ptr = (u32 *)simple_strtoul(argv[1], NULL, 16);
|
||||
error = simple_strtoul(argv[2], NULL, 16);
|
||||
if ((error < 1) || (error > 2)) {
|
||||
cmd_usage(cmdtp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("Using address %p for %d bit ECC error injection\n",
|
||||
ptr, error);
|
||||
|
||||
/*
|
||||
* Save value to restore it later on
|
||||
*/
|
||||
old_val = in_be32(ptr);
|
||||
|
||||
/*
|
||||
* Copy ECC injection function into internal SRAM/OCM
|
||||
*/
|
||||
sram_func = (void *)CONFIG_FUNC_ISRAM_ADDR;
|
||||
memcpy((void *)CONFIG_FUNC_ISRAM_ADDR, inject_ecc_error, 0x10000);
|
||||
|
||||
/*
|
||||
* Disable interrupts and exceptions before calling this
|
||||
* function in internal SRAM/OCM
|
||||
*/
|
||||
disable_interrupts();
|
||||
machine_check_disable();
|
||||
eieio();
|
||||
|
||||
/*
|
||||
* Jump to ECC simulation function in internal SRAM/OCM
|
||||
*/
|
||||
(*sram_func)(ptr, error);
|
||||
|
||||
/* 10. Read the corresponding address */
|
||||
val = in_be32(ptr);
|
||||
|
||||
/*
|
||||
* Read and print ECC status register/info:
|
||||
* The faulting address is only known upon uncorrectable ECC
|
||||
* errors.
|
||||
*/
|
||||
mfsdram(SDRAM_ECCES, val);
|
||||
if (val & SDRAM_ECCES_CE)
|
||||
printf("ECC: Correctable error\n");
|
||||
if (val & SDRAM_ECCES_UE) {
|
||||
printf("ECC: Uncorrectable error at 0x%02x%08x\n",
|
||||
mfdcr(SDRAM_ERRADDULL), mfdcr(SDRAM_ERRADDLLL));
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear pending interrupts/exceptions
|
||||
*/
|
||||
mtsdram(SDRAM_ECCES, 0xffffffff);
|
||||
mtdcr(SDRAM_ERRSTATLL, 0xff000000);
|
||||
set_mcsr(get_mcsr());
|
||||
|
||||
/* Now enable interrupts and exceptions again */
|
||||
eieio();
|
||||
machine_check_enable();
|
||||
enable_interrupts();
|
||||
|
||||
/*
|
||||
* The ECC parity byte need to be re-written for the
|
||||
* corresponding address. Otherwise future accesses to it
|
||||
* will result in exceptions.
|
||||
*
|
||||
* Jump to ECC parity generation function
|
||||
*/
|
||||
memcpy((void *)CONFIG_FUNC_ISRAM_ADDR, rewrite_ecc_parity, 0x10000);
|
||||
(*sram_func)(ptr, 0);
|
||||
|
||||
/*
|
||||
* Restore value in corresponding address
|
||||
*/
|
||||
out_be32(ptr, old_val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
ecctest, 3, 0, do_ecctest,
|
||||
"Test ECC by single and double error bit injection",
|
||||
"address 1/2"
|
||||
);
|
||||
|
||||
#endif /* defined(CONFIG_DDR_ECC) || defined(CONFIG_SDRAM_ECC) */
|
||||
#endif /* defined(CONFIG_SDRAM_PPC4xx_IBM_DDR)... */
|
|
@ -130,7 +130,26 @@ static void program_ecc_addr(unsigned long start_address,
|
|||
|
||||
/* clear ECC error repoting registers */
|
||||
mtsdram(SDRAM_ECCES, 0xffffffff);
|
||||
mtdcr(0x4c, 0xffffffff);
|
||||
#if defined(CONFIG_SDRAM_PPC4xx_IBM_DDR)
|
||||
/*
|
||||
* IBM DDR(1) core (440GX):
|
||||
* Clear Mx bits in SDRAM0_BESR0/1
|
||||
*/
|
||||
mtsdram(SDRAM0_BESR0, 0xffffffff);
|
||||
mtsdram(SDRAM0_BESR1, 0xffffffff);
|
||||
#elif defined(CONFIG_440)
|
||||
/*
|
||||
* 440/460 DDR2 core:
|
||||
* Clear EMID (Error PLB Master ID) in MQ0_ESL
|
||||
*/
|
||||
mtdcr(SDRAM_ERRSTATLL, 0xfff00000);
|
||||
#else
|
||||
/*
|
||||
* 405EX(r) DDR2 core:
|
||||
* Clear M0ID (Error PLB Master ID) in SDRAM_BESR
|
||||
*/
|
||||
mtsdram(SDRAM_BESR, 0xf0000000);
|
||||
#endif
|
||||
|
||||
mtsdram(SDRAM_MCOPT1,
|
||||
(mcopt1 & ~SDRAM_MCOPT1_MCHK_MASK) | SDRAM_MCOPT1_MCHK_CHK_REP);
|
||||
|
|
|
@ -209,6 +209,22 @@ MachineCheckException(struct pt_regs *regs)
|
|||
/* Clear MCSR */
|
||||
mtspr(SPRN_MCSR, val);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_DDR_ECC) && defined(CONFIG_SDRAM_PPC4xx_IBM_DDR2)
|
||||
/*
|
||||
* Read and print ECC status register/info:
|
||||
* The faulting address is only known upon uncorrectable ECC
|
||||
* errors.
|
||||
*/
|
||||
mfsdram(SDRAM_ECCES, val);
|
||||
if (val & SDRAM_ECCES_CE)
|
||||
printf("ECC: Correctable error\n");
|
||||
if (val & SDRAM_ECCES_UE) {
|
||||
printf("ECC: Uncorrectable error at 0x%02x%08x\n",
|
||||
mfdcr(SDRAM_ERRADDULL), mfdcr(SDRAM_ERRADDLLL));
|
||||
}
|
||||
#endif /* CONFIG_DDR_ECC ... */
|
||||
|
||||
#if defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
|
||||
mfsdram(DDR0_00, val) ;
|
||||
printf("DDR0: DDR0_00 %lx\n", val);
|
||||
|
|
|
@ -44,8 +44,12 @@
|
|||
defined(CONFIG_P1021) || defined(CONFIG_P1022) || \
|
||||
defined(CONFIG_P2020) || defined(CONFIG_MPC8641)
|
||||
#define CONFIG_MAX_CPUS 2
|
||||
#elif defined(CONFIG_PPC_P3041)
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#elif defined(CONFIG_PPC_P4080)
|
||||
#define CONFIG_MAX_CPUS 8
|
||||
#elif defined(CONFIG_PPC_P5020)
|
||||
#define CONFIG_MAX_CPUS 2
|
||||
#else
|
||||
#define CONFIG_MAX_CPUS 1
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2007,2009 Freescale Semiconductor, Inc.
|
||||
* Copyright 2007,2009-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
|
@ -29,8 +29,8 @@ int fsl_setup_hose(struct pci_controller *hose, unsigned long addr);
|
|||
int fsl_is_pci_agent(struct pci_controller *hose);
|
||||
void fsl_pci_init(struct pci_controller *hose, u32 cfg_addr, u32 cfg_data);
|
||||
void fsl_pci_config_unlock(struct pci_controller *hose);
|
||||
void ft_fsl_pci_setup(void *blob, const char *pci_alias,
|
||||
struct pci_controller *hose);
|
||||
void ft_fsl_pci_setup(void *blob, const char *pci_compat,
|
||||
struct pci_controller *hose, unsigned long ctrl_addr);
|
||||
|
||||
/*
|
||||
* Common PCI/PCIE Register structure for mpc85xx and mpc86xx
|
||||
|
@ -202,4 +202,82 @@ int fsl_pci_init_port(struct fsl_pci_info *pci_info,
|
|||
x.pci_num = num; \
|
||||
}
|
||||
|
||||
#define __FT_FSL_PCI_SETUP(blob, compat, num) \
|
||||
ft_fsl_pci_setup(blob, compat, &pci##num##_hose, \
|
||||
CONFIG_SYS_PCI##num##_ADDR)
|
||||
|
||||
#define __FT_FSL_PCI_DEL(blob, compat, num) \
|
||||
ft_fsl_pci_setup(blob, compat, NULL, CONFIG_SYS_PCI##num##_ADDR)
|
||||
|
||||
#define __FT_FSL_PCIE_SETUP(blob, compat, num) \
|
||||
ft_fsl_pci_setup(blob, compat, &pcie##num##_hose, \
|
||||
CONFIG_SYS_PCIE##num##_ADDR)
|
||||
|
||||
#define __FT_FSL_PCIE_DEL(blob, compat, num) \
|
||||
ft_fsl_pci_setup(blob, compat, NULL, CONFIG_SYS_PCIE##num##_ADDR)
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
#define FT_FSL_PCI1_SETUP __FT_FSL_PCI_SETUP(blob, FSL_PCI_COMPAT, 1)
|
||||
#else
|
||||
#define FT_FSL_PCI1_SETUP __FT_FSL_PCI_DEL(blob, FSL_PCI_COMPAT, 1)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI2
|
||||
#define FT_FSL_PCI2_SETUP __FT_FSL_PCI_SETUP(blob, FSL_PCI_COMPAT, 2)
|
||||
#else
|
||||
#define FT_FSL_PCI2_SETUP __FT_FSL_PCI_DEL(blob, FSL_PCI_COMPAT, 2)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIE1
|
||||
#define FT_FSL_PCIE1_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 1)
|
||||
#else
|
||||
#define FT_FSL_PCIE1_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 1)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIE2
|
||||
#define FT_FSL_PCIE2_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 2)
|
||||
#else
|
||||
#define FT_FSL_PCIE2_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 2)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIE3
|
||||
#define FT_FSL_PCIE3_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 3)
|
||||
#else
|
||||
#define FT_FSL_PCIE3_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 3)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIE4
|
||||
#define FT_FSL_PCIE4_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 4)
|
||||
#else
|
||||
#define FT_FSL_PCIE4_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 4)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FSL_CORENET)
|
||||
#define FSL_PCIE_COMPAT "fsl,p4080-pcie"
|
||||
#define FT_FSL_PCI_SETUP \
|
||||
FT_FSL_PCIE1_SETUP; \
|
||||
FT_FSL_PCIE2_SETUP; \
|
||||
FT_FSL_PCIE3_SETUP; \
|
||||
FT_FSL_PCIE4_SETUP;
|
||||
#elif defined(CONFIG_MPC85xx)
|
||||
#define FSL_PCI_COMPAT "fsl,mpc8540-pci"
|
||||
#define FSL_PCIE_COMPAT "fsl,mpc8548-pcie"
|
||||
#define FT_FSL_PCI_SETUP \
|
||||
FT_FSL_PCI1_SETUP; \
|
||||
FT_FSL_PCI2_SETUP; \
|
||||
FT_FSL_PCIE1_SETUP; \
|
||||
FT_FSL_PCIE2_SETUP; \
|
||||
FT_FSL_PCIE3_SETUP;
|
||||
#elif defined(CONFIG_MPC86xx)
|
||||
#define FSL_PCI_COMPAT "fsl,mpc8610-pci"
|
||||
#define FSL_PCIE_COMPAT "fsl,mpc8641-pcie"
|
||||
#define FT_FSL_PCI_SETUP \
|
||||
FT_FSL_PCI1_SETUP; \
|
||||
FT_FSL_PCIE1_SETUP; \
|
||||
FT_FSL_PCIE2_SETUP;
|
||||
#else
|
||||
#error FT_FSL_PCI_SETUP not defined
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -44,5 +44,6 @@ enum srds_prtcl {
|
|||
};
|
||||
|
||||
int is_serdes_configured(enum srds_prtcl device);
|
||||
void fsl_serdes_init(void);
|
||||
|
||||
#endif /* __FSL_SERDES_H */
|
||||
|
|
|
@ -2060,8 +2060,17 @@ typedef struct ccsr_sec {
|
|||
#define CONFIG_SYS_MPC85xx_LBC_OFFSET 0x5000
|
||||
#define CONFIG_SYS_MPC85xx_DDR2_OFFSET 0x6000
|
||||
#define CONFIG_SYS_MPC85xx_ESPI_OFFSET 0x7000
|
||||
#define CONFIG_SYS_MPC85xx_PCI1_OFFSET 0x8000
|
||||
#define CONFIG_SYS_MPC85xx_PCIX_OFFSET 0x8000
|
||||
#define CONFIG_SYS_MPC85xx_PCI2_OFFSET 0x9000
|
||||
#define CONFIG_SYS_MPC85xx_PCIX2_OFFSET 0x9000
|
||||
#define CONFIG_SYS_MPC85xx_PCIE1_OFFSET 0xa000
|
||||
#define CONFIG_SYS_MPC85xx_PCIE2_OFFSET 0x9000
|
||||
#if defined(CONFIG_MPC8572) || defined(CONFIG_P2020)
|
||||
#define CONFIG_SYS_MPC85xx_PCIE3_OFFSET 0x8000
|
||||
#else
|
||||
#define CONFIG_SYS_MPC85xx_PCIE3_OFFSET 0xb000
|
||||
#endif
|
||||
#define CONFIG_SYS_MPC85xx_GPIO_OFFSET 0xF000
|
||||
#define CONFIG_SYS_MPC85xx_SATA1_OFFSET 0x18000
|
||||
#define CONFIG_SYS_MPC85xx_SATA2_OFFSET 0x19000
|
||||
|
@ -2138,6 +2147,17 @@ typedef struct ccsr_sec {
|
|||
#define CONFIG_SYS_FSL_SEC_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_SEC_OFFSET)
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCI1_OFFSET)
|
||||
#define CONFIG_SYS_PCI2_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCI2_OFFSET)
|
||||
#define CONFIG_SYS_PCIE1_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE1_OFFSET)
|
||||
#define CONFIG_SYS_PCIE2_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE2_OFFSET)
|
||||
#define CONFIG_SYS_PCIE3_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE3_OFFSET)
|
||||
|
||||
#define TSEC_BASE_ADDR (CONFIG_SYS_IMMR + CONFIG_SYS_TSEC1_OFFSET)
|
||||
#define MDIO_BASE_ADDR (CONFIG_SYS_IMMR + CONFIG_SYS_MDIO1_OFFSET)
|
||||
|
||||
|
|
|
@ -1257,6 +1257,23 @@ extern immap_t *immr;
|
|||
#define CONFIG_SYS_MPC86xx_DMA_OFFSET (0x21000)
|
||||
#define CONFIG_SYS_MPC86xx_DMA_ADDR (CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_DMA_OFFSET)
|
||||
|
||||
#define CONFIG_SYS_MPC86xx_PCI1_OFFSET 0x8000
|
||||
#ifdef CONFIG_MPC8610
|
||||
#define CONFIG_SYS_MPC86xx_PCIE1_OFFSET 0xa000
|
||||
#else
|
||||
#define CONFIG_SYS_MPC86xx_PCIE1_OFFSET 0x8000
|
||||
#endif
|
||||
#define CONFIG_SYS_MPC86xx_PCIE2_OFFSET 0x9000
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCI1_OFFSET)
|
||||
#define CONFIG_SYS_PCI2_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCI2_OFFSET)
|
||||
#define CONFIG_SYS_PCIE1_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCIE1_OFFSET)
|
||||
#define CONFIG_SYS_PCIE2_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCIE2_OFFSET)
|
||||
|
||||
#define CONFIG_SYS_TSEC1_OFFSET 0x24000
|
||||
#define CONFIG_SYS_MDIO1_OFFSET 0x24000
|
||||
#define CONFIG_SYS_LBC_ADDR (&((immap_t *)CONFIG_SYS_IMMR)->im_lbc)
|
||||
|
|
|
@ -63,6 +63,8 @@
|
|||
#define SDRAM_CFG0 0x20 /* memory controller options 0 */
|
||||
#define SDRAM_CFG1 0x21 /* memory controller options 1 */
|
||||
|
||||
#define SDRAM0_BESR0 0x0000 /* bus error status reg 0 */
|
||||
#define SDRAM0_BESR1 0x0008 /* bus error status reg 1 */
|
||||
#define SDRAM0_BEAR 0x0010 /* bus error address reg */
|
||||
#define SDRAM0_SLIO 0x0018 /* ddr sdram slave interface options */
|
||||
#define SDRAM0_CFG0 0x0020 /* ddr sdram options 0 */
|
||||
|
@ -363,6 +365,7 @@
|
|||
/*
|
||||
* Memory controller registers
|
||||
*/
|
||||
#ifdef CONFIG_405EX
|
||||
#define SDRAM_BESR 0x00 /* PLB bus error status (read/clear) */
|
||||
#define SDRAM_BESRT 0x01 /* PLB bus error status (test/set) */
|
||||
#define SDRAM_BEARL 0x02 /* PLB bus error address low */
|
||||
|
@ -371,11 +374,10 @@
|
|||
#define SDRAM_WMIRQT 0x07 /* PLB write master interrupt (test/set) */
|
||||
#define SDRAM_PLBOPT 0x08 /* PLB slave options */
|
||||
#define SDRAM_PUABA 0x09 /* PLB upper address base */
|
||||
#ifndef CONFIG_405EX
|
||||
#define SDRAM_MCSTAT 0x14 /* memory controller status */
|
||||
#else
|
||||
#define SDRAM_MCSTAT 0x1F /* memory controller status */
|
||||
#endif
|
||||
#else /* CONFIG_405EX */
|
||||
#define SDRAM_MCSTAT 0x14 /* memory controller status */
|
||||
#endif /* CONFIG_405EX */
|
||||
#define SDRAM_MCOPT1 0x20 /* memory controller options 1 */
|
||||
#define SDRAM_MCOPT2 0x21 /* memory controller options 2 */
|
||||
#define SDRAM_MODT0 0x22 /* on die termination for bank 0 */
|
||||
|
|
|
@ -1052,10 +1052,16 @@
|
|||
#define SVR_P2010_E 0x80EB00
|
||||
#define SVR_P2020 0x80E200
|
||||
#define SVR_P2020_E 0x80EA00
|
||||
#define SVR_P3041 0x821103
|
||||
#define SVR_P3041_E 0x821903
|
||||
#define SVR_P4040 0x820100
|
||||
#define SVR_P4040_E 0x820900
|
||||
#define SVR_P4080 0x820000
|
||||
#define SVR_P4080_E 0x820800
|
||||
#define SVR_P5010 0x822100
|
||||
#define SVR_P5010_E 0x822900
|
||||
#define SVR_P5020 0x822000
|
||||
#define SVR_P5020_E 0x822800
|
||||
|
||||
#define SVR_8610 0x80A000
|
||||
#define SVR_8641 0x809000
|
||||
|
|
|
@ -34,7 +34,17 @@ extern flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH ch
|
|||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#define CONFIG_SYS_BCSR3_PCIE 0x10
|
||||
struct board_bcsr {
|
||||
u8 board_id;
|
||||
u8 cpld_rev;
|
||||
u8 led_user;
|
||||
u8 board_status;
|
||||
u8 reset_ctrl;
|
||||
u8 flash_ctrl;
|
||||
u8 eth_ctrl;
|
||||
u8 usb_ctrl;
|
||||
u8 irq_ctrl;
|
||||
};
|
||||
|
||||
#define BOARD_CANYONLANDS_PCIE 1
|
||||
#define BOARD_CANYONLANDS_SATA 2
|
||||
|
@ -112,6 +122,9 @@ int board_early_init_f(void)
|
|||
{
|
||||
#if !defined(CONFIG_ARCHES)
|
||||
u32 sdr0_cust0;
|
||||
struct board_bcsr *bcsr_data =
|
||||
(struct board_bcsr *)CONFIG_SYS_BCSR_BASE;
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -172,14 +185,10 @@ int board_early_init_f(void)
|
|||
|
||||
#if !defined(CONFIG_ARCHES)
|
||||
/* Enable ethernet and take out of reset */
|
||||
out_8((void *)CONFIG_SYS_BCSR_BASE + 6, 0);
|
||||
out_8(&bcsr_data->eth_ctrl, 0) ;
|
||||
|
||||
/* Remove NOR-FLASH, NAND-FLASH & EEPROM hardware write protection */
|
||||
out_8((void *)CONFIG_SYS_BCSR_BASE + 5, 0);
|
||||
|
||||
/* Enable USB host & USB-OTG */
|
||||
out_8((void *)CONFIG_SYS_BCSR_BASE + 7, 0);
|
||||
|
||||
out_8(&bcsr_data->flash_ctrl, 0) ;
|
||||
mtsdr(SDR0_SRST1, 0); /* Pull AHB out of reset default=1 */
|
||||
|
||||
/* Setup PLB4-AHB bridge based on the system address map */
|
||||
|
@ -201,6 +210,41 @@ int board_early_init_f(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_BOARD_INIT)
|
||||
int usb_board_init(void)
|
||||
{
|
||||
struct board_bcsr *bcsr_data =
|
||||
(struct board_bcsr *)CONFIG_SYS_BCSR_BASE;
|
||||
u8 val;
|
||||
|
||||
/* Enable USB host & USB-OTG */
|
||||
val = in_8(&bcsr_data->usb_ctrl);
|
||||
val &= ~(BCSR_USBCTRL_OTG_RST | BCSR_USBCTRL_HOST_RST);
|
||||
out_8(&bcsr_data->usb_ctrl, val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int usb_board_stop(void)
|
||||
{
|
||||
struct board_bcsr *bcsr_data =
|
||||
(struct board_bcsr *)CONFIG_SYS_BCSR_BASE;
|
||||
u8 val;
|
||||
|
||||
/* Disable USB host & USB-OTG */
|
||||
val = in_8(&bcsr_data->usb_ctrl);
|
||||
val |= (BCSR_USBCTRL_OTG_RST | BCSR_USBCTRL_HOST_RST);
|
||||
out_8(&bcsr_data->usb_ctrl, val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int usb_board_init_fail(void)
|
||||
{
|
||||
return usb_board_stop();
|
||||
}
|
||||
#endif /* CONFIG_USB_OHCI_NEW && CONFIG_SYS_USB_OHCI_BOARD_INIT */
|
||||
|
||||
#if !defined(CONFIG_ARCHES)
|
||||
static void canyonlands_sata_init(int board_type)
|
||||
{
|
||||
|
@ -244,11 +288,13 @@ int get_cpu_num(void)
|
|||
#if !defined(CONFIG_ARCHES)
|
||||
int checkboard(void)
|
||||
{
|
||||
struct board_bcsr *bcsr_data =
|
||||
(struct board_bcsr *)CONFIG_SYS_BCSR_BASE;
|
||||
char *s = getenv("serial#");
|
||||
|
||||
if (pvr_460ex()) {
|
||||
printf("Board: Canyonlands - AMCC PPC460EX Evaluation Board");
|
||||
if (in_8((void *)(CONFIG_SYS_BCSR_BASE + 3)) & CONFIG_SYS_BCSR3_PCIE)
|
||||
if (in_8(&bcsr_data->board_status) & BCSR_SELECT_PCIE)
|
||||
gd->board_type = BOARD_CANYONLANDS_PCIE;
|
||||
else
|
||||
gd->board_type = BOARD_CANYONLANDS_SATA;
|
||||
|
@ -268,7 +314,7 @@ int checkboard(void)
|
|||
break;
|
||||
}
|
||||
|
||||
printf(", Rev. %X", in_8((void *)(CONFIG_SYS_BCSR_BASE + 0)));
|
||||
printf(", Rev. %X", in_8(&bcsr_data->cpld_rev));
|
||||
|
||||
if (s != NULL) {
|
||||
puts(", serial# ");
|
||||
|
|
|
@ -292,14 +292,6 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCI2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -396,26 +396,8 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci0", NULL);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie2_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci1", NULL);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci2", NULL);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci3", &pcie3_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci3", NULL);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
#ifdef CONFIG_FSL_SGMII_RISER
|
||||
fsl_sgmii_riser_fdt_fixup(blob);
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2007,2009 Freescale Semiconductor, Inc.
|
||||
* Copyright 2007,2009-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -360,19 +360,8 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie3_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE3
|
||||
ft_fsl_pci_setup(blob, "pci3", &pcie2_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_FSL_SGMII_RISER
|
||||
fsl_sgmii_riser_fdt_fixup(blob);
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2004, 2007, 200 Freescale Semiconductor, Inc.
|
||||
* Copyright 2004, 2007, 2009-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
|
||||
*
|
||||
|
@ -388,11 +388,6 @@ int last_stage_init(void)
|
|||
#if defined(CONFIG_OF_BOARD_SETUP)
|
||||
void ft_pci_setup(void *blob, bd_t *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
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2007,2009 Freescale Semiconductor, Inc.
|
||||
* Copyright 2007,2009-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
|
||||
*
|
||||
|
@ -426,11 +426,6 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_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
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2009 Freescale Semiconductor.
|
||||
* Copyright 2009-2010 Freescale Semiconductor.
|
||||
*
|
||||
* (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
|
||||
*
|
||||
|
@ -635,9 +635,8 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
#endif
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie1_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
fdt_board_fixup_esdhc(blob, bd);
|
||||
fdt_board_fixup_qe_uart(blob, bd);
|
||||
fdt_board_fixup_qe_usb(blob, bd);
|
||||
|
|
|
@ -345,15 +345,8 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
|
||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
||||
|
||||
#ifdef CONFIG_PCIE3
|
||||
ft_fsl_pci_setup(blob, "pci0", &pcie3_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie2_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
#ifdef CONFIG_FSL_SGMII_RISER
|
||||
fsl_sgmii_riser_fdt_fixup(blob);
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2007,2009 Freescale Semiconductor, Inc.
|
||||
* Copyright 2007,2009-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -309,15 +309,7 @@ ft_board_setup(void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_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
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie2_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2008 Freescale Semiconductor, Inc.
|
||||
* Copyright 2008,2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* (C) Copyright 2000
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
|
@ -32,14 +32,14 @@
|
|||
*
|
||||
* 0x0000_0000 0x7fff_ffff DDR 2G
|
||||
* if PCI (prepend 0xc_0000_0000 if CONFIG_PHYS_64BIT)
|
||||
* 0x8000_0000 0x9fff_ffff PCI1 MEM 512M
|
||||
* 0xa000_0000 0xbfff_ffff PCI2 MEM 512M
|
||||
* 0x8000_0000 0x9fff_ffff PCIE1 MEM 512M
|
||||
* 0xa000_0000 0xbfff_ffff PCIE2 MEM 512M
|
||||
* else if RIO (prepend 0xc_0000_0000 if CONFIG_PHYS_64BIT)
|
||||
* 0x8000_0000 0x9fff_ffff RapidIO 512M
|
||||
* endif
|
||||
* (prepend 0xf_0000_0000 if CONFIG_PHYS_64BIT)
|
||||
* 0xffc0_0000 0xffc0_ffff PCI1 IO 64K
|
||||
* 0xffc1_0000 0xffc1_ffff PCI2 IO 64K
|
||||
* 0xffc0_0000 0xffc0_ffff PCIE1 IO 64K
|
||||
* 0xffc1_0000 0xffc1_ffff PCIE2 IO 64K
|
||||
* 0xffe0_0000 0xffef_ffff CCSRBAR 1M
|
||||
* 0xffdf_0000 0xffe0_0000 PIXIS, CF 64K
|
||||
* 0xef80_0000 0xefff_ffff FLASH (boot bank) 8M
|
||||
|
@ -54,10 +54,10 @@ struct law_entry law_table[] = {
|
|||
SET_LAW(CONFIG_SYS_DDR_SDRAM_BASE, LAW_SIZE_256M, LAW_TRGT_IF_DDR_1),
|
||||
#endif
|
||||
#ifdef CONFIG_PCI
|
||||
SET_LAW(CONFIG_SYS_PCI1_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCI2_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(CONFIG_SYS_PCI1_IO_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCI2_IO_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(CONFIG_SYS_PCIE1_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCIE2_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(CONFIG_SYS_PCIE1_IO_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCIE2_IO_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_PCI_2),
|
||||
#elif defined(CONFIG_RIO)
|
||||
SET_LAW(CONFIG_SYS_RIO_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_RIO),
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2006, 2007 Freescale Semiconductor.
|
||||
* Copyright 2006, 2007, 2010 Freescale Semiconductor.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -129,21 +129,21 @@ fixed_sdram(void)
|
|||
|
||||
|
||||
#if defined(CONFIG_PCI)
|
||||
static struct pci_controller pci1_hose;
|
||||
static struct pci_controller pcie1_hose;
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
#ifdef CONFIG_PCI2
|
||||
static struct pci_controller pci2_hose;
|
||||
#endif /* CONFIG_PCI2 */
|
||||
#ifdef CONFIG_PCIE2
|
||||
static struct pci_controller pcie2_hose;
|
||||
#endif /* CONFIG_PCIE2 */
|
||||
|
||||
int first_free_busno = 0;
|
||||
|
||||
void pci_init_board(void)
|
||||
{
|
||||
#ifdef CONFIG_PCI1
|
||||
#ifdef CONFIG_PCIE1
|
||||
{
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI1_ADDR;
|
||||
struct pci_controller *hose = &pci1_hose;
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE1_ADDR;
|
||||
struct pci_controller *hose = &pcie1_hose;
|
||||
struct pci_region *r = hose->regions;
|
||||
volatile immap_t *immap = (immap_t *) CONFIG_SYS_CCSRBAR;
|
||||
volatile ccsr_gur_t *gur = &immap->im_gur;
|
||||
|
@ -169,16 +169,16 @@ void pci_init_board(void)
|
|||
|
||||
/* outbound memory */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI1_MEM_BUS,
|
||||
CONFIG_SYS_PCI1_MEM_PHYS,
|
||||
CONFIG_SYS_PCI1_MEM_SIZE,
|
||||
CONFIG_SYS_PCIE1_MEM_BUS,
|
||||
CONFIG_SYS_PCIE1_MEM_PHYS,
|
||||
CONFIG_SYS_PCIE1_MEM_SIZE,
|
||||
PCI_REGION_MEM);
|
||||
|
||||
/* outbound io */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI1_IO_BUS,
|
||||
CONFIG_SYS_PCI1_IO_PHYS,
|
||||
CONFIG_SYS_PCI1_IO_SIZE,
|
||||
CONFIG_SYS_PCIE1_IO_BUS,
|
||||
CONFIG_SYS_PCIE1_IO_PHYS,
|
||||
CONFIG_SYS_PCIE1_IO_SIZE,
|
||||
PCI_REGION_IO);
|
||||
|
||||
hose->region_count = r - hose->regions;
|
||||
|
@ -195,8 +195,8 @@ void pci_init_board(void)
|
|||
* Activate ULI1575 legacy chip by performing a fake
|
||||
* memory access. Needed to make ULI RTC work.
|
||||
*/
|
||||
in_be32((unsigned *) ((char *)(CONFIG_SYS_PCI1_MEM_VIRT
|
||||
+ CONFIG_SYS_PCI1_MEM_SIZE - 0x1000000)));
|
||||
in_be32((unsigned *) ((char *)(CONFIG_SYS_PCIE1_MEM_VIRT
|
||||
+ CONFIG_SYS_PCIE1_MEM_SIZE - 0x1000000)));
|
||||
|
||||
} else {
|
||||
puts("PCI-EXPRESS 1: Disabled\n");
|
||||
|
@ -204,26 +204,26 @@ void pci_init_board(void)
|
|||
}
|
||||
#else
|
||||
puts("PCI-EXPRESS1: Disabled\n");
|
||||
#endif /* CONFIG_PCI1 */
|
||||
#endif /* CONFIG_PCIE1 */
|
||||
|
||||
#ifdef CONFIG_PCI2
|
||||
#ifdef CONFIG_PCIE2
|
||||
{
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI2_ADDR;
|
||||
struct pci_controller *hose = &pci2_hose;
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE2_ADDR;
|
||||
struct pci_controller *hose = &pcie2_hose;
|
||||
struct pci_region *r = hose->regions;
|
||||
|
||||
/* outbound memory */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI2_MEM_BUS,
|
||||
CONFIG_SYS_PCI2_MEM_PHYS,
|
||||
CONFIG_SYS_PCI2_MEM_SIZE,
|
||||
CONFIG_SYS_PCIE2_MEM_BUS,
|
||||
CONFIG_SYS_PCIE2_MEM_PHYS,
|
||||
CONFIG_SYS_PCIE2_MEM_SIZE,
|
||||
PCI_REGION_MEM);
|
||||
|
||||
/* outbound io */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI2_IO_BUS,
|
||||
CONFIG_SYS_PCI2_IO_PHYS,
|
||||
CONFIG_SYS_PCI2_IO_SIZE,
|
||||
CONFIG_SYS_PCIE2_IO_BUS,
|
||||
CONFIG_SYS_PCIE2_IO_PHYS,
|
||||
CONFIG_SYS_PCIE2_IO_SIZE,
|
||||
PCI_REGION_IO);
|
||||
|
||||
hose->region_count = r - hose->regions;
|
||||
|
@ -238,7 +238,7 @@ void pci_init_board(void)
|
|||
}
|
||||
#else
|
||||
puts("PCI-EXPRESS 2: Disabled\n");
|
||||
#endif /* CONFIG_PCI2 */
|
||||
#endif /* CONFIG_PCIE2 */
|
||||
|
||||
}
|
||||
|
||||
|
@ -253,12 +253,7 @@ ft_board_setup(void *blob, bd_t *bd)
|
|||
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCI2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
/*
|
||||
* Warn if it looks like the device tree doesn't match u-boot.
|
||||
|
|
|
@ -322,23 +322,7 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
|
||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
||||
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pcie1_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci0", NULL);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie2_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci1", NULL);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIE3
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie3_hose);
|
||||
#else
|
||||
ft_fsl_pci_setup(blob, "pci2", NULL);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
#ifdef CONFIG_FSL_SGMII_RISER
|
||||
fsl_sgmii_riser_fdt_fixup(blob);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2009 Freescale Semiconductor, Inc.
|
||||
* Copyright 2009-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -100,16 +100,5 @@ void pci_init_board(void)
|
|||
|
||||
void ft_pci_board_setup(void *blob)
|
||||
{
|
||||
/* According to h/w manual, PCIE2 is at lower address(0x9000)
|
||||
* than PCIE1(0xa000).
|
||||
* Hence PCIE2 is made to occupy the pci1 position in dts to
|
||||
* keep the addresses sorted there.
|
||||
* Generally the case with all FSL SOCs.
|
||||
*/
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie2_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2007-2009 Freescale Semiconductor, Inc.
|
||||
* Copyright 2007-2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -366,15 +366,8 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
|
||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
||||
|
||||
#ifdef CONFIG_PCIE3
|
||||
ft_fsl_pci_setup(blob, "pci0", &pcie3_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie2_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
|
||||
#ifdef CONFIG_FSL_SGMII_RISER
|
||||
fsl_sgmii_riser_fdt_fixup(blob);
|
||||
#endif
|
||||
|
|
|
@ -398,11 +398,9 @@ int last_stage_init(void)
|
|||
void ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
ft_cpu_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);
|
||||
|
||||
#ifdef CONFIG_FSL_PCI_INIT
|
||||
FT_FSL_PCI_SETUP;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -32,11 +32,11 @@
|
|||
*
|
||||
* 0x0000_0000 DDR 256M
|
||||
* 0x1000_0000 DDR2 256M
|
||||
* 0x8000_0000 PCI1 MEM 512M
|
||||
* 0xa000_0000 PCI2 MEM 512M
|
||||
* 0x8000_0000 PCIE1 MEM 512M
|
||||
* 0xa000_0000 PCIE2 MEM 512M
|
||||
* 0xc000_0000 RapidIO 512M
|
||||
* 0xe200_0000 PCI1 IO 16M
|
||||
* 0xe300_0000 PCI2 IO 16M
|
||||
* 0xe200_0000 PCIE1 IO 16M
|
||||
* 0xe300_0000 PCIE2 IO 16M
|
||||
* 0xf800_0000 CCSRBAR 2M
|
||||
* 0xfe00_0000 FLASH (boot bank) 32M
|
||||
*
|
||||
|
@ -49,11 +49,11 @@ struct law_entry law_table[] = {
|
|||
SET_LAW(CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000,
|
||||
LAW_SIZE_256M, LAW_TRGT_IF_DDR_2),
|
||||
#endif
|
||||
SET_LAW(CONFIG_SYS_PCI1_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCI2_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(CONFIG_SYS_PCIE1_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCIE2_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(0xf8000000, LAW_SIZE_2M, LAW_TRGT_IF_LBC),
|
||||
SET_LAW(CONFIG_SYS_PCI1_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCI2_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(CONFIG_SYS_PCIE1_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI_1),
|
||||
SET_LAW(CONFIG_SYS_PCIE2_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI_2),
|
||||
SET_LAW(0xfe000000, LAW_SIZE_32M, LAW_TRGT_IF_LBC),
|
||||
SET_LAW(CONFIG_SYS_RIO_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_RIO)
|
||||
};
|
||||
|
|
|
@ -191,16 +191,16 @@ static struct pci_config_table pci_fsl86xxads_config_table[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
static struct pci_controller pci1_hose = {
|
||||
static struct pci_controller pcie1_hose = {
|
||||
#ifndef CONFIG_PCI_PNP
|
||||
config_table:pci_mpc86xxcts_config_table
|
||||
#endif
|
||||
};
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
#ifdef CONFIG_PCI2
|
||||
static struct pci_controller pci2_hose;
|
||||
#endif /* CONFIG_PCI2 */
|
||||
#ifdef CONFIG_PCIE2
|
||||
static struct pci_controller pcie2_hose;
|
||||
#endif /* CONFIG_PCIE2 */
|
||||
|
||||
int first_free_busno = 0;
|
||||
|
||||
|
@ -212,10 +212,10 @@ void pci_init_board(void)
|
|||
uint io_sel = (gur->pordevsr & MPC8641_PORDEVSR_IO_SEL)
|
||||
>> MPC8641_PORDEVSR_IO_SEL_SHIFT;
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
#ifdef CONFIG_PCIE1
|
||||
{
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI1_ADDR;
|
||||
struct pci_controller *hose = &pci1_hose;
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE1_ADDR;
|
||||
struct pci_controller *hose = &pcie1_hose;
|
||||
struct pci_region *r = hose->regions;
|
||||
#ifdef DEBUG
|
||||
uint host1_agent = (gur->porbmsr & MPC8641_PORBMSR_HA)
|
||||
|
@ -236,16 +236,16 @@ void pci_init_board(void)
|
|||
|
||||
/* outbound memory */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI1_MEM_BUS,
|
||||
CONFIG_SYS_PCI1_MEM_PHYS,
|
||||
CONFIG_SYS_PCI1_MEM_SIZE,
|
||||
CONFIG_SYS_PCIE1_MEM_BUS,
|
||||
CONFIG_SYS_PCIE1_MEM_PHYS,
|
||||
CONFIG_SYS_PCIE1_MEM_SIZE,
|
||||
PCI_REGION_MEM);
|
||||
|
||||
/* outbound io */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI1_IO_BUS,
|
||||
CONFIG_SYS_PCI1_IO_PHYS,
|
||||
CONFIG_SYS_PCI1_IO_SIZE,
|
||||
CONFIG_SYS_PCIE1_IO_BUS,
|
||||
CONFIG_SYS_PCIE1_IO_PHYS,
|
||||
CONFIG_SYS_PCIE1_IO_SIZE,
|
||||
PCI_REGION_IO);
|
||||
|
||||
hose->region_count = r - hose->regions;
|
||||
|
@ -264,26 +264,26 @@ void pci_init_board(void)
|
|||
}
|
||||
#else
|
||||
puts("PCI-EXPRESS1: Disabled\n");
|
||||
#endif /* CONFIG_PCI1 */
|
||||
#endif /* CONFIG_PCIE1 */
|
||||
|
||||
#ifdef CONFIG_PCI2
|
||||
#ifdef CONFIG_PCIE2
|
||||
{
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCI2_ADDR;
|
||||
struct pci_controller *hose = &pci2_hose;
|
||||
volatile ccsr_fsl_pci_t *pci = (ccsr_fsl_pci_t *) CONFIG_SYS_PCIE2_ADDR;
|
||||
struct pci_controller *hose = &pcie2_hose;
|
||||
struct pci_region *r = hose->regions;
|
||||
|
||||
/* outbound memory */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI2_MEM_BUS,
|
||||
CONFIG_SYS_PCI2_MEM_PHYS,
|
||||
CONFIG_SYS_PCI2_MEM_SIZE,
|
||||
CONFIG_SYS_PCIE2_MEM_BUS,
|
||||
CONFIG_SYS_PCIE2_MEM_PHYS,
|
||||
CONFIG_SYS_PCIE2_MEM_SIZE,
|
||||
PCI_REGION_MEM);
|
||||
|
||||
/* outbound io */
|
||||
pci_set_region(r++,
|
||||
CONFIG_SYS_PCI2_IO_BUS,
|
||||
CONFIG_SYS_PCI2_IO_PHYS,
|
||||
CONFIG_SYS_PCI2_IO_SIZE,
|
||||
CONFIG_SYS_PCIE2_IO_BUS,
|
||||
CONFIG_SYS_PCIE2_IO_PHYS,
|
||||
CONFIG_SYS_PCIE2_IO_SIZE,
|
||||
PCI_REGION_IO);
|
||||
|
||||
hose->region_count = r - hose->regions;
|
||||
|
@ -298,7 +298,7 @@ void pci_init_board(void)
|
|||
}
|
||||
#else
|
||||
puts("PCI-EXPRESS 2: Disabled\n");
|
||||
#endif /* CONFIG_PCI2 */
|
||||
#endif /* CONFIG_PCIE2 */
|
||||
|
||||
}
|
||||
|
||||
|
@ -308,12 +308,7 @@ void ft_board_setup (void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
#ifdef CONFIG_PCI1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCI2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pci2_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -27,12 +27,26 @@
|
|||
|
||||
struct ppc4xx_config ppc4xx_config_val[] = {
|
||||
{
|
||||
"600", "CPU: 600 PLB: 200 OPB: 100 EBC: 100",
|
||||
"600-67", "CPU: 600 PLB: 200 OPB: 67 EBC: 67",
|
||||
{
|
||||
0x86, 0x80, 0xce, 0x1f, 0x7d, 0x80, 0x00, 0xe0,
|
||||
0x40, 0x08, 0x23, 0x50, 0x0d, 0x05, 0x00, 0x00
|
||||
}
|
||||
},
|
||||
{
|
||||
"600-100", "CPU: 600 PLB: 200 OPB: 100 EBC: 100",
|
||||
{
|
||||
0x86, 0x80, 0xce, 0x1f, 0x79, 0x80, 0x00, 0xa0,
|
||||
0x40, 0x08, 0x23, 0x50, 0x0d, 0x05, 0x00, 0x00
|
||||
}
|
||||
},
|
||||
{
|
||||
"667", "CPU: 667 PLB: 166 OPB: 83 EBC: 83",
|
||||
{
|
||||
0x06, 0x80, 0xbb, 0x14, 0x99, 0x82, 0x00, 0xa0,
|
||||
0x40, 0x88, 0x23, 0x50, 0x0d, 0x05, 0x00, 0x00
|
||||
}
|
||||
},
|
||||
{
|
||||
"800", "CPU: 800 PLB: 200 OPB: 100 EBC: 100",
|
||||
{
|
||||
|
|
|
@ -81,11 +81,13 @@ tlbtab:
|
|||
tlbentry(CONFIG_SYS_PCIE_BASE, SZ_16K, 0x08010000, 0xc, AC_RW | SA_IG)
|
||||
|
||||
/* TLB-entry for FPGA(s) */
|
||||
tlbentry(CONFIG_SYS_FPGA1_BASE, SZ_1M, CONFIG_SYS_FPGA1_BASE, 4,
|
||||
tlbentry(CONFIG_SYS_FPGA1_BASE, SZ_16M, CONFIG_SYS_FPGA1_BASE, 4,
|
||||
AC_RW | SA_IG)
|
||||
tlbentry(CONFIG_SYS_FPGA2_BASE, SZ_1M, CONFIG_SYS_FPGA2_BASE, 4,
|
||||
tlbentry(CONFIG_SYS_FPGA1_BASE + (16 << 20), SZ_16M,
|
||||
CONFIG_SYS_FPGA1_BASE + (16 << 20), 4, AC_RW | SA_IG)
|
||||
tlbentry(CONFIG_SYS_FPGA2_BASE, SZ_16M, CONFIG_SYS_FPGA2_BASE, 4,
|
||||
AC_RW | SA_IG)
|
||||
tlbentry(CONFIG_SYS_FPGA3_BASE, SZ_1M, CONFIG_SYS_FPGA3_BASE, 4,
|
||||
tlbentry(CONFIG_SYS_FPGA3_BASE, SZ_16M, CONFIG_SYS_FPGA3_BASE, 4,
|
||||
AC_RW | SA_IG)
|
||||
|
||||
/* TLB-entry for OCM */
|
||||
|
|
|
@ -45,7 +45,7 @@ int board_early_init_f(void)
|
|||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
mtdcr(UIC1ER, 0x00000000); /* disable all */
|
||||
mtdcr(UIC1CR, 0x00000000); /* all non-critical */
|
||||
mtdcr(UIC1PR, 0xffffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1PR, 0x7fffffff); /* per ref-board manual */
|
||||
mtdcr(UIC1TR, 0x00000000); /* per ref-board manual */
|
||||
mtdcr(UIC1VR, 0x00000000); /* int31 highest, base=0x000 */
|
||||
mtdcr(UIC1SR, 0xffffffff); /* clear all */
|
||||
|
|
|
@ -687,12 +687,7 @@ void ft_board_setup (void *blob, bd_t *bd)
|
|||
{
|
||||
ft_cpu_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
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif /* CONFIG_OF_BOARD_SETUP */
|
||||
|
||||
|
|
|
@ -398,18 +398,6 @@ void pci_init_board(void)
|
|||
#if defined(CONFIG_OF_BOARD_SETUP)
|
||||
void ft_board_pci_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
/* TODO - make node name (eg pci0) dynamic */
|
||||
#ifdef CONFIG_PCI1
|
||||
ft_fsl_pci_setup(blob, "pci0", &pci1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE1
|
||||
ft_fsl_pci_setup(blob, "pci2", &pcie1_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE2
|
||||
ft_fsl_pci_setup(blob, "pci1", &pcie2_hose);
|
||||
#endif
|
||||
#ifdef CONFIG_PCIE3
|
||||
ft_fsl_pci_setup(blob, "pci0", &pcie3_hose);
|
||||
#endif
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
||||
#endif /* CONFIG_OF_BOARD_SETUP */
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
* (C) Copyright 2007
|
||||
* Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
|
||||
*
|
||||
* Copyright 2010 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
|
@ -861,3 +863,292 @@ void fdt_del_node_and_alias(void *blob, const char *alias)
|
|||
off = fdt_path_offset(blob, "/aliases");
|
||||
fdt_delprop(blob, off, alias);
|
||||
}
|
||||
|
||||
/* Helper to read a big number; size is in cells (not bytes) */
|
||||
static inline u64 of_read_number(const __be32 *cell, int size)
|
||||
{
|
||||
u64 r = 0;
|
||||
while (size--)
|
||||
r = (r << 32) | be32_to_cpu(*(cell++));
|
||||
return r;
|
||||
}
|
||||
|
||||
static int of_n_cells(const void *blob, int nodeoffset, const char *name)
|
||||
{
|
||||
int np;
|
||||
const int *ip;
|
||||
|
||||
do {
|
||||
np = fdt_parent_offset(blob, nodeoffset);
|
||||
|
||||
if (np >= 0)
|
||||
nodeoffset = np;
|
||||
ip = (int *)fdt_getprop(blob, nodeoffset, name, NULL);
|
||||
if (ip)
|
||||
return be32_to_cpup(ip);
|
||||
} while (np >= 0);
|
||||
|
||||
/* No #<NAME>-cells property for the root node */
|
||||
return 1;
|
||||
}
|
||||
|
||||
int of_n_addr_cells(const void *blob, int nodeoffset)
|
||||
{
|
||||
return of_n_cells(blob, nodeoffset, "#address-cells");
|
||||
}
|
||||
|
||||
int of_n_size_cells(const void *blob, int nodeoffset)
|
||||
{
|
||||
return of_n_cells(blob, nodeoffset, "#size-cells");
|
||||
}
|
||||
|
||||
#define PRu64 "%llx"
|
||||
|
||||
/* Max address size we deal with */
|
||||
#define OF_MAX_ADDR_CELLS 4
|
||||
#define OF_BAD_ADDR ((u64)-1)
|
||||
#define OF_CHECK_COUNTS(na, ns) ((na) > 0 && (na) <= OF_MAX_ADDR_CELLS && \
|
||||
(ns) > 0)
|
||||
|
||||
/* Debug utility */
|
||||
#ifdef DEBUG
|
||||
static void of_dump_addr(const char *s, const u32 *addr, int na)
|
||||
{
|
||||
printf("%s", s);
|
||||
while(na--)
|
||||
printf(" %08x", *(addr++));
|
||||
printf("\n");
|
||||
}
|
||||
#else
|
||||
static void of_dump_addr(const char *s, const u32 *addr, int na) { }
|
||||
#endif
|
||||
|
||||
/* Callbacks for bus specific translators */
|
||||
struct of_bus {
|
||||
const char *name;
|
||||
const char *addresses;
|
||||
void (*count_cells)(void *blob, int offset,
|
||||
int *addrc, int *sizec);
|
||||
u64 (*map)(u32 *addr, const u32 *range,
|
||||
int na, int ns, int pna);
|
||||
int (*translate)(u32 *addr, u64 offset, int na);
|
||||
};
|
||||
|
||||
/* Default translator (generic bus) */
|
||||
static void of_bus_default_count_cells(void *blob, int offset,
|
||||
int *addrc, int *sizec)
|
||||
{
|
||||
if (addrc)
|
||||
*addrc = of_n_addr_cells(blob, offset);
|
||||
if (sizec)
|
||||
*sizec = of_n_size_cells(blob, offset);
|
||||
}
|
||||
|
||||
static u64 of_bus_default_map(u32 *addr, const u32 *range,
|
||||
int na, int ns, int pna)
|
||||
{
|
||||
u64 cp, s, da;
|
||||
|
||||
cp = of_read_number(range, na);
|
||||
s = of_read_number(range + na + pna, ns);
|
||||
da = of_read_number(addr, na);
|
||||
|
||||
debug("OF: default map, cp="PRu64", s="PRu64", da="PRu64"\n",
|
||||
cp, s, da);
|
||||
|
||||
if (da < cp || da >= (cp + s))
|
||||
return OF_BAD_ADDR;
|
||||
return da - cp;
|
||||
}
|
||||
|
||||
static int of_bus_default_translate(u32 *addr, u64 offset, int na)
|
||||
{
|
||||
u64 a = of_read_number(addr, na);
|
||||
memset(addr, 0, na * 4);
|
||||
a += offset;
|
||||
if (na > 1)
|
||||
addr[na - 2] = a >> 32;
|
||||
addr[na - 1] = a & 0xffffffffu;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Array of bus specific translators */
|
||||
static struct of_bus of_busses[] = {
|
||||
/* Default */
|
||||
{
|
||||
.name = "default",
|
||||
.addresses = "reg",
|
||||
.count_cells = of_bus_default_count_cells,
|
||||
.map = of_bus_default_map,
|
||||
.translate = of_bus_default_translate,
|
||||
},
|
||||
};
|
||||
|
||||
static int of_translate_one(void * blob, int parent, struct of_bus *bus,
|
||||
struct of_bus *pbus, u32 *addr,
|
||||
int na, int ns, int pna, const char *rprop)
|
||||
{
|
||||
const u32 *ranges;
|
||||
int rlen;
|
||||
int rone;
|
||||
u64 offset = OF_BAD_ADDR;
|
||||
|
||||
/* Normally, an absence of a "ranges" property means we are
|
||||
* crossing a non-translatable boundary, and thus the addresses
|
||||
* below the current not cannot be converted to CPU physical ones.
|
||||
* Unfortunately, while this is very clear in the spec, it's not
|
||||
* what Apple understood, and they do have things like /uni-n or
|
||||
* /ht nodes with no "ranges" property and a lot of perfectly
|
||||
* useable mapped devices below them. Thus we treat the absence of
|
||||
* "ranges" as equivalent to an empty "ranges" property which means
|
||||
* a 1:1 translation at that level. It's up to the caller not to try
|
||||
* to translate addresses that aren't supposed to be translated in
|
||||
* the first place. --BenH.
|
||||
*/
|
||||
ranges = (u32 *)fdt_getprop(blob, parent, rprop, &rlen);
|
||||
if (ranges == NULL || rlen == 0) {
|
||||
offset = of_read_number(addr, na);
|
||||
memset(addr, 0, pna * 4);
|
||||
debug("OF: no ranges, 1:1 translation\n");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
debug("OF: walking ranges...\n");
|
||||
|
||||
/* Now walk through the ranges */
|
||||
rlen /= 4;
|
||||
rone = na + pna + ns;
|
||||
for (; rlen >= rone; rlen -= rone, ranges += rone) {
|
||||
offset = bus->map(addr, ranges, na, ns, pna);
|
||||
if (offset != OF_BAD_ADDR)
|
||||
break;
|
||||
}
|
||||
if (offset == OF_BAD_ADDR) {
|
||||
debug("OF: not found !\n");
|
||||
return 1;
|
||||
}
|
||||
memcpy(addr, ranges + na, 4 * pna);
|
||||
|
||||
finish:
|
||||
of_dump_addr("OF: parent translation for:", addr, pna);
|
||||
debug("OF: with offset: "PRu64"\n", offset);
|
||||
|
||||
/* Translate it into parent bus space */
|
||||
return pbus->translate(addr, offset, pna);
|
||||
}
|
||||
|
||||
/*
|
||||
* Translate an address from the device-tree into a CPU physical address,
|
||||
* this walks up the tree and applies the various bus mappings on the
|
||||
* way.
|
||||
*
|
||||
* Note: We consider that crossing any level with #size-cells == 0 to mean
|
||||
* that translation is impossible (that is we are not dealing with a value
|
||||
* that can be mapped to a cpu physical address). This is not really specified
|
||||
* that way, but this is traditionally the way IBM at least do things
|
||||
*/
|
||||
u64 __of_translate_address(void *blob, int node_offset, const u32 *in_addr,
|
||||
const char *rprop)
|
||||
{
|
||||
int parent;
|
||||
struct of_bus *bus, *pbus;
|
||||
u32 addr[OF_MAX_ADDR_CELLS];
|
||||
int na, ns, pna, pns;
|
||||
u64 result = OF_BAD_ADDR;
|
||||
|
||||
debug("OF: ** translation for device %s **\n",
|
||||
fdt_get_name(blob, node_offset, NULL));
|
||||
|
||||
/* Get parent & match bus type */
|
||||
parent = fdt_parent_offset(blob, node_offset);
|
||||
if (parent < 0)
|
||||
goto bail;
|
||||
bus = &of_busses[0];
|
||||
|
||||
/* Cound address cells & copy address locally */
|
||||
bus->count_cells(blob, node_offset, &na, &ns);
|
||||
if (!OF_CHECK_COUNTS(na, ns)) {
|
||||
printf("%s: Bad cell count for %s\n", __FUNCTION__,
|
||||
fdt_get_name(blob, node_offset, NULL));
|
||||
goto bail;
|
||||
}
|
||||
memcpy(addr, in_addr, na * 4);
|
||||
|
||||
debug("OF: bus is %s (na=%d, ns=%d) on %s\n",
|
||||
bus->name, na, ns, fdt_get_name(blob, parent, NULL));
|
||||
of_dump_addr("OF: translating address:", addr, na);
|
||||
|
||||
/* Translate */
|
||||
for (;;) {
|
||||
/* Switch to parent bus */
|
||||
node_offset = parent;
|
||||
parent = fdt_parent_offset(blob, node_offset);
|
||||
|
||||
/* If root, we have finished */
|
||||
if (parent < 0) {
|
||||
debug("OF: reached root node\n");
|
||||
result = of_read_number(addr, na);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Get new parent bus and counts */
|
||||
pbus = &of_busses[0];
|
||||
pbus->count_cells(blob, node_offset, &pna, &pns);
|
||||
if (!OF_CHECK_COUNTS(pna, pns)) {
|
||||
printf("%s: Bad cell count for %s\n", __FUNCTION__,
|
||||
fdt_get_name(blob, node_offset, NULL));
|
||||
break;
|
||||
}
|
||||
|
||||
debug("OF: parent bus is %s (na=%d, ns=%d) on %s\n",
|
||||
pbus->name, pna, pns, fdt_get_name(blob, parent, NULL));
|
||||
|
||||
/* Apply bus translation */
|
||||
if (of_translate_one(blob, node_offset, bus, pbus,
|
||||
addr, na, ns, pna, rprop))
|
||||
break;
|
||||
|
||||
/* Complete the move up one level */
|
||||
na = pna;
|
||||
ns = pns;
|
||||
bus = pbus;
|
||||
|
||||
of_dump_addr("OF: one level translation:", addr, na);
|
||||
}
|
||||
bail:
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
u64 fdt_translate_address(void *blob, int node_offset, const u32 *in_addr)
|
||||
{
|
||||
return __of_translate_address(blob, node_offset, in_addr, "ranges");
|
||||
}
|
||||
|
||||
/**
|
||||
* fdt_node_offset_by_compat_reg: Find a node that matches compatiable and
|
||||
* who's reg property matches a physical cpu address
|
||||
*
|
||||
* @blob: ptr to device tree
|
||||
* @compat: compatiable string to match
|
||||
* @compat_off: property name
|
||||
*
|
||||
*/
|
||||
int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
|
||||
phys_addr_t compat_off)
|
||||
{
|
||||
int len, off = fdt_node_offset_by_compatible(blob, -1, compat);
|
||||
while (off != -FDT_ERR_NOTFOUND) {
|
||||
u32 *reg = (u32 *)fdt_getprop(blob, off, "reg", &len);
|
||||
if (reg) {
|
||||
if (compat_off == fdt_translate_address(blob, off, reg))
|
||||
return off;
|
||||
}
|
||||
off = fdt_node_offset_by_compatible(blob, off, compat);
|
||||
}
|
||||
|
||||
return -FDT_ERR_NOTFOUND;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -43,7 +43,8 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
defined(CONFIG_P1013) || defined(CONFIG_P1022) || \
|
||||
defined(CONFIG_P2010) || defined(CONFIG_P2020)
|
||||
#define FSL_HW_NUM_LAWS 12
|
||||
#elif defined(CONFIG_PPC_P4080)
|
||||
#elif defined(CONFIG_PPC_P3041) || defined(CONFIG_PPC_P4080) || \
|
||||
defined(CONFIG_PPC_P5020)
|
||||
#define FSL_HW_NUM_LAWS 32
|
||||
#else
|
||||
#error FSL_HW_NUM_LAWS not defined for this platform
|
||||
|
|
|
@ -510,18 +510,25 @@ void fsl_pci_config_unlock(struct pci_controller *hose)
|
|||
#include <libfdt.h>
|
||||
#include <fdt_support.h>
|
||||
|
||||
void ft_fsl_pci_setup(void *blob, const char *pci_alias,
|
||||
struct pci_controller *hose)
|
||||
void ft_fsl_pci_setup(void *blob, const char *pci_compat,
|
||||
struct pci_controller *hose, unsigned long ctrl_addr)
|
||||
{
|
||||
int off = fdt_path_offset(blob, pci_alias);
|
||||
int off;
|
||||
u32 bus_range[2];
|
||||
phys_addr_t p_ctrl_addr = (phys_addr_t)ctrl_addr;
|
||||
|
||||
/* convert ctrl_addr to true physical address */
|
||||
p_ctrl_addr = (phys_addr_t)ctrl_addr - CONFIG_SYS_CCSRBAR;
|
||||
p_ctrl_addr += CONFIG_SYS_CCSRBAR_PHYS;
|
||||
|
||||
off = fdt_node_offset_by_compat_reg(blob, pci_compat, p_ctrl_addr);
|
||||
|
||||
if (off < 0)
|
||||
return;
|
||||
|
||||
/* We assume a cfg_addr not being set means we didn't setup the controller */
|
||||
if ((hose == NULL) || (hose->cfg_addr == NULL)) {
|
||||
fdt_del_node_and_alias(blob, pci_alias);
|
||||
fdt_del_node(blob, off);
|
||||
} else {
|
||||
bus_range[0] = 0;
|
||||
bus_range[1] = hose->last_busno - hose->first_busno;
|
||||
|
|
|
@ -91,9 +91,6 @@
|
|||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define PCI_SPEED 33333000 /* CPLD currenlty does not have PCI setup info */
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCI2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR2
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
#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_SYS_HAS_SERDES /* has SERDES */
|
||||
|
||||
#define CONFIG_FSL_LAW 1 /* Use common FSL init code */
|
||||
#define CONFIG_E1000 1 /* Defind e1000 pci Ethernet card*/
|
||||
|
@ -125,11 +126,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 /* CCSRBAR Default */
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR + 0x8000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR + 0xa000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR + 0x9000)
|
||||
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_CCSRBAR + 0xb000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
#define CONFIG_FSL_DDR2
|
||||
|
|
|
@ -79,11 +79,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_CCSRBAR+0xb000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR2
|
||||
#undef CONFIG_FSL_DDR_INTERACTIVE
|
||||
|
|
|
@ -80,10 +80,6 @@ extern unsigned long get_clock_freq(void);
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCI2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR2
|
||||
#undef CONFIG_FSL_DDR_INTERACTIVE
|
||||
|
|
|
@ -75,9 +75,6 @@ extern unsigned long get_clock_freq(void);
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR2
|
||||
#undef CONFIG_FSL_DDR_INTERACTIVE
|
||||
|
|
|
@ -103,9 +103,6 @@ extern unsigned long get_clock_freq(void);
|
|||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 /* CCSRBAR Default */
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR3
|
||||
#undef CONFIG_FSL_DDR_INTERACTIVE
|
||||
|
|
|
@ -89,10 +89,6 @@
|
|||
#endif
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
#define CONFIG_FSL_DDR2
|
||||
|
|
|
@ -82,10 +82,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS_HIGH 0x0
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR_PHYS_LOW
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
|
||||
#define CONFIG_SYS_DIU_ADDR (CONFIG_SYS_CCSRBAR+0x2c000)
|
||||
|
||||
/* DDR Setup */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2006 Freescale Semiconductor.
|
||||
* Copyright 2006, 2010 Freescale Semiconductor.
|
||||
*
|
||||
* Srikanth Srinivasan (srikanth.srinivasan@freescale.com)
|
||||
*
|
||||
|
@ -58,8 +58,8 @@
|
|||
|
||||
#ifndef CONFIG_RIO /* RIO/PCI are mutually exclusive */
|
||||
#define CONFIG_PCI 1 /* Enable PCI/PCIE */
|
||||
#define CONFIG_PCI1 1 /* PCIE controler 1 (ULI bridge) */
|
||||
#define CONFIG_PCI2 1 /* PCIE controler 2 (slot) */
|
||||
#define CONFIG_PCIE1 1 /* PCIE controler 1 (ULI bridge) */
|
||||
#define CONFIG_PCIE2 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 */
|
||||
#endif
|
||||
|
@ -122,9 +122,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR_PHYS_LOW
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCI2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
|
||||
/*
|
||||
* DDR Setup
|
||||
*/
|
||||
|
@ -328,43 +325,43 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
* Addresses are mapped 1-1.
|
||||
*/
|
||||
|
||||
#define CONFIG_SYS_PCI1_MEM_VIRT 0x80000000
|
||||
#define CONFIG_SYS_PCIE1_MEM_VIRT 0x80000000
|
||||
#ifdef CONFIG_PHYS_64BIT
|
||||
#define CONFIG_SYS_PCI1_MEM_BUS 0xe0000000
|
||||
#define CONFIG_SYS_PCI1_MEM_PHYS 0x0000000c00000000ULL
|
||||
#define CONFIG_SYS_PCIE1_MEM_BUS 0xe0000000
|
||||
#define CONFIG_SYS_PCIE1_MEM_PHYS 0x0000000c00000000ULL
|
||||
#else
|
||||
#define CONFIG_SYS_PCI1_MEM_BUS CONFIG_SYS_PCI1_MEM_VIRT
|
||||
#define CONFIG_SYS_PCI1_MEM_PHYS CONFIG_SYS_PCI1_MEM_VIRT
|
||||
#define CONFIG_SYS_PCIE1_MEM_BUS CONFIG_SYS_PCIE1_MEM_VIRT
|
||||
#define CONFIG_SYS_PCIE1_MEM_PHYS CONFIG_SYS_PCIE1_MEM_VIRT
|
||||
#endif
|
||||
#define CONFIG_SYS_PCI1_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCI1_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCI1_IO_VIRT 0xffc00000
|
||||
#define CONFIG_SYS_PCI1_IO_PHYS (CONFIG_SYS_PCI1_IO_VIRT \
|
||||
#define CONFIG_SYS_PCIE1_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE1_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCIE1_IO_VIRT 0xffc00000
|
||||
#define CONFIG_SYS_PCIE1_IO_PHYS (CONFIG_SYS_PCIE1_IO_VIRT \
|
||||
| CONFIG_SYS_PHYS_ADDR_HIGH)
|
||||
#define CONFIG_SYS_PCI1_IO_SIZE 0x00010000 /* 64K */
|
||||
#define CONFIG_SYS_PCIE1_IO_SIZE 0x00010000 /* 64K */
|
||||
|
||||
#ifdef CONFIG_PHYS_64BIT
|
||||
/*
|
||||
* Use the same PCI bus address on PCI1 and PCI2 if we have PHYS_64BIT.
|
||||
* Use the same PCI bus address on PCIE1 and PCIE2 if we have PHYS_64BIT.
|
||||
* This will increase the amount of PCI address space available for
|
||||
* for mapping RAM.
|
||||
*/
|
||||
#define CONFIG_SYS_PCI2_MEM_BUS CONFIG_SYS_PCI1_MEM_BUS
|
||||
#define CONFIG_SYS_PCIE2_MEM_BUS CONFIG_SYS_PCIE1_MEM_BUS
|
||||
#else
|
||||
#define CONFIG_SYS_PCI2_MEM_BUS (CONFIG_SYS_PCI1_MEM_BUS \
|
||||
+ CONFIG_SYS_PCI1_MEM_SIZE)
|
||||
#define CONFIG_SYS_PCIE2_MEM_BUS (CONFIG_SYS_PCIE1_MEM_BUS \
|
||||
+ CONFIG_SYS_PCIE1_MEM_SIZE)
|
||||
#endif
|
||||
#define CONFIG_SYS_PCI2_MEM_VIRT (CONFIG_SYS_PCI1_MEM_VIRT \
|
||||
+ CONFIG_SYS_PCI1_MEM_SIZE)
|
||||
#define CONFIG_SYS_PCI2_MEM_PHYS (CONFIG_SYS_PCI1_MEM_PHYS \
|
||||
+ CONFIG_SYS_PCI1_MEM_SIZE)
|
||||
#define CONFIG_SYS_PCI2_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCI2_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCI2_IO_VIRT (CONFIG_SYS_PCI1_IO_VIRT \
|
||||
+ CONFIG_SYS_PCI1_IO_SIZE)
|
||||
#define CONFIG_SYS_PCI2_IO_PHYS (CONFIG_SYS_PCI1_IO_PHYS \
|
||||
+ CONFIG_SYS_PCI1_IO_SIZE)
|
||||
#define CONFIG_SYS_PCI2_IO_SIZE CONFIG_SYS_PCI1_IO_SIZE
|
||||
#define CONFIG_SYS_PCIE2_MEM_VIRT (CONFIG_SYS_PCIE1_MEM_VIRT \
|
||||
+ CONFIG_SYS_PCIE1_MEM_SIZE)
|
||||
#define CONFIG_SYS_PCIE2_MEM_PHYS (CONFIG_SYS_PCIE1_MEM_PHYS \
|
||||
+ CONFIG_SYS_PCIE1_MEM_SIZE)
|
||||
#define CONFIG_SYS_PCIE2_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE2_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCIE2_IO_VIRT (CONFIG_SYS_PCIE1_IO_VIRT \
|
||||
+ CONFIG_SYS_PCIE1_IO_SIZE)
|
||||
#define CONFIG_SYS_PCIE2_IO_PHYS (CONFIG_SYS_PCIE1_IO_PHYS \
|
||||
+ CONFIG_SYS_PCIE1_IO_SIZE)
|
||||
#define CONFIG_SYS_PCIE2_IO_SIZE CONFIG_SYS_PCIE1_IO_SIZE
|
||||
|
||||
#if defined(CONFIG_PCI)
|
||||
|
||||
|
@ -393,10 +390,10 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_OHCI_SWAP_REG_ACCESS 1
|
||||
|
||||
/*PCIE video card used*/
|
||||
#define VIDEO_IO_OFFSET CONFIG_SYS_PCI2_IO_VIRT
|
||||
#define VIDEO_IO_OFFSET CONFIG_SYS_PCIE2_IO_VIRT
|
||||
|
||||
/*PCI video card used*/
|
||||
/*#define VIDEO_IO_OFFSET CONFIG_SYS_PCI1_IO_VIRT*/
|
||||
/*#define VIDEO_IO_OFFSET CONFIG_SYS_PCIE1_IO_VIRT*/
|
||||
|
||||
/* video */
|
||||
#define CONFIG_VIDEO
|
||||
|
@ -409,7 +406,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_ATI_RADEON_FB
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
/*#define CONFIG_CONSOLE_CURSOR*/
|
||||
#define CONFIG_SYS_ISA_IO_BASE_ADDRESS CONFIG_SYS_PCI2_IO_VIRT
|
||||
#define CONFIG_SYS_ISA_IO_BASE_ADDRESS CONFIG_SYS_PCIE2_IO_VIRT
|
||||
#endif
|
||||
|
||||
#undef CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
|
||||
|
@ -425,8 +422,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_SCSI_MAXDEVICE CONFIG_SYS_SCSI_MAX_DEVICE
|
||||
#endif
|
||||
|
||||
#define CONFIG_MPC86XX_PCI2
|
||||
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
#if defined(CONFIG_TSEC_ENET)
|
||||
|
@ -497,17 +492,17 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_IBAT1U CONFIG_SYS_DBAT1U
|
||||
|
||||
/* if CONFIG_PCI:
|
||||
* BAT2 PCI1 and PCI1 MEM
|
||||
* BAT2 PCIE1 and PCIE1 MEM
|
||||
* if CONFIG_RIO
|
||||
* BAT2 Rapidio Memory
|
||||
*/
|
||||
#ifdef CONFIG_PCI
|
||||
#define CONFIG_SYS_DBAT2L (BAT_PHYS_ADDR(CONFIG_SYS_PCI1_MEM_PHYS) \
|
||||
#define CONFIG_SYS_DBAT2L (BAT_PHYS_ADDR(CONFIG_SYS_PCIE1_MEM_PHYS) \
|
||||
| BATL_PP_RW | BATL_CACHEINHIBIT \
|
||||
| BATL_GUARDEDSTORAGE)
|
||||
#define CONFIG_SYS_DBAT2U (CONFIG_SYS_PCI1_MEM_VIRT | BATU_BL_1G \
|
||||
#define CONFIG_SYS_DBAT2U (CONFIG_SYS_PCIE1_MEM_VIRT | BATU_BL_1G \
|
||||
| BATU_VS | BATU_VP)
|
||||
#define CONFIG_SYS_IBAT2L (BAT_PHYS_ADDR(CONFIG_SYS_PCI1_MEM_PHYS) \
|
||||
#define CONFIG_SYS_IBAT2L (BAT_PHYS_ADDR(CONFIG_SYS_PCIE1_MEM_PHYS) \
|
||||
| BATL_PP_RW | BATL_CACHEINHIBIT)
|
||||
#define CONFIG_SYS_IBAT2U CONFIG_SYS_DBAT2U
|
||||
#else /* CONFIG_RIO */
|
||||
|
@ -556,14 +551,14 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#endif
|
||||
|
||||
/*
|
||||
* BAT4 PCI1_IO and PCI2_IO
|
||||
* BAT4 PCIE1_IO and PCIE2_IO
|
||||
*/
|
||||
#define CONFIG_SYS_DBAT4L (BAT_PHYS_ADDR(CONFIG_SYS_PCI1_IO_PHYS) \
|
||||
#define CONFIG_SYS_DBAT4L (BAT_PHYS_ADDR(CONFIG_SYS_PCIE1_IO_PHYS) \
|
||||
| BATL_PP_RW | BATL_CACHEINHIBIT \
|
||||
| BATL_GUARDEDSTORAGE)
|
||||
#define CONFIG_SYS_DBAT4U (CONFIG_SYS_PCI1_IO_VIRT | BATU_BL_128K \
|
||||
#define CONFIG_SYS_DBAT4U (CONFIG_SYS_PCIE1_IO_VIRT | BATU_BL_128K \
|
||||
| BATU_VS | BATU_VP)
|
||||
#define CONFIG_SYS_IBAT4L (BAT_PHYS_ADDR(CONFIG_SYS_PCI1_IO_PHYS) \
|
||||
#define CONFIG_SYS_IBAT4L (BAT_PHYS_ADDR(CONFIG_SYS_PCIE1_IO_PHYS) \
|
||||
| BATL_PP_RW | BATL_CACHEINHIBIT)
|
||||
#define CONFIG_SYS_IBAT4U CONFIG_SYS_DBAT4U
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#define CONFIG_FSL_PCI_INIT /* Use common FSL init code */
|
||||
#define CONFIG_FSL_PCIE_RESET /* need PCIe reset errata */
|
||||
#define CONFIG_SYS_PCI_64BIT /* enable 64-bit PCI resources */
|
||||
#define CONFIG_SYS_HAS_SERDES /* has SERDES */
|
||||
|
||||
#define CONFIG_PHYS_64BIT
|
||||
#define CONFIG_ENABLE_36BIT_PHYS
|
||||
|
@ -60,10 +61,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS 0xfffe00000ull
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR
|
||||
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR + 0x9000) /* pci0 */
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR + 0xa000) /* pci1 */
|
||||
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_CCSRBAR + 0xb000) /* pci2 */
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_DDR_SPD
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
|
|
|
@ -129,9 +129,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 /* CCSRBAR Default */
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR2
|
||||
#undef CONFIG_FSL_DDR_INTERACTIVE
|
||||
|
|
|
@ -90,10 +90,6 @@
|
|||
#endif
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
#define CONFIG_FSL_DDR3 1
|
||||
|
|
|
@ -137,10 +137,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR + 0x8000)
|
||||
#define CONFIG_SYS_PCI2_ADDR (CONFIG_SYS_CCSRBAR + 0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR + 0xa000)
|
||||
|
||||
/*
|
||||
* DDR Setup
|
||||
*/
|
||||
|
|
|
@ -97,8 +97,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS_LOW CONFIG_SYS_CCSRBAR
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS_HIGH 0x0
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR + 0x8000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR + 0x9000)
|
||||
|
||||
/*
|
||||
* Diagnostics
|
||||
|
|
|
@ -81,7 +81,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR 0xef000000 /* relocated CCSRBAR */
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR + 0x8000)
|
||||
|
||||
/*
|
||||
* Diagnostics
|
||||
|
|
|
@ -99,8 +99,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
|
|||
#define CONFIG_SYS_CCSRBAR 0xef000000 /* relocated CCSRBAR */
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR + 0xa000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR + 0x9000)
|
||||
|
||||
/*
|
||||
* Diagnostics
|
||||
|
|
|
@ -77,6 +77,13 @@
|
|||
#define CONFIG_SYS_PCIE0_XCFGBASE 0xc3000000
|
||||
#define CONFIG_SYS_PCIE1_XCFGBASE 0xc3001000
|
||||
|
||||
/*
|
||||
* BCSR bits as defined in the Canyonlands board user manual.
|
||||
*/
|
||||
#define BCSR_USBCTRL_OTG_RST 0x32
|
||||
#define BCSR_USBCTRL_HOST_RST 0x01
|
||||
#define BCSR_SELECT_PCIE 0x10
|
||||
|
||||
#define CONFIG_SYS_PCIE0_UTLBASE 0xc08010000ULL /* 36bit physical addr */
|
||||
|
||||
/* base address of inbound PCIe window */
|
||||
|
@ -417,6 +424,7 @@
|
|||
#define CONFIG_SYS_USB_OHCI_REGS_BASE (CONFIG_SYS_AHB_BASE | 0xd0000)
|
||||
#define CONFIG_SYS_USB_OHCI_SLOT_NAME "ppc440"
|
||||
#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 15
|
||||
#define CONFIG_SYS_USB_OHCI_BOARD_INIT
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
@ -202,6 +202,7 @@
|
|||
*/
|
||||
#define CONFIG_CMD_CHIP_CONFIG
|
||||
#define CONFIG_CMD_DATE
|
||||
#define CONFIG_CMD_ECCTEST
|
||||
#define CONFIG_CMD_EXT2
|
||||
#define CONFIG_CMD_FAT
|
||||
#define CONFIG_CMD_PCI
|
||||
|
|
|
@ -109,10 +109,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR /* physical addr of CCSRBAR */
|
||||
#define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR /* PQII uses CONFIG_SYS_IMMR */
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCI2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
|
||||
|
||||
/* DDR Setup */
|
||||
#define CONFIG_FSL_DDR2
|
||||
#undef CONFIG_FSL_DDR_INTERACTIVE
|
||||
|
|
|
@ -56,8 +56,8 @@
|
|||
#define CONFIG_SYS_SCRATCH_VA 0xe8000000
|
||||
|
||||
#define CONFIG_PCI 1 /* Enable PCIE */
|
||||
#define CONFIG_PCI1 1 /* PCIE controler 1 (slot 1) */
|
||||
#define CONFIG_PCI2 1 /* PCIE controler 2 (slot 2) */
|
||||
#define CONFIG_PCIE1 1 /* PCIE controler 1 (slot 1) */
|
||||
#define CONFIG_PCIE2 1 /* PCIE controler 2 (slot 2) */
|
||||
#define CONFIG_FSL_PCI_INIT 1 /* Use common FSL init code */
|
||||
#define CONFIG_FSL_LAW 1 /* Use common FSL init code */
|
||||
|
||||
|
@ -108,9 +108,6 @@
|
|||
#define CONFIG_SYS_CCSRBAR_PHYS_HIGH 0x0
|
||||
#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR_PHYS_LOW
|
||||
|
||||
#define CONFIG_SYS_PCI1_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
|
||||
#define CONFIG_SYS_PCI2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
|
||||
|
||||
/*
|
||||
* DDR Setup
|
||||
*/
|
||||
|
@ -307,23 +304,23 @@
|
|||
* General PCI
|
||||
* Addresses are mapped 1-1.
|
||||
*/
|
||||
#define CONFIG_SYS_PCI1_MEM_BUS 0x80000000
|
||||
#define CONFIG_SYS_PCI1_MEM_PHYS CONFIG_SYS_PCI1_MEM_BUS
|
||||
#define CONFIG_SYS_PCI1_MEM_VIRT CONFIG_SYS_PCI1_MEM_BUS
|
||||
#define CONFIG_SYS_PCI1_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCI1_IO_BUS 0xe2000000
|
||||
#define CONFIG_SYS_PCI1_IO_PHYS CONFIG_SYS_PCI1_IO_BUS
|
||||
#define CONFIG_SYS_PCI1_IO_VIRT CONFIG_SYS_PCI1_IO_BUS
|
||||
#define CONFIG_SYS_PCI1_IO_SIZE 0x1000000 /* 16M */
|
||||
#define CONFIG_SYS_PCIE1_MEM_BUS 0x80000000
|
||||
#define CONFIG_SYS_PCIE1_MEM_PHYS CONFIG_SYS_PCIE1_MEM_BUS
|
||||
#define CONFIG_SYS_PCIE1_MEM_VIRT CONFIG_SYS_PCIE1_MEM_BUS
|
||||
#define CONFIG_SYS_PCIE1_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE1_IO_BUS 0xe2000000
|
||||
#define CONFIG_SYS_PCIE1_IO_PHYS CONFIG_SYS_PCIE1_IO_BUS
|
||||
#define CONFIG_SYS_PCIE1_IO_VIRT CONFIG_SYS_PCIE1_IO_BUS
|
||||
#define CONFIG_SYS_PCIE1_IO_SIZE 0x1000000 /* 16M */
|
||||
|
||||
#define CONFIG_SYS_PCI2_MEM_BUS 0xa0000000
|
||||
#define CONFIG_SYS_PCI2_MEM_PHYS CONFIG_SYS_PCI2_MEM_BUS
|
||||
#define CONFIG_SYS_PCI2_MEM_VIRT CONFIG_SYS_PCI2_MEM_BUS
|
||||
#define CONFIG_SYS_PCI2_MEM_SIZE 0x10000000 /* 256M */
|
||||
#define CONFIG_SYS_PCI2_IO_BUS 0xe3000000
|
||||
#define CONFIG_SYS_PCI2_IO_PHYS CONFIG_SYS_PCI2_IO_BUS
|
||||
#define CONFIG_SYS_PCI2_IO_VIRT CONFIG_SYS_PCI2_IO_BUS
|
||||
#define CONFIG_SYS_PCI2_IO_SIZE 0x1000000 /* 16M */
|
||||
#define CONFIG_SYS_PCIE2_MEM_BUS 0xa0000000
|
||||
#define CONFIG_SYS_PCIE2_MEM_PHYS CONFIG_SYS_PCIE2_MEM_BUS
|
||||
#define CONFIG_SYS_PCIE2_MEM_VIRT CONFIG_SYS_PCIE2_MEM_BUS
|
||||
#define CONFIG_SYS_PCIE2_MEM_SIZE 0x10000000 /* 256M */
|
||||
#define CONFIG_SYS_PCIE2_IO_BUS 0xe3000000
|
||||
#define CONFIG_SYS_PCIE2_IO_PHYS CONFIG_SYS_PCIE2_IO_BUS
|
||||
#define CONFIG_SYS_PCIE2_IO_VIRT CONFIG_SYS_PCIE2_IO_BUS
|
||||
#define CONFIG_SYS_PCIE2_IO_SIZE 0x1000000 /* 16M */
|
||||
|
||||
#if defined(CONFIG_PCI)
|
||||
|
||||
|
@ -409,10 +406,10 @@
|
|||
* 0xa000_0000 512M PCI-Express 2 Memory
|
||||
* Changed it for operating from 0xd0000000
|
||||
*/
|
||||
#define CONFIG_SYS_DBAT1L ( CONFIG_SYS_PCI1_MEM_PHYS | BATL_PP_RW \
|
||||
#define CONFIG_SYS_DBAT1L ( CONFIG_SYS_PCIE1_MEM_PHYS | BATL_PP_RW \
|
||||
| BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
|
||||
#define CONFIG_SYS_DBAT1U (CONFIG_SYS_PCI1_MEM_VIRT | BATU_BL_256M | BATU_VS | BATU_VP)
|
||||
#define CONFIG_SYS_IBAT1L (CONFIG_SYS_PCI1_MEM_PHYS | BATL_PP_RW | BATL_CACHEINHIBIT)
|
||||
#define CONFIG_SYS_DBAT1U (CONFIG_SYS_PCIE1_MEM_VIRT | BATU_BL_256M | BATU_VS | BATU_VP)
|
||||
#define CONFIG_SYS_IBAT1L (CONFIG_SYS_PCIE1_MEM_PHYS | BATL_PP_RW | BATL_CACHEINHIBIT)
|
||||
#define CONFIG_SYS_IBAT1U CONFIG_SYS_DBAT1U
|
||||
|
||||
/*
|
||||
|
@ -452,10 +449,10 @@
|
|||
* 0xe300_0000 16M PCI-Express 2 I/0
|
||||
* Note that this is at 0xe0000000
|
||||
*/
|
||||
#define CONFIG_SYS_DBAT4L ( CONFIG_SYS_PCI1_IO_PHYS | BATL_PP_RW \
|
||||
#define CONFIG_SYS_DBAT4L ( CONFIG_SYS_PCIE1_IO_PHYS | BATL_PP_RW \
|
||||
| BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
|
||||
#define CONFIG_SYS_DBAT4U (CONFIG_SYS_PCI1_IO_VIRT | BATU_BL_32M | BATU_VS | BATU_VP)
|
||||
#define CONFIG_SYS_IBAT4L (CONFIG_SYS_PCI1_IO_PHYS | BATL_PP_RW | BATL_CACHEINHIBIT)
|
||||
#define CONFIG_SYS_DBAT4U (CONFIG_SYS_PCIE1_IO_VIRT | BATU_BL_32M | BATU_VS | BATU_VP)
|
||||
#define CONFIG_SYS_IBAT4L (CONFIG_SYS_PCIE1_IO_PHYS | BATL_PP_RW | BATL_CACHEINHIBIT)
|
||||
#define CONFIG_SYS_IBAT4U CONFIG_SYS_DBAT4U
|
||||
|
||||
/*
|
||||
|
|
|
@ -74,8 +74,8 @@
|
|||
#define CONFIG_SYS_FLASH_SIZE (64 << 20)
|
||||
|
||||
#define CONFIG_SYS_FPGA1_BASE 0xe0000000
|
||||
#define CONFIG_SYS_FPGA2_BASE 0xe0100000
|
||||
#define CONFIG_SYS_FPGA3_BASE 0xe0200000
|
||||
#define CONFIG_SYS_FPGA2_BASE 0xe2000000
|
||||
#define CONFIG_SYS_FPGA3_BASE 0xe4000000
|
||||
|
||||
#define CONFIG_SYS_BOOT_BASE_ADDR 0xFF000000 /* EBC Boot Space */
|
||||
#define CONFIG_SYS_FLASH_BASE_PHYS_H 0x4
|
||||
|
@ -84,14 +84,12 @@
|
|||
(((u64)CONFIG_SYS_FLASH_BASE_PHYS_H << 32) \
|
||||
| (u64)CONFIG_SYS_FLASH_BASE_PHYS_L)
|
||||
|
||||
#define CONFIG_SYS_OCM_BASE 0xE3000000 /* OCM: 64k */
|
||||
#define CONFIG_SYS_OCM_BASE 0xE7000000 /* OCM: 64k */
|
||||
#define CONFIG_SYS_SRAM_BASE 0xE8000000 /* SRAM: 256k */
|
||||
#define CONFIG_SYS_LOCAL_CONF_REGS 0xEF000000
|
||||
|
||||
#define CONFIG_SYS_PERIPHERAL_BASE 0xEF600000 /* internal periph. */
|
||||
|
||||
#define CONFIG_SYS_AHB_BASE 0xE2000000 /* int. AHB periph. */
|
||||
|
||||
/*
|
||||
* Initial RAM & stack pointer (placed in OCM)
|
||||
*/
|
||||
|
@ -121,6 +119,7 @@
|
|||
#define CONFIG_SYS_FLASH_CFI /* The flash is CFI compatible */
|
||||
#define CONFIG_FLASH_CFI_DRIVER /* Use common CFI driver */
|
||||
#define CONFIG_SYS_FLASH_CFI_AMD_RESET 1 /* Use AMD reset cmd */
|
||||
#define CONFIG_SYS_CFI_FLASH_STATUS_POLL /* use status poll method */
|
||||
|
||||
#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
|
||||
#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max num of memory banks */
|
||||
|
@ -144,10 +143,13 @@
|
|||
/*
|
||||
* DDR2 SDRAM
|
||||
*/
|
||||
#define CONFIG_SYS_MBYTES_SDRAM 256
|
||||
#define CONFIG_DDR_ECC
|
||||
#define CONFIG_AUTOCALIB "silent\0" /* default is non-verbose */
|
||||
#define CONFIG_PPC4xx_DDR_AUTOCALIBRATION /* IBM DDR autocalibration */
|
||||
#define DEBUG_PPC4xx_DDR_AUTOCALIBRATION /* dynamic DDR autocal debug */
|
||||
#undef CONFIG_PPC4xx_DDR_METHOD_A
|
||||
#define CONFIG_DDR_RFDC_FIXED 0x000001D7 /* optimal value */
|
||||
|
||||
/* DDR1/2 SDRAM Device Control Register Data Values */
|
||||
/* Memory Queue */
|
||||
|
@ -162,9 +164,6 @@
|
|||
#define CONFIG_SYS_SDRAM_CONF1HB 0x80001C80
|
||||
#define CONFIG_SYS_SDRAM_CONFPATHB 0x10a68000
|
||||
|
||||
#define CONFIG_DDR_ECC
|
||||
#define CONFIG_SYS_MBYTES_SDRAM 256
|
||||
|
||||
#define CAS_LATENCY JEDEC_MA_MR_CL_DDR2_5_0_CLK
|
||||
|
||||
/* DDR1/2 SDRAM Device Control Register Data Values */
|
||||
|
@ -360,6 +359,7 @@
|
|||
* Commands additional to the ones defined in amcc-common.h
|
||||
*/
|
||||
#define CONFIG_CMD_CHIP_CONFIG
|
||||
#define CONFIG_CMD_ECCTEST
|
||||
#define CONFIG_CMD_PCI
|
||||
#define CONFIG_CMD_SDRAM
|
||||
|
||||
|
@ -417,7 +417,7 @@
|
|||
#define CONFIG_SYS_EBC_PB1AP (EBC_BXAP_BME_DISABLED | \
|
||||
EBC_BXAP_TWT_ENCODE(5) | \
|
||||
EBC_BXAP_CSN_ENCODE(0) | \
|
||||
EBC_BXAP_OEN_ENCODE(4) | \
|
||||
EBC_BXAP_OEN_ENCODE(3) | \
|
||||
EBC_BXAP_WBN_ENCODE(0) | \
|
||||
EBC_BXAP_WBF_ENCODE(0) | \
|
||||
EBC_BXAP_TH_ENCODE(1) | \
|
||||
|
@ -426,7 +426,7 @@
|
|||
EBC_BXAP_BEM_RW | \
|
||||
EBC_BXAP_PEN_DISABLED)
|
||||
#define CONFIG_SYS_EBC_PB1CR (EBC_BXCR_BAS_ENCODE(CONFIG_SYS_FPGA1_BASE) | \
|
||||
EBC_BXCR_BS_1MB | \
|
||||
EBC_BXCR_BS_32MB | \
|
||||
EBC_BXCR_BU_RW | \
|
||||
EBC_BXCR_BW_32BIT)
|
||||
|
||||
|
@ -434,7 +434,7 @@
|
|||
#define CONFIG_SYS_EBC_PB2AP (EBC_BXAP_BME_DISABLED | \
|
||||
EBC_BXAP_TWT_ENCODE(5) | \
|
||||
EBC_BXAP_CSN_ENCODE(0) | \
|
||||
EBC_BXAP_OEN_ENCODE(4) | \
|
||||
EBC_BXAP_OEN_ENCODE(3) | \
|
||||
EBC_BXAP_WBN_ENCODE(0) | \
|
||||
EBC_BXAP_WBF_ENCODE(0) | \
|
||||
EBC_BXAP_TH_ENCODE(1) | \
|
||||
|
@ -443,7 +443,7 @@
|
|||
EBC_BXAP_BEM_RW | \
|
||||
EBC_BXAP_PEN_DISABLED)
|
||||
#define CONFIG_SYS_EBC_PB2CR (EBC_BXCR_BAS_ENCODE(CONFIG_SYS_FPGA2_BASE) | \
|
||||
EBC_BXCR_BS_1MB | \
|
||||
EBC_BXCR_BS_16MB | \
|
||||
EBC_BXCR_BU_RW | \
|
||||
EBC_BXCR_BW_32BIT)
|
||||
|
||||
|
@ -451,7 +451,7 @@
|
|||
#define CONFIG_SYS_EBC_PB3AP (EBC_BXAP_BME_DISABLED | \
|
||||
EBC_BXAP_TWT_ENCODE(5) | \
|
||||
EBC_BXAP_CSN_ENCODE(0) | \
|
||||
EBC_BXAP_OEN_ENCODE(4) | \
|
||||
EBC_BXAP_OEN_ENCODE(3) | \
|
||||
EBC_BXAP_WBN_ENCODE(0) | \
|
||||
EBC_BXAP_WBF_ENCODE(0) | \
|
||||
EBC_BXAP_TH_ENCODE(1) | \
|
||||
|
@ -460,7 +460,7 @@
|
|||
EBC_BXAP_BEM_RW | \
|
||||
EBC_BXAP_PEN_DISABLED)
|
||||
#define CONFIG_SYS_EBC_PB3CR (EBC_BXCR_BAS_ENCODE(CONFIG_SYS_FPGA3_BASE) | \
|
||||
EBC_BXCR_BS_1MB | \
|
||||
EBC_BXCR_BS_16MB | \
|
||||
EBC_BXCR_BU_RW | \
|
||||
EBC_BXCR_BW_32BIT)
|
||||
|
||||
|
|
|
@ -83,6 +83,9 @@ int fdt_fixup_nor_flash_size(void *blob, int cs, u32 size);
|
|||
|
||||
void fdt_fixup_mtdparts(void *fdt, void *node_info, int node_info_size);
|
||||
void fdt_del_node_and_alias(void *blob, const char *alias);
|
||||
u64 fdt_translate_address(void *blob, int node_offset, const u32 *in_addr);
|
||||
int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
|
||||
phys_addr_t compat_off);
|
||||
|
||||
#endif /* ifdef CONFIG_OF_LIBFDT */
|
||||
#endif /* ifndef __FDT_SUPPORT_H */
|
||||
|
|
Loading…
Reference in a new issue