Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
This commit is contained in:
commit
557a331908
@ -44,6 +44,7 @@ obj-$(CONFIG_PPC_P5020) += p5020_ids.o
|
||||
obj-$(CONFIG_PPC_P5040) += p5040_ids.o
|
||||
obj-$(CONFIG_PPC_T4240) += t4240_ids.o
|
||||
obj-$(CONFIG_PPC_T4160) += t4240_ids.o
|
||||
obj-$(CONFIG_PPC_T4080) += t4240_ids.o
|
||||
obj-$(CONFIG_PPC_B4420) += b4860_ids.o
|
||||
obj-$(CONFIG_PPC_B4860) += b4860_ids.o
|
||||
obj-$(CONFIG_PPC_T1040) += t1040_ids.o
|
||||
@ -88,6 +89,7 @@ obj-$(CONFIG_PPC_P5020) += p5020_serdes.o
|
||||
obj-$(CONFIG_PPC_P5040) += p5040_serdes.o
|
||||
obj-$(CONFIG_PPC_T4240) += t4240_serdes.o
|
||||
obj-$(CONFIG_PPC_T4160) += t4240_serdes.o
|
||||
obj-$(CONFIG_PPC_T4080) += t4240_serdes.o
|
||||
obj-$(CONFIG_PPC_B4420) += b4860_serdes.o
|
||||
obj-$(CONFIG_PPC_B4860) += b4860_serdes.o
|
||||
obj-$(CONFIG_BSC9132) += bsc9132_serdes.o
|
||||
|
@ -77,6 +77,30 @@ int checkcpu (void)
|
||||
major = SVR_MAJ(svr);
|
||||
minor = SVR_MIN(svr);
|
||||
|
||||
#if defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2) && defined(CONFIG_E6500)
|
||||
if (SVR_SOC_VER(svr) == SVR_T4080) {
|
||||
ccsr_rcpm_t *rcpm =
|
||||
(void __iomem *)(CONFIG_SYS_FSL_CORENET_RCPM_ADDR);
|
||||
|
||||
setbits_be32(&gur->devdisr2, FSL_CORENET_DEVDISR2_DTSEC1_6 ||
|
||||
FSL_CORENET_DEVDISR2_DTSEC1_9);
|
||||
setbits_be32(&gur->devdisr3, FSL_CORENET_DEVDISR3_PCIE3);
|
||||
setbits_be32(&gur->devdisr5, FSL_CORENET_DEVDISR5_DDR3);
|
||||
|
||||
/* It needs SW to disable core4~7 as HW design sake on T4080 */
|
||||
for (i = 4; i < 8; i++)
|
||||
cpu_disable(i);
|
||||
|
||||
/* request core4~7 into PH20 state, prior to entering PCL10
|
||||
* state, all cores in cluster should be placed in PH20 state.
|
||||
*/
|
||||
setbits_be32(&rcpm->pcph20setr, 0xf0);
|
||||
|
||||
/* put the 2nd cluster into PCL10 state */
|
||||
setbits_be32(&rcpm->clpcl10setr, 1 << 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cpu_numcores() > 1) {
|
||||
#ifndef CONFIG_MP
|
||||
puts("Unicore software on multiprocessor system!!\n"
|
||||
|
@ -368,12 +368,12 @@ void fsl_erratum_a007212_workaround(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void cpu_init_f (void)
|
||||
ulong cpu_init_f(void)
|
||||
{
|
||||
ulong flag = 0;
|
||||
extern void m8560_cpm_reset (void);
|
||||
#ifdef CONFIG_SYS_DCSRBAR_PHYS
|
||||
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
|
||||
#endif
|
||||
#if defined(CONFIG_SECURE_BOOT)
|
||||
struct law_entry law;
|
||||
@ -442,13 +442,14 @@ void cpu_init_f (void)
|
||||
#ifdef CONFIG_DEEP_SLEEP
|
||||
/* disable the console if boot from deep sleep */
|
||||
if (in_be32(&gur->scrtsr[0]) & (1 << 3))
|
||||
gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
|
||||
flag = GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
|
||||
fsl_erratum_a007212_workaround();
|
||||
#endif
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
/* Implement a dummy function for those platforms w/o SERDES */
|
||||
@ -462,10 +463,17 @@ __attribute__((weak, alias("__fsl_serdes__init"))) void fsl_serdes_init(void);
|
||||
int enable_cluster_l2(void)
|
||||
{
|
||||
int i = 0;
|
||||
u32 cluster;
|
||||
u32 cluster, svr = get_svr();
|
||||
ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
struct ccsr_cluster_l2 __iomem *l2cache;
|
||||
|
||||
/* only the L2 of first cluster should be enabled as expected on T4080,
|
||||
* but there is no EOC in the first cluster as HW sake, so return here
|
||||
* to skip enabling L2 cache of the 2nd cluster.
|
||||
*/
|
||||
if (SVR_SOC_VER(svr) == SVR_T4080)
|
||||
return 0;
|
||||
|
||||
cluster = in_be32(&gur->tp_cluster[i].lower);
|
||||
if (cluster & TP_CLUSTER_EOC)
|
||||
return 0;
|
||||
@ -888,6 +896,7 @@ skip_l2:
|
||||
}
|
||||
#endif
|
||||
|
||||
init_used_tlb_cams();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -102,11 +102,13 @@ void cpu_init_early_f(void *fdt)
|
||||
for (i = 0; i < sizeof(gd_t); i++)
|
||||
((char *)gd)[i] = 0;
|
||||
|
||||
#ifdef CONFIG_QEMU_E500
|
||||
/*
|
||||
* CONFIG_SYS_CCSRBAR_PHYS below may use gd->fdt_blob on ePAPR systems,
|
||||
* so we need to populate it before it accesses it.
|
||||
*/
|
||||
gd->fdt_blob = fdt;
|
||||
#endif
|
||||
|
||||
mas0 = MAS0_TLBSEL(1) | MAS0_ESEL(13);
|
||||
mas1 = MAS1_VALID | MAS1_TID(0) | MAS1_TS | MAS1_TSIZE(BOOKE_PAGESZ_1M);
|
||||
|
@ -123,7 +123,8 @@ void get_sys_info(sys_info_t *sys_info)
|
||||
* T4240/T4160 Rev1.0. eg. It's 12 in Rev1.0, however, for Rev2.0
|
||||
* it uses 6.
|
||||
*/
|
||||
#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
|
||||
#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
|
||||
defined(CONFIG_PPC_T4080)
|
||||
if (SVR_MAJ(get_svr()) >= 2)
|
||||
mem_pll_rat *= 2;
|
||||
#endif
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
void cpu_init_f(void)
|
||||
ulong cpu_init_f(void)
|
||||
{
|
||||
#ifdef CONFIG_SYS_INIT_L2_ADDR
|
||||
ccsr_l2cache_t *l2cache = (void *)CONFIG_SYS_MPC85xx_L2_ADDR;
|
||||
@ -27,6 +27,8 @@ void cpu_init_f(void)
|
||||
out_be32(&l2cache->l2ctl,
|
||||
(MPC85xx_L2CTL_L2E | MPC85xx_L2CTL_L2SRAM_ENTIRE));
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_SYS_FSL_TBCLK_DIV
|
||||
|
@ -314,7 +314,7 @@ l2_disabled:
|
||||
#endif
|
||||
mtspr HID0,r0
|
||||
|
||||
#ifndef CONFIG_E500MC
|
||||
#if !defined(CONFIG_E500MC) && !defined(CONFIG_QEMU_E500)
|
||||
li r0,(HID1_ASTME|HID1_ABE)@l /* Addr streaming & broadcast */
|
||||
mfspr r3,PVR
|
||||
andi. r3,r3, 0xff
|
||||
@ -1158,7 +1158,7 @@ _start_cont:
|
||||
mtmsr r3
|
||||
isync
|
||||
|
||||
bl cpu_init_f
|
||||
bl cpu_init_f /* return boot_flag for calling board_init_f */
|
||||
bl board_init_f
|
||||
isync
|
||||
|
||||
|
@ -64,11 +64,13 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_SRIO
|
||||
struct srio_liodn_id_table srio_liodn_tbl[] = {
|
||||
SET_SRIO_LIODN_BASE(1, 307),
|
||||
SET_SRIO_LIODN_BASE(2, 387),
|
||||
};
|
||||
int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
|
||||
#endif
|
||||
|
||||
struct liodn_id_table liodn_tbl[] = {
|
||||
#ifdef CONFIG_SYS_DPAA_QBMAN
|
||||
|
@ -172,7 +172,7 @@ static const struct serdes_config serdes4_cfg_tbl[] = {
|
||||
{18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}},
|
||||
{}
|
||||
};
|
||||
#elif defined(CONFIG_PPC_T4160)
|
||||
#elif defined(CONFIG_PPC_T4160) || defined(CONFIG_PPC_T4080)
|
||||
static const struct serdes_config serdes1_cfg_tbl[] = {
|
||||
/* SerDes 1 */
|
||||
{1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9,
|
||||
|
@ -273,6 +273,7 @@ diag_done:
|
||||
/* bl l2cache_enable */
|
||||
|
||||
/* run 1st part of board init code (from Flash) */
|
||||
li r3, 0 /* clear boot_flag for calling board_init_f */
|
||||
bl board_init_f
|
||||
sync
|
||||
|
||||
|
@ -62,6 +62,7 @@ static struct cpu_type cpu_type_list[] = {
|
||||
CPU_TYPE_ENTRY(T4240, T4240, 0),
|
||||
CPU_TYPE_ENTRY(T4120, T4120, 0),
|
||||
CPU_TYPE_ENTRY(T4160, T4160, 0),
|
||||
CPU_TYPE_ENTRY(T4080, T4080, 4),
|
||||
CPU_TYPE_ENTRY(B4860, B4860, 0),
|
||||
CPU_TYPE_ENTRY(G4860, G4860, 0),
|
||||
CPU_TYPE_ENTRY(G4060, G4060, 0),
|
||||
@ -176,7 +177,7 @@ struct cpu_type *identify_cpu(u32 ver)
|
||||
/*
|
||||
* Return a 32-bit mask indicating which cores are present on this SOC.
|
||||
*/
|
||||
u32 cpu_mask(void)
|
||||
__weak u32 cpu_mask(void)
|
||||
{
|
||||
ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
|
||||
struct cpu_type *cpu = gd->arch.cpu;
|
||||
@ -195,7 +196,7 @@ u32 cpu_mask(void)
|
||||
/*
|
||||
* Return the number of cores on this SOC.
|
||||
*/
|
||||
int cpu_numcores(void)
|
||||
__weak int cpu_numcores(void)
|
||||
{
|
||||
struct cpu_type *cpu = gd->arch.cpu;
|
||||
|
||||
|
@ -595,7 +595,8 @@
|
||||
#define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
|
||||
#define CONFIG_ESDHC_HC_BLK_ADDR
|
||||
|
||||
#elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
|
||||
#elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
|
||||
defined(CONFIG_PPC_T4080)
|
||||
#define CONFIG_E6500
|
||||
#define CONFIG_SYS_PPC64 /* 64-bit core */
|
||||
#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
|
||||
@ -611,13 +612,18 @@
|
||||
#define CONFIG_SYS_NUM_FM2_10GEC 2
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 3
|
||||
#else
|
||||
#define CONFIG_MAX_CPUS 8
|
||||
#define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1 }
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 7
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 6
|
||||
#define CONFIG_SYS_NUM_FM1_10GEC 1
|
||||
#define CONFIG_SYS_NUM_FM2_DTSEC 7
|
||||
#define CONFIG_SYS_NUM_FM2_DTSEC 8
|
||||
#define CONFIG_SYS_NUM_FM2_10GEC 1
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 2
|
||||
#if defined(CONFIG_PPC_T4160)
|
||||
#define CONFIG_MAX_CPUS 8
|
||||
#define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1 }
|
||||
#elif defined(CONFIG_PPC_T4080)
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1 }
|
||||
#endif
|
||||
#endif
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 5
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 32
|
||||
@ -798,6 +804,9 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
|
||||
#define CONFIG_SYS_FSL_SFP_VER_3_0
|
||||
#define CONFIG_SYS_FSL_ISBC_VER 2
|
||||
#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A006261
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A006593
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A006379
|
||||
#define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
|
||||
|
||||
|
||||
|
@ -16,6 +16,7 @@ static inline bool has_erratum_a006379(void)
|
||||
u32 svr = get_svr();
|
||||
if (((SVR_SOC_VER(svr) == SVR_T4240) && SVR_MAJ(svr) <= 1) ||
|
||||
((SVR_SOC_VER(svr) == SVR_T4160) && SVR_MAJ(svr) <= 1) ||
|
||||
((SVR_SOC_VER(svr) == SVR_T4080) && SVR_MAJ(svr) <= 1) ||
|
||||
((SVR_SOC_VER(svr) == SVR_B4860) && SVR_MAJ(svr) <= 2) ||
|
||||
((SVR_SOC_VER(svr) == SVR_B4420) && SVR_MAJ(svr) <= 2) ||
|
||||
((SVR_SOC_VER(svr) == SVR_T2080) && SVR_MAJ(svr) <= 1) ||
|
||||
@ -49,9 +50,13 @@ static inline bool has_erratum_a006261(void)
|
||||
return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
|
||||
case SVR_T4240:
|
||||
case SVR_T4160:
|
||||
case SVR_T4080:
|
||||
return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
|
||||
case SVR_T1040:
|
||||
return IS_SVR_REV(svr, 1, 0);
|
||||
case SVR_T2080:
|
||||
case SVR_T2081:
|
||||
return IS_SVR_REV(svr, 1, 0);
|
||||
case SVR_P5040:
|
||||
return IS_SVR_REV(svr, 1, 0);
|
||||
}
|
||||
|
@ -20,8 +20,9 @@
|
||||
#if defined(CONFIG_B4860QDS) || \
|
||||
defined(CONFIG_T4240QDS) || \
|
||||
defined(CONFIG_T2080QDS) || \
|
||||
defined(CONFIG_T2080RDB) || \
|
||||
defined(CONFIG_T1040QDS) || \
|
||||
defined(CONFIG_T1040RDB)
|
||||
defined(CONFIG_T104xRDB)
|
||||
#define CONFIG_SYS_CPC_REINIT_F
|
||||
#undef CONFIG_SYS_INIT_L3_ADDR
|
||||
#define CONFIG_SYS_INIT_L3_ADDR 0xbff00000
|
||||
|
@ -1748,7 +1748,8 @@ typedef struct ccsr_gur {
|
||||
/* use reserved bits 18~23 as scratch space to host DDR PLL ratio */
|
||||
#define FSL_CORENET_RCWSR0_MEM_PLL_RAT_RESV_SHIFT 8
|
||||
#define FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK 0x3f
|
||||
#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
|
||||
#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
|
||||
defined(CONFIG_PPC_T4080)
|
||||
#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL 0xfc000000
|
||||
#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT 26
|
||||
#define FSL_CORENET2_RCWSR4_SRDS2_PRTCL 0x00fe0000
|
||||
@ -1848,7 +1849,8 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
|
||||
#define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC5_MII 0x00100000
|
||||
#define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC5_NONE 0x00180000
|
||||
#endif
|
||||
#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
|
||||
#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
|
||||
defined(CONFIG_PPC_T4080)
|
||||
#define FSL_CORENET_RCWSR13_EC1 0x60000000 /* bits 417..418 */
|
||||
#define FSL_CORENET_RCWSR13_EC1_FM2_DTSEC5_RGMII 0x00000000
|
||||
#define FSL_CORENET_RCWSR13_EC1_FM2_GPIO 0x40000000
|
||||
|
@ -1111,6 +1111,7 @@
|
||||
#define SVR_T4240 0x824000
|
||||
#define SVR_T4120 0x824001
|
||||
#define SVR_T4160 0x824100
|
||||
#define SVR_T4080 0x824102
|
||||
#define SVR_C291 0x850000
|
||||
#define SVR_C292 0x850020
|
||||
#define SVR_C293 0x850030
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "../common/qixis.h"
|
||||
#include "../common/vsc3316_3308.h"
|
||||
#include "../common/idt8t49n222a_serdes_clk.h"
|
||||
#include "../common/zm7300.h"
|
||||
#include "b4860qds.h"
|
||||
#include "b4860qds_qixis.h"
|
||||
#include "b4860qds_crossbar_con.h"
|
||||
@ -94,6 +95,238 @@ int select_i2c_ch_pca(u8 ch)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* read_voltage from sensor on I2C bus
|
||||
* We use average of 4 readings, waiting for 532us befor another reading
|
||||
*/
|
||||
#define WAIT_FOR_ADC 532 /* wait for 532 microseconds for ADC */
|
||||
#define NUM_READINGS 4 /* prefer to be power of 2 for efficiency */
|
||||
|
||||
static inline int read_voltage(void)
|
||||
{
|
||||
int i, ret, voltage_read = 0;
|
||||
u16 vol_mon;
|
||||
|
||||
for (i = 0; i < NUM_READINGS; i++) {
|
||||
ret = i2c_read(I2C_VOL_MONITOR_ADDR,
|
||||
I2C_VOL_MONITOR_BUS_V_OFFSET, 1, (void *)&vol_mon, 2);
|
||||
if (ret) {
|
||||
printf("VID: failed to read core voltage\n");
|
||||
return ret;
|
||||
}
|
||||
if (vol_mon & I2C_VOL_MONITOR_BUS_V_OVF) {
|
||||
printf("VID: Core voltage sensor error\n");
|
||||
return -1;
|
||||
}
|
||||
debug("VID: bus voltage reads 0x%04x\n", vol_mon);
|
||||
/* LSB = 4mv */
|
||||
voltage_read += (vol_mon >> I2C_VOL_MONITOR_BUS_V_SHIFT) * 4;
|
||||
udelay(WAIT_FOR_ADC);
|
||||
}
|
||||
/* calculate the average */
|
||||
voltage_read /= NUM_READINGS;
|
||||
|
||||
return voltage_read;
|
||||
}
|
||||
|
||||
static int adjust_vdd(ulong vdd_override)
|
||||
{
|
||||
int re_enable = disable_interrupts();
|
||||
ccsr_gur_t __iomem *gur =
|
||||
(void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
u32 fusesr;
|
||||
u8 vid;
|
||||
int vdd_target, vdd_last;
|
||||
int existing_voltage, temp_voltage, voltage; /* all in 1/10 mV */
|
||||
int ret;
|
||||
unsigned int orig_i2c_speed;
|
||||
unsigned long vdd_string_override;
|
||||
char *vdd_string;
|
||||
static const uint16_t vdd[32] = {
|
||||
0, /* unused */
|
||||
9875, /* 0.9875V */
|
||||
9750,
|
||||
9625,
|
||||
9500,
|
||||
9375,
|
||||
9250,
|
||||
9125,
|
||||
9000,
|
||||
8875,
|
||||
8750,
|
||||
8625,
|
||||
8500,
|
||||
8375,
|
||||
8250,
|
||||
8125,
|
||||
10000, /* 1.0000V */
|
||||
10125,
|
||||
10250,
|
||||
10375,
|
||||
10500,
|
||||
10625,
|
||||
10750,
|
||||
10875,
|
||||
11000,
|
||||
0, /* reserved */
|
||||
};
|
||||
struct vdd_drive {
|
||||
u8 vid;
|
||||
unsigned voltage;
|
||||
};
|
||||
|
||||
ret = select_i2c_ch_pca(I2C_MUX_CH_VOL_MONITOR);
|
||||
if (ret) {
|
||||
printf("VID: I2c failed to switch channel\n");
|
||||
ret = -1;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* get the voltage ID from fuse status register */
|
||||
fusesr = in_be32(&gur->dcfg_fusesr);
|
||||
vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_VID_SHIFT) &
|
||||
FSL_CORENET_DCFG_FUSESR_VID_MASK;
|
||||
if (vid == FSL_CORENET_DCFG_FUSESR_VID_MASK) {
|
||||
vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
|
||||
FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
|
||||
}
|
||||
vdd_target = vdd[vid];
|
||||
debug("VID:Reading from from fuse,vid=%x vdd is %dmV\n",
|
||||
vid, vdd_target/10);
|
||||
|
||||
/* check override variable for overriding VDD */
|
||||
vdd_string = getenv("b4qds_vdd_mv");
|
||||
if (vdd_override == 0 && vdd_string &&
|
||||
!strict_strtoul(vdd_string, 10, &vdd_string_override))
|
||||
vdd_override = vdd_string_override;
|
||||
if (vdd_override >= 819 && vdd_override <= 1212) {
|
||||
vdd_target = vdd_override * 10; /* convert to 1/10 mV */
|
||||
debug("VDD override is %lu\n", vdd_override);
|
||||
} else if (vdd_override != 0) {
|
||||
printf("Invalid value.\n");
|
||||
}
|
||||
|
||||
if (vdd_target == 0) {
|
||||
printf("VID: VID not used\n");
|
||||
ret = 0;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read voltage monitor to check real voltage.
|
||||
* Voltage monitor LSB is 4mv.
|
||||
*/
|
||||
vdd_last = read_voltage();
|
||||
if (vdd_last < 0) {
|
||||
printf("VID: abort VID adjustment\n");
|
||||
ret = -1;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
debug("VID: Core voltage is at %d mV\n", vdd_last);
|
||||
ret = select_i2c_ch_pca(I2C_MUX_CH_DPM);
|
||||
if (ret) {
|
||||
printf("VID: I2c failed to switch channel to DPM\n");
|
||||
ret = -1;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Round up to the value of step of Voltage regulator */
|
||||
voltage = roundup(vdd_target, ZM_STEP);
|
||||
debug("VID: rounded up voltage = %d\n", voltage);
|
||||
|
||||
/* lower the speed to 100kHz to access ZM7300 device */
|
||||
debug("VID: Setting bus speed to 100KHz if not already set\n");
|
||||
orig_i2c_speed = i2c_get_bus_speed();
|
||||
if (orig_i2c_speed != 100000)
|
||||
i2c_set_bus_speed(100000);
|
||||
|
||||
/* Read the existing level on board, if equal to requsted one,
|
||||
no need to re-set */
|
||||
existing_voltage = zm_read_voltage();
|
||||
|
||||
/* allowing the voltage difference of one step 0.0125V acceptable */
|
||||
if ((existing_voltage >= voltage) &&
|
||||
(existing_voltage < (voltage + ZM_STEP))) {
|
||||
debug("VID: voltage already set as requested,returning\n");
|
||||
ret = existing_voltage;
|
||||
goto out;
|
||||
}
|
||||
debug("VID: Changing voltage for board from %dmV to %dmV\n",
|
||||
existing_voltage/10, voltage/10);
|
||||
|
||||
if (zm_disable_wp() < 0) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
/* Change Voltage: the change is done through all the steps in the
|
||||
way, to avoid reset to the board due to power good signal fail
|
||||
in big voltage change gap jump.
|
||||
*/
|
||||
if (existing_voltage > voltage) {
|
||||
temp_voltage = existing_voltage - ZM_STEP;
|
||||
while (temp_voltage >= voltage) {
|
||||
ret = zm_write_voltage(temp_voltage);
|
||||
if (ret == temp_voltage) {
|
||||
temp_voltage -= ZM_STEP;
|
||||
} else {
|
||||
/* ZM7300 device failed to set
|
||||
* the voltage */
|
||||
printf
|
||||
("VID:Stepping down vol failed:%dmV\n",
|
||||
temp_voltage/10);
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
temp_voltage = existing_voltage + ZM_STEP;
|
||||
while (temp_voltage < (voltage + ZM_STEP)) {
|
||||
ret = zm_write_voltage(temp_voltage);
|
||||
if (ret == temp_voltage) {
|
||||
temp_voltage += ZM_STEP;
|
||||
} else {
|
||||
/* ZM7300 device failed to set
|
||||
* the voltage */
|
||||
printf
|
||||
("VID:Stepping up vol failed:%dmV\n",
|
||||
temp_voltage/10);
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (zm_enable_wp() < 0)
|
||||
ret = -1;
|
||||
|
||||
/* restore the speed to 400kHz */
|
||||
out: debug("VID: Restore the I2C bus speed to %dKHz\n",
|
||||
orig_i2c_speed/1000);
|
||||
i2c_set_bus_speed(orig_i2c_speed);
|
||||
if (ret < 0)
|
||||
goto exit;
|
||||
|
||||
ret = select_i2c_ch_pca(I2C_MUX_CH_VOL_MONITOR);
|
||||
if (ret) {
|
||||
printf("VID: I2c failed to switch channel\n");
|
||||
ret = -1;
|
||||
goto exit;
|
||||
}
|
||||
vdd_last = read_voltage();
|
||||
select_i2c_ch_pca(I2C_CH_DEFAULT);
|
||||
|
||||
if (vdd_last > 0)
|
||||
printf("VID: Core voltage %d mV\n", vdd_last);
|
||||
else
|
||||
ret = -1;
|
||||
|
||||
exit:
|
||||
if (re_enable)
|
||||
enable_interrupts();
|
||||
return ret;
|
||||
}
|
||||
|
||||
int configure_vsc3316_3308(void)
|
||||
{
|
||||
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
@ -697,6 +930,13 @@ int board_early_init_r(void)
|
||||
#ifdef CONFIG_SYS_DPAA_QBMAN
|
||||
setup_portals();
|
||||
#endif
|
||||
/*
|
||||
* Adjust core voltage according to voltage ID
|
||||
* This function changes I2C mux to channel 2.
|
||||
*/
|
||||
if (adjust_vdd(0) < 0)
|
||||
printf("Warning: Adjusting core voltage failed\n");
|
||||
|
||||
/* SerDes1 refclks need to be set again, as default clks
|
||||
* are not suitable for CPRI and onboard SGMIIs to work
|
||||
* simultaneously.
|
||||
|
@ -48,6 +48,7 @@ obj-$(CONFIG_P5020DS) += ics307_clk.o
|
||||
obj-$(CONFIG_P5040DS) += ics307_clk.o
|
||||
obj-$(CONFIG_VSC_CROSSBAR) += vsc3316_3308.o
|
||||
obj-$(CONFIG_IDT8T49N222A) += idt8t49n222a_serdes_clk.o
|
||||
obj-$(CONFIG_ZM7300) += zm7300.o
|
||||
|
||||
# deal with common files for P-series corenet based devices
|
||||
obj-$(CONFIG_P2041RDB) += p_corenet/
|
||||
|
@ -425,13 +425,13 @@ int mac_read_from_eeprom(void)
|
||||
|
||||
if (read_eeprom()) {
|
||||
printf("Read failed.\n");
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!is_valid) {
|
||||
printf("Invalid ID (%02x %02x %02x %02x)\n",
|
||||
e.id[0], e.id[1], e.id[2], e.id[3]);
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYS_I2C_EEPROM_NXID
|
||||
@ -447,7 +447,7 @@ int mac_read_from_eeprom(void)
|
||||
crcp = (void *)&e + crc_offset;
|
||||
if (crc != be32_to_cpu(*crcp)) {
|
||||
printf("CRC mismatch (%08x != %08x)\n", crc, be32_to_cpu(e.crc));
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYS_I2C_EEPROM_NXID
|
||||
|
235
board/freescale/common/zm7300.c
Normal file
235
board/freescale/common/zm7300.c
Normal file
@ -0,0 +1,235 @@
|
||||
/*
|
||||
* Copyright 2013 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/* Power-One ZM7300 DPM */
|
||||
#include "zm7300.h"
|
||||
|
||||
#define DPM_WP 0x96
|
||||
#define WRP_OPCODE 0x01
|
||||
#define WRM_OPCODE 0x02
|
||||
#define RRP_OPCODE 0x11
|
||||
|
||||
#define DPM_SUCCESS 0x01
|
||||
#define DPM_EXEC_FAIL 0x00
|
||||
|
||||
static const uint16_t hex_to_1_10mv[] = {
|
||||
5000,
|
||||
5125,
|
||||
5250,
|
||||
5375,
|
||||
5500,
|
||||
5625,
|
||||
5750,
|
||||
5875,
|
||||
6000,
|
||||
6125,
|
||||
6250,
|
||||
6375,
|
||||
6500,
|
||||
6625,
|
||||
6750,
|
||||
6875,
|
||||
7000,
|
||||
7125,
|
||||
7250,
|
||||
7375,
|
||||
7500,
|
||||
7625,
|
||||
7750,
|
||||
7875,
|
||||
8000,
|
||||
8125,
|
||||
8250,
|
||||
8375,
|
||||
8500,
|
||||
8625,
|
||||
8750,
|
||||
8875,
|
||||
9000,
|
||||
9125,
|
||||
9250,
|
||||
9375,
|
||||
9500, /* 0.95mV */
|
||||
9625,
|
||||
9750,
|
||||
9875,
|
||||
10000, /* 1.0V */
|
||||
10125,
|
||||
10250,
|
||||
10375,
|
||||
10500,
|
||||
10625,
|
||||
10750,
|
||||
10875,
|
||||
11000,
|
||||
11125,
|
||||
11250,
|
||||
11375,
|
||||
11500,
|
||||
11625,
|
||||
11750,
|
||||
11875,
|
||||
12000,
|
||||
12125,
|
||||
12250,
|
||||
12375,
|
||||
0, /* reserved */
|
||||
};
|
||||
|
||||
|
||||
/* Read Data d from Register r of POL p */
|
||||
u8 dpm_rrp(uchar r)
|
||||
{
|
||||
u8 ret[5];
|
||||
|
||||
ret[0] = RRP_OPCODE;
|
||||
/* POL is 0 */
|
||||
ret[1] = 0;
|
||||
ret[2] = r;
|
||||
i2c_read(I2C_DPM_ADDR, 0, -3, ret, 2);
|
||||
if (ret[1] == DPM_SUCCESS) { /* the DPM returned success as status */
|
||||
debug("RRP_OPCODE returned success data is %x\n", ret[0]);
|
||||
return ret[0];
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Write Data d into DPM register r (RAM) */
|
||||
int dpm_wrm(u8 r, u8 d)
|
||||
{
|
||||
u8 ret[5];
|
||||
|
||||
ret[0] = WRM_OPCODE;
|
||||
ret[1] = r;
|
||||
ret[2] = d;
|
||||
i2c_read(I2C_DPM_ADDR, 0, -3, ret, 1);
|
||||
if (ret[0] == DPM_SUCCESS) { /* the DPM returned success as status */
|
||||
debug("WRM_OPCODE returned success data is %x\n", ret[0]);
|
||||
return ret[0];
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Write Data d into Register r of POL(s) a */
|
||||
int dpm_wrp(u8 r, u8 d)
|
||||
{
|
||||
u8 ret[7];
|
||||
|
||||
ret[0] = WRP_OPCODE;
|
||||
/* only POL0 is present */
|
||||
ret[1] = 0x01;
|
||||
ret[2] = 0x00;
|
||||
ret[3] = 0x00;
|
||||
ret[4] = 0x00;
|
||||
ret[5] = r;
|
||||
ret[6] = d;
|
||||
i2c_read(I2C_DPM_ADDR, 0, -7, ret, 1);
|
||||
if (ret[0] == DPM_SUCCESS) { /* the DPM returned success as status */
|
||||
debug("WRP_OPCODE returned success data is %x\n", ret[0]);
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Uses the DPM command RRP */
|
||||
u8 zm_read(uchar reg)
|
||||
{
|
||||
u8 d;
|
||||
d = dpm_rrp(reg);
|
||||
return d;
|
||||
}
|
||||
|
||||
/* ZM_write --
|
||||
Steps:
|
||||
a. Write data to the register
|
||||
b. Read data from register and compare to written value
|
||||
c. Return return_code & voltage_read
|
||||
*/
|
||||
u8 zm_write(u8 reg, u8 data)
|
||||
{
|
||||
u8 d;
|
||||
|
||||
/* write data to register */
|
||||
dpm_wrp(reg, data);
|
||||
|
||||
/* read register and compare to written value */
|
||||
d = dpm_rrp(reg);
|
||||
if (d != data) {
|
||||
printf("zm_write : Comparison register data failed\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
/* zm_write_out_voltage
|
||||
* voltage in 1/10 mV
|
||||
*/
|
||||
int zm_write_voltage(int voltage)
|
||||
{
|
||||
u8 reg = 0x7, vid;
|
||||
uint16_t voltage_read;
|
||||
u8 ret;
|
||||
|
||||
vid = (voltage - 5000) / ZM_STEP;
|
||||
|
||||
ret = zm_write(reg, vid);
|
||||
if (ret != -1) {
|
||||
voltage_read = hex_to_1_10mv[ret];
|
||||
debug("voltage set to %dmV\n", voltage_read/10);
|
||||
return voltage_read;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* zm_read_out_voltage
|
||||
* voltage in 1/10 mV
|
||||
*/
|
||||
int zm_read_voltage(void)
|
||||
{
|
||||
u8 reg = 0x7;
|
||||
u8 ret;
|
||||
int voltage;
|
||||
|
||||
ret = zm_read(reg);
|
||||
if (ret != -1) {
|
||||
voltage = hex_to_1_10mv[ret];
|
||||
debug("Voltage read is %dmV\n", voltage/10);
|
||||
return voltage;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int zm_disable_wp()
|
||||
{
|
||||
u8 new_wp_value;
|
||||
|
||||
/* Disable using Write-Protect register 0x96 */
|
||||
new_wp_value = 0x8;
|
||||
if ((dpm_wrm(DPM_WP, new_wp_value)) < 0) {
|
||||
printf("Disable Write-Protect register failed\n");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int zm_enable_wp()
|
||||
{
|
||||
u8 orig_wp_value;
|
||||
orig_wp_value = 0x0;
|
||||
|
||||
/* Enable using Write-Protect register 0x96 */
|
||||
if ((dpm_wrm(DPM_WP, orig_wp_value)) < 0) {
|
||||
printf("Enable Write-Protect register failed\n");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
22
board/freescale/common/zm7300.h
Normal file
22
board/freescale/common/zm7300.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright 2013 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __ZM7300_H_
|
||||
#define __ZM7300_H 1_
|
||||
|
||||
#include <common.h>
|
||||
#include <i2c.h>
|
||||
#include <errno.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#define ZM_STEP 125
|
||||
int zm7300_set_voltage(int voltage_1_10mv);
|
||||
int zm_write_voltage(int voltage);
|
||||
int zm_read_voltage(void);
|
||||
int zm_disable_wp(void);
|
||||
int zm_enable_wp(void);
|
||||
|
||||
#endif /* __ZM7300_H_ */
|
@ -346,3 +346,23 @@ ulong get_bus_freq (ulong dummy)
|
||||
get_sys_info(&sys_info);
|
||||
return sys_info.freq_systembus;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the number of cores on this SOC.
|
||||
*/
|
||||
int cpu_numcores(void)
|
||||
{
|
||||
/*
|
||||
* The QEMU u-boot target only needs to drive the first core,
|
||||
* spinning and device tree nodes get driven by QEMU itself
|
||||
*/
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return a 32-bit mask indicating which cores are present on this SOC.
|
||||
*/
|
||||
u32 cpu_mask(void)
|
||||
{
|
||||
return (1 << cpu_numcores()) - 1;
|
||||
}
|
||||
|
12
board/freescale/t4rdb/Makefile
Normal file
12
board/freescale/t4rdb/Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
#
|
||||
# Copyright 2014 Freescale Semiconductor, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-$(CONFIG_T4240RDB) += t4240rdb.o
|
||||
obj-y += ddr.o
|
||||
obj-y += eth.o
|
||||
obj-$(CONFIG_PCI) += pci.o
|
||||
obj-y += law.o
|
||||
obj-y += tlb.o
|
118
board/freescale/t4rdb/ddr.c
Normal file
118
board/freescale/t4rdb/ddr.c
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <i2c.h>
|
||||
#include <hwconfig.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <fsl_ddr_sdram.h>
|
||||
#include <fsl_ddr_dimm_params.h>
|
||||
#include <asm/fsl_law.h>
|
||||
#include "ddr.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
void fsl_ddr_board_options(memctl_options_t *popts,
|
||||
dimm_params_t *pdimm,
|
||||
unsigned int ctrl_num)
|
||||
{
|
||||
const struct board_specific_parameters *pbsp, *pbsp_highest = NULL;
|
||||
ulong ddr_freq;
|
||||
|
||||
if (ctrl_num > 2) {
|
||||
printf("Not supported controller number %d\n", ctrl_num);
|
||||
return;
|
||||
}
|
||||
if (!pdimm->n_ranks)
|
||||
return;
|
||||
|
||||
/*
|
||||
* we use identical timing for all slots. If needed, change the code
|
||||
* to pbsp = rdimms[ctrl_num] or pbsp = udimms[ctrl_num];
|
||||
*/
|
||||
if (popts->registered_dimm_en)
|
||||
pbsp = rdimms[0];
|
||||
else
|
||||
pbsp = udimms[0];
|
||||
|
||||
|
||||
/* Get clk_adjust, cpo, write_data_delay,2T, according to the board ddr
|
||||
* freqency and n_banks specified in board_specific_parameters table.
|
||||
*/
|
||||
ddr_freq = get_ddr_freq(0) / 1000000;
|
||||
while (pbsp->datarate_mhz_high) {
|
||||
if (pbsp->n_ranks == pdimm->n_ranks &&
|
||||
(pdimm->rank_density >> 30) >= pbsp->rank_gb) {
|
||||
if (ddr_freq <= pbsp->datarate_mhz_high) {
|
||||
popts->clk_adjust = pbsp->clk_adjust;
|
||||
popts->wrlvl_start = pbsp->wrlvl_start;
|
||||
popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
|
||||
popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
|
||||
goto found;
|
||||
}
|
||||
pbsp_highest = pbsp;
|
||||
}
|
||||
pbsp++;
|
||||
}
|
||||
|
||||
if (pbsp_highest) {
|
||||
printf("Error: board specific timing not found for data\n"
|
||||
"rate %lu MT/s\n"
|
||||
"Trying to use the highest speed (%u) parameters\n",
|
||||
ddr_freq, pbsp_highest->datarate_mhz_high);
|
||||
popts->clk_adjust = pbsp_highest->clk_adjust;
|
||||
popts->wrlvl_start = pbsp_highest->wrlvl_start;
|
||||
popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
|
||||
popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
|
||||
} else {
|
||||
panic("DIMM is not supported by this board");
|
||||
}
|
||||
found:
|
||||
debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n"
|
||||
"\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x,\n"
|
||||
"wrlvl_ctrl_3 0x%x\n",
|
||||
pbsp->n_ranks, pbsp->datarate_mhz_high, pbsp->rank_gb,
|
||||
pbsp->clk_adjust, pbsp->wrlvl_start, pbsp->wrlvl_ctl_2,
|
||||
pbsp->wrlvl_ctl_3);
|
||||
|
||||
/*
|
||||
* Factors to consider for half-strength driver enable:
|
||||
* - number of DIMMs installed
|
||||
*/
|
||||
popts->half_strength_driver_enable = 0;
|
||||
/*
|
||||
* Write leveling override
|
||||
*/
|
||||
popts->wrlvl_override = 1;
|
||||
popts->wrlvl_sample = 0xf;
|
||||
|
||||
/*
|
||||
* Rtt and Rtt_WR override
|
||||
*/
|
||||
popts->rtt_override = 0;
|
||||
|
||||
/* Enable ZQ calibration */
|
||||
popts->zq_en = 1;
|
||||
|
||||
/* DHC_EN =1, ODT = 75 Ohm */
|
||||
popts->ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_75ohm);
|
||||
popts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_75ohm);
|
||||
}
|
||||
|
||||
phys_size_t initdram(int board_type)
|
||||
{
|
||||
phys_size_t dram_size;
|
||||
|
||||
puts("Initializing....using SPD\n");
|
||||
|
||||
dram_size = fsl_ddr_sdram();
|
||||
|
||||
dram_size = setup_ddr_tlbs(dram_size / 0x100000);
|
||||
dram_size *= 0x100000;
|
||||
|
||||
puts(" DDR: ");
|
||||
return dram_size;
|
||||
}
|
78
board/freescale/t4rdb/ddr.h
Normal file
78
board/freescale/t4rdb/ddr.h
Normal file
@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __DDR_H__
|
||||
#define __DDR_H__
|
||||
struct board_specific_parameters {
|
||||
u32 n_ranks;
|
||||
u32 datarate_mhz_high;
|
||||
u32 rank_gb;
|
||||
u32 clk_adjust;
|
||||
u32 wrlvl_start;
|
||||
u32 wrlvl_ctl_2;
|
||||
u32 wrlvl_ctl_3;
|
||||
};
|
||||
|
||||
/*
|
||||
* These tables contain all valid speeds we want to override with board
|
||||
* specific parameters. datarate_mhz_high values need to be in ascending order
|
||||
* for each n_ranks group.
|
||||
*/
|
||||
static const struct board_specific_parameters udimm0[] = {
|
||||
/*
|
||||
* memory controller 0
|
||||
* num| hi| rank| clk| wrlvl | wrlvl | wrlvl
|
||||
* ranks| mhz| GB |adjst| start | ctl2 | ctl3
|
||||
*/
|
||||
{2, 1350, 4, 4, 8, 0x0809090b, 0x0c0c0d0a},
|
||||
{2, 1350, 0, 5, 7, 0x0709090b, 0x0c0c0d09},
|
||||
{2, 1666, 4, 4, 8, 0x080a0a0d, 0x0d10100b},
|
||||
{2, 1666, 0, 5, 7, 0x080a0a0c, 0x0d0d0e0a},
|
||||
{2, 1900, 0, 4, 8, 0x090a0b0e, 0x0f11120c},
|
||||
{2, 2140, 0, 4, 8, 0x090a0b0e, 0x0f11120c},
|
||||
{1, 1350, 0, 5, 8, 0x0809090b, 0x0c0c0d0a},
|
||||
{1, 1700, 0, 5, 8, 0x080a0a0c, 0x0c0d0e0a},
|
||||
{1, 1900, 0, 4, 8, 0x080a0a0c, 0x0e0e0f0a},
|
||||
{1, 2140, 0, 4, 8, 0x090a0b0c, 0x0e0f100b},
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct board_specific_parameters rdimm0[] = {
|
||||
/*
|
||||
* memory controller 0
|
||||
* num| hi| rank| clk| wrlvl | wrlvl | wrlvl
|
||||
* ranks| mhz| GB |adjst| start | ctl2 | ctl3
|
||||
*/
|
||||
{4, 1350, 0, 5, 9, 0x08070605, 0x06070806},
|
||||
{4, 1666, 0, 5, 11, 0x0a080706, 0x07090906},
|
||||
{4, 2140, 0, 5, 12, 0x0b090807, 0x080a0b07},
|
||||
{2, 1350, 0, 5, 9, 0x08070605, 0x06070806},
|
||||
{2, 1666, 0, 5, 11, 0x0a090806, 0x08090a06},
|
||||
{2, 2140, 0, 5, 12, 0x0b090807, 0x080a0b07},
|
||||
{1, 1350, 0, 5, 9, 0x08070605, 0x06070806},
|
||||
{1, 1666, 0, 5, 11, 0x0a090806, 0x08090a06},
|
||||
{1, 2140, 0, 4, 12, 0x0b090807, 0x080a0b07},
|
||||
{}
|
||||
};
|
||||
|
||||
/*
|
||||
* The three slots have slightly different timing. The center values are good
|
||||
* for all slots. We use identical speed tables for them. In future use, if
|
||||
* DIMMs require separated tables, make more entries as needed.
|
||||
*/
|
||||
static const struct board_specific_parameters *udimms[] = {
|
||||
udimm0,
|
||||
};
|
||||
|
||||
/*
|
||||
* The three slots have slightly different timing. See comments above.
|
||||
*/
|
||||
static const struct board_specific_parameters *rdimms[] = {
|
||||
rdimm0,
|
||||
};
|
||||
|
||||
|
||||
#endif
|
146
board/freescale/t4rdb/eth.c
Normal file
146
board/freescale/t4rdb/eth.c
Normal file
@ -0,0 +1,146 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* Chunhe Lan <Chunhe.Lan@freescale.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <netdev.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/immap_85xx.h>
|
||||
#include <asm/fsl_law.h>
|
||||
#include <fsl_ddr_sdram.h>
|
||||
#include <asm/fsl_serdes.h>
|
||||
#include <asm/fsl_portals.h>
|
||||
#include <asm/fsl_liodn.h>
|
||||
#include <malloc.h>
|
||||
#include <fm_eth.h>
|
||||
#include <fsl_mdio.h>
|
||||
#include <miiphy.h>
|
||||
#include <phy.h>
|
||||
#include <asm/fsl_dtsec.h>
|
||||
#include <asm/fsl_serdes.h>
|
||||
#include <hwconfig.h>
|
||||
|
||||
#include "../common/fman.h"
|
||||
#include "t4rdb.h"
|
||||
|
||||
void fdt_fixup_board_enet(void *fdt)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
#if defined(CONFIG_FMAN_ENET)
|
||||
int i, interface;
|
||||
struct memac_mdio_info dtsec_mdio_info;
|
||||
struct memac_mdio_info tgec_mdio_info;
|
||||
struct mii_dev *dev;
|
||||
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
u32 srds_prtcl_s1, srds_prtcl_s2;
|
||||
|
||||
srds_prtcl_s1 = in_be32(&gur->rcwsr[4]) &
|
||||
FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
|
||||
srds_prtcl_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
|
||||
srds_prtcl_s2 = in_be32(&gur->rcwsr[4]) &
|
||||
FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
|
||||
srds_prtcl_s2 >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
|
||||
|
||||
dtsec_mdio_info.regs =
|
||||
(struct memac_mdio_controller *)CONFIG_SYS_FM2_DTSEC_MDIO_ADDR;
|
||||
|
||||
dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME;
|
||||
|
||||
/* Register the 1G MDIO bus */
|
||||
fm_memac_mdio_init(bis, &dtsec_mdio_info);
|
||||
|
||||
tgec_mdio_info.regs =
|
||||
(struct memac_mdio_controller *)CONFIG_SYS_FM2_TGEC_MDIO_ADDR;
|
||||
tgec_mdio_info.name = DEFAULT_FM_TGEC_MDIO_NAME;
|
||||
|
||||
/* Register the 10G MDIO bus */
|
||||
fm_memac_mdio_init(bis, &tgec_mdio_info);
|
||||
|
||||
if (srds_prtcl_s1 == 28) {
|
||||
/* SGMII */
|
||||
fm_info_set_phy_address(FM1_DTSEC1, SGMII_PHY_ADDR1);
|
||||
fm_info_set_phy_address(FM1_DTSEC2, SGMII_PHY_ADDR2);
|
||||
fm_info_set_phy_address(FM1_DTSEC3, SGMII_PHY_ADDR3);
|
||||
fm_info_set_phy_address(FM1_DTSEC4, SGMII_PHY_ADDR4);
|
||||
} else {
|
||||
puts("Invalid SerDes1 protocol for T4240RDB\n");
|
||||
}
|
||||
|
||||
for (i = FM1_DTSEC1; i < FM1_DTSEC1 + CONFIG_SYS_NUM_FM1_DTSEC; i++) {
|
||||
interface = fm_info_get_enet_if(i);
|
||||
switch (interface) {
|
||||
case PHY_INTERFACE_MODE_SGMII:
|
||||
dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME);
|
||||
fm_info_set_mdio(i, dev);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = FM1_10GEC1; i < FM1_10GEC1 + CONFIG_SYS_NUM_FM1_10GEC; i++) {
|
||||
switch (fm_info_get_enet_if(i)) {
|
||||
case PHY_INTERFACE_MODE_XGMII:
|
||||
dev = miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME);
|
||||
fm_info_set_mdio(i, dev);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if (CONFIG_SYS_NUM_FMAN == 2)
|
||||
if (srds_prtcl_s2 == 56) {
|
||||
/* SGMII && XFI */
|
||||
fm_info_set_phy_address(FM2_DTSEC1, SGMII_PHY_ADDR5);
|
||||
fm_info_set_phy_address(FM2_DTSEC2, SGMII_PHY_ADDR6);
|
||||
fm_info_set_phy_address(FM2_DTSEC3, SGMII_PHY_ADDR7);
|
||||
fm_info_set_phy_address(FM2_DTSEC4, SGMII_PHY_ADDR8);
|
||||
fm_info_set_phy_address(FM1_10GEC1, FM1_10GEC1_PHY_ADDR);
|
||||
fm_info_set_phy_address(FM1_10GEC2, FM1_10GEC2_PHY_ADDR);
|
||||
fm_info_set_phy_address(FM2_10GEC1, FM2_10GEC2_PHY_ADDR);
|
||||
fm_info_set_phy_address(FM2_10GEC2, FM2_10GEC1_PHY_ADDR);
|
||||
} else {
|
||||
puts("Invalid SerDes2 protocol for T4240RDB\n");
|
||||
}
|
||||
|
||||
for (i = FM2_DTSEC1; i < FM2_DTSEC1 + CONFIG_SYS_NUM_FM2_DTSEC; i++) {
|
||||
interface = fm_info_get_enet_if(i);
|
||||
switch (interface) {
|
||||
case PHY_INTERFACE_MODE_SGMII:
|
||||
dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME);
|
||||
fm_info_set_mdio(i, dev);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = FM2_10GEC1; i < FM2_10GEC1 + CONFIG_SYS_NUM_FM2_10GEC; i++) {
|
||||
switch (fm_info_get_enet_if(i)) {
|
||||
case PHY_INTERFACE_MODE_XGMII:
|
||||
dev = miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME);
|
||||
fm_info_set_mdio(i, dev);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_SYS_NUM_FMAN */
|
||||
|
||||
cpu_eth_init(bis);
|
||||
#endif /* CONFIG_FMAN_ENET */
|
||||
|
||||
return pci_eth_init(bis);
|
||||
}
|
28
board/freescale/t4rdb/law.c
Normal file
28
board/freescale/t4rdb/law.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/fsl_law.h>
|
||||
#include <asm/mmu.h>
|
||||
|
||||
struct law_entry law_table[] = {
|
||||
SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_256M, LAW_TRGT_IF_IFC),
|
||||
#ifdef CONFIG_SYS_BMAN_MEM_PHYS
|
||||
SET_LAW(CONFIG_SYS_BMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_BMAN),
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_QMAN_MEM_PHYS
|
||||
SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_DCSRBAR_PHYS
|
||||
/* Limit DCSR to 32M to access NPC Trace Buffer */
|
||||
SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_DCSR),
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_NAND_BASE_PHYS
|
||||
SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_IFC),
|
||||
#endif
|
||||
};
|
||||
|
||||
int num_law_entries = ARRAY_SIZE(law_table);
|
23
board/freescale/t4rdb/pci.c
Normal file
23
board/freescale/t4rdb/pci.c
Normal file
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <pci.h>
|
||||
#include <asm/fsl_pci.h>
|
||||
#include <libfdt.h>
|
||||
#include <fdt_support.h>
|
||||
#include <asm/fsl_serdes.h>
|
||||
|
||||
void pci_init_board(void)
|
||||
{
|
||||
fsl_pcie_init_board(0);
|
||||
}
|
||||
|
||||
void pci_of_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
FT_FSL_PCI_SETUP;
|
||||
}
|
125
board/freescale/t4rdb/t4240rdb.c
Normal file
125
board/freescale/t4rdb/t4240rdb.c
Normal file
@ -0,0 +1,125 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <i2c.h>
|
||||
#include <netdev.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/immap_85xx.h>
|
||||
#include <asm/fsl_law.h>
|
||||
#include <asm/fsl_serdes.h>
|
||||
#include <asm/fsl_portals.h>
|
||||
#include <asm/fsl_liodn.h>
|
||||
#include <fm_eth.h>
|
||||
|
||||
#include "t4rdb.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
int checkboard(void)
|
||||
{
|
||||
struct cpu_type *cpu = gd->arch.cpu;
|
||||
|
||||
printf("Board: %sRDB, ", cpu->name);
|
||||
|
||||
puts("SERDES Reference Clocks:\n");
|
||||
printf(" SERDES1=100MHz SERDES2=156.25MHz\n"
|
||||
" SERDES3=100MHz SERDES4=100MHz\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_early_init_r(void)
|
||||
{
|
||||
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
|
||||
const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
|
||||
|
||||
/*
|
||||
* Remap Boot flash + PROMJET region to caching-inhibited
|
||||
* so that flash can be erased properly.
|
||||
*/
|
||||
|
||||
/* Flush d-cache and invalidate i-cache of any FLASH data */
|
||||
flush_dcache();
|
||||
invalidate_icache();
|
||||
|
||||
/* invalidate existing TLB entry for flash + promjet */
|
||||
disable_tlb(flash_esel);
|
||||
|
||||
set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, flash_esel, BOOKE_PAGESZ_256M, 1);
|
||||
|
||||
set_liodns();
|
||||
#ifdef CONFIG_SYS_DPAA_QBMAN
|
||||
setup_portals();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
phys_addr_t base;
|
||||
phys_size_t size;
|
||||
|
||||
ft_cpu_setup(blob, bd);
|
||||
|
||||
base = getenv_bootm_low();
|
||||
size = getenv_bootm_size();
|
||||
|
||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
pci_of_setup(blob, bd);
|
||||
#endif
|
||||
|
||||
fdt_fixup_liodn(blob);
|
||||
fdt_fixup_dr_usb(blob, bd);
|
||||
|
||||
#ifdef CONFIG_SYS_DPAA_FMAN
|
||||
fdt_fixup_fman_ethernet(blob);
|
||||
fdt_fixup_board_enet(blob);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* This function is called by bdinfo to print detail board information.
|
||||
* As an exmaple for future board, we organize the messages into
|
||||
* several sections. If applicable, the message is in the format of
|
||||
* <name> = <value>
|
||||
* It should aligned with normal output of bdinfo command.
|
||||
*
|
||||
* Voltage: Core, DDR and another configurable voltages
|
||||
* Clock : Critical clocks which are not printed already
|
||||
* RCW : RCW source if not printed already
|
||||
* Misc : Other important information not in above catagories
|
||||
*/
|
||||
void board_detail(void)
|
||||
{
|
||||
int rcwsrc;
|
||||
|
||||
/* RCW section SW3[4] */
|
||||
rcwsrc = 0x0;
|
||||
puts("RCW source = ");
|
||||
switch (rcwsrc & 0x1) {
|
||||
case 0x1:
|
||||
puts("SDHC/eMMC\n");
|
||||
break;
|
||||
default:
|
||||
puts("I2C normal addressing\n");
|
||||
break;
|
||||
}
|
||||
}
|
31
board/freescale/t4rdb/t4_pbi.cfg
Normal file
31
board/freescale/t4rdb/t4_pbi.cfg
Normal file
@ -0,0 +1,31 @@
|
||||
#
|
||||
# Copyright 2014 Freescale Semiconductor, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
#PBI commands
|
||||
#Initialize CPC1
|
||||
09010000 00200400
|
||||
09138000 00000000
|
||||
091380c0 00000100
|
||||
#512KB SRAM
|
||||
09010100 00000000
|
||||
09010104 fff80009
|
||||
09010f00 08000000
|
||||
#enable CPC1
|
||||
09010000 80000000
|
||||
#Configure LAW for CPC1
|
||||
09000d00 00000000
|
||||
09000d04 fff80000
|
||||
09000d08 81000012
|
||||
#slow mdio clock
|
||||
095fc030 00008148
|
||||
095fd030 00808148
|
||||
#Configure alternate space
|
||||
09000010 00000000
|
||||
09000014 ff000000
|
||||
09000018 81000000
|
||||
#Flush PBL data
|
||||
09138000 00000000
|
||||
091380c0 00000000
|
7
board/freescale/t4rdb/t4_rcw.cfg
Normal file
7
board/freescale/t4rdb/t4_rcw.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
#PBL preamble and RCW header
|
||||
aa55aa55 010e0100
|
||||
#serdes protocol 28_56_2_10
|
||||
16070019 18101916 00000000 00000000
|
||||
70701050 00448c00 6c020000 f5000000
|
||||
00000000 ee0000ee 00000000 000287fc
|
||||
00000000 50000000 00000000 00000028
|
18
board/freescale/t4rdb/t4rdb.h
Normal file
18
board/freescale/t4rdb/t4rdb.h
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __T4RDB_H__
|
||||
#define __T4RDB_H__
|
||||
|
||||
#undef CONFIG_SYS_NUM_FM1_DTSEC
|
||||
#undef CONFIG_SYS_NUM_FM2_DTSEC
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 4
|
||||
#define CONFIG_SYS_NUM_FM2_DTSEC 4
|
||||
|
||||
void fdt_fixup_board_enet(void *blob);
|
||||
void pci_of_setup(void *blob, bd_t *bd);
|
||||
|
||||
#endif
|
111
board/freescale/t4rdb/tlb.c
Normal file
111
board/freescale/t4rdb/tlb.c
Normal file
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/mmu.h>
|
||||
|
||||
struct fsl_e_tlb_entry tlb_table[] = {
|
||||
/* TLB 0 - for temp stack in cache */
|
||||
SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR,
|
||||
CONFIG_SYS_INIT_RAM_ADDR_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, 0,
|
||||
0, 0, BOOKE_PAGESZ_4K, 0),
|
||||
SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
|
||||
CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, 0,
|
||||
0, 0, BOOKE_PAGESZ_4K, 0),
|
||||
SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
|
||||
CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, 0,
|
||||
0, 0, BOOKE_PAGESZ_4K, 0),
|
||||
SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
|
||||
CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, 0,
|
||||
0, 0, BOOKE_PAGESZ_4K, 0),
|
||||
|
||||
/* TLB 1 */
|
||||
/* *I*** - Covers boot page */
|
||||
#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR)
|
||||
/*
|
||||
* *I*G - L3SRAM. When L3 is used as 512K SRAM */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 0, BOOKE_PAGESZ_512K, 1),
|
||||
#else
|
||||
SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 0, BOOKE_PAGESZ_4K, 1),
|
||||
#endif
|
||||
|
||||
/* *I*G* - CCSRBAR */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 1, BOOKE_PAGESZ_16M, 1),
|
||||
|
||||
/* *I*G* - Flash, localbus */
|
||||
/* This will be changed to *I*G* after relocation to RAM. */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
|
||||
MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
|
||||
0, 2, BOOKE_PAGESZ_256M, 1),
|
||||
|
||||
/* *I*G* - PCI */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 3, BOOKE_PAGESZ_1G, 1),
|
||||
|
||||
/* *I*G* - PCI */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT + 0x40000000,
|
||||
CONFIG_SYS_PCIE1_MEM_PHYS + 0x40000000,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 4, BOOKE_PAGESZ_256M, 1),
|
||||
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT + 0x50000000,
|
||||
CONFIG_SYS_PCIE1_MEM_PHYS + 0x50000000,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 5, BOOKE_PAGESZ_256M, 1),
|
||||
|
||||
/* *I*G* - PCI I/O */
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 6, BOOKE_PAGESZ_256K, 1),
|
||||
|
||||
/* Bman/Qman */
|
||||
#ifdef CONFIG_SYS_BMAN_MEM_PHYS
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, 0,
|
||||
0, 9, BOOKE_PAGESZ_16M, 1),
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x01000000,
|
||||
CONFIG_SYS_BMAN_MEM_PHYS + 0x01000000,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 10, BOOKE_PAGESZ_16M, 1),
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_QMAN_MEM_PHYS
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, 0,
|
||||
0, 11, BOOKE_PAGESZ_16M, 1),
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x01000000,
|
||||
CONFIG_SYS_QMAN_MEM_PHYS + 0x01000000,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 12, BOOKE_PAGESZ_16M, 1),
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_DCSRBAR_PHYS
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_DCSRBAR, CONFIG_SYS_DCSRBAR_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 13, BOOKE_PAGESZ_32M, 1),
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_NAND_BASE
|
||||
/*
|
||||
* *I*G - NAND
|
||||
* entry 14 and 15 has been used hard coded, they will be disabled
|
||||
* in cpu_init_f, so we use entry 16 for nand.
|
||||
*/
|
||||
SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
|
||||
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
|
||||
0, 16, BOOKE_PAGESZ_64K, 1),
|
||||
#endif
|
||||
};
|
||||
|
||||
int num_tlb_entries = ARRAY_SIZE(tlb_table);
|
@ -79,7 +79,7 @@ int get_scl(void)
|
||||
|
||||
|
||||
#define ZL30158_RST 8
|
||||
#define ZL30343_RST 9
|
||||
#define BFTIC4_RST 0
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
@ -88,13 +88,15 @@ int board_early_init_f(void)
|
||||
/* board only uses the DDR_MCK0, so disable the DDR_MCK1/2/3 */
|
||||
setbits_be32(&gur->ddrclkdr, 0x001f000f);
|
||||
|
||||
/* take the Zarlinks out of reset as soon as possible */
|
||||
qrio_prst(ZL30158_RST, false, false);
|
||||
qrio_prst(ZL30343_RST, false, false);
|
||||
/* set the BFTIC's prstcfg to reset at power-up and unit reset only */
|
||||
qrio_prstcfg(BFTIC4_RST, PRSTCFG_POWUP_UNIT_RST);
|
||||
/* and enable WD on it */
|
||||
qrio_wdmask(BFTIC4_RST, true);
|
||||
|
||||
/* and set their reset to power-up only */
|
||||
qrio_prstcfg(ZL30158_RST, PRSTCFG_POWUP_RST);
|
||||
qrio_prstcfg(ZL30343_RST, PRSTCFG_POWUP_RST);
|
||||
/* set the ZL30138's prstcfg to reset at power-up and unit reset only */
|
||||
qrio_prstcfg(ZL30158_RST, PRSTCFG_POWUP_UNIT_RST);
|
||||
/* and take it out of reset as soon as possible (needed for Hooper) */
|
||||
qrio_prst(ZL30158_RST, false, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -113,6 +115,12 @@ int board_early_init_r(void)
|
||||
if (ret)
|
||||
printf("error triggering PCIe FPGA config\n");
|
||||
|
||||
/* enable the Unit LED (red) & Boot LED (on) */
|
||||
qrio_set_leds();
|
||||
|
||||
/* enable Application Buffer */
|
||||
qrio_enable_app_buffer();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -121,16 +129,37 @@ unsigned long get_board_sys_clk(unsigned long dummy)
|
||||
return 66666666;
|
||||
}
|
||||
|
||||
#define ETH_FRONT_PHY_RST 15
|
||||
#define QSFP2_RST 11
|
||||
#define QSFP1_RST 10
|
||||
#define ZL30343_RST 9
|
||||
|
||||
int misc_init_f(void)
|
||||
{
|
||||
/* configure QRIO pis for i2c deblocking */
|
||||
i2c_deblock_gpio_cfg();
|
||||
|
||||
/* configure the front phy's prstcfg and take it out of reset */
|
||||
qrio_prstcfg(ETH_FRONT_PHY_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
|
||||
qrio_prst(ETH_FRONT_PHY_RST, false, false);
|
||||
|
||||
/* set the ZL30343 prstcfg to reset at power-up and unit reset only */
|
||||
qrio_prstcfg(ZL30343_RST, PRSTCFG_POWUP_UNIT_RST);
|
||||
/* and enable the WD on it */
|
||||
qrio_wdmask(ZL30343_RST, true);
|
||||
|
||||
/* set the QSFPs' prstcfg to reset at power-up and unit rst only */
|
||||
qrio_prstcfg(QSFP1_RST, PRSTCFG_POWUP_UNIT_RST);
|
||||
qrio_prstcfg(QSFP2_RST, PRSTCFG_POWUP_UNIT_RST);
|
||||
|
||||
/* and enable the WD on them */
|
||||
qrio_wdmask(QSFP1_RST, true);
|
||||
qrio_wdmask(QSFP2_RST, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define NUM_SRDS_BANKS 2
|
||||
#define PHY_RST 15
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
@ -151,9 +180,6 @@ int misc_init_r(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* take the mgmt eth phy out of reset */
|
||||
qrio_prst(PHY_RST, false, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -166,9 +192,23 @@ int hush_init_var(void)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_LAST_STAGE_INIT)
|
||||
|
||||
int last_stage_init(void)
|
||||
{
|
||||
#if defined(CONFIG_KMCOGE4)
|
||||
/* on KMCOGE4, the BFTIC4 is on the LBAPP2 */
|
||||
struct bfticu_iomap *bftic4 =
|
||||
(struct bfticu_iomap *)CONFIG_SYS_LBAPP2_BASE;
|
||||
u8 dip_switch = in_8((u8 *)&(bftic4->mswitch)) & BFTICU_DIPSWITCH_MASK;
|
||||
|
||||
if (dip_switch != 0) {
|
||||
/* start bootloader */
|
||||
puts("DIP: Enabled\n");
|
||||
setenv("actual_bank", "0");
|
||||
}
|
||||
#endif
|
||||
set_km_env();
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -232,3 +272,16 @@ void ft_board_setup(void *blob, bd_t *bd)
|
||||
fdt_fixup_fman_mac_addresses(blob);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(CONFIG_POST)
|
||||
|
||||
/* DIC26_SELFTEST GPIO used to start factory test sw */
|
||||
#define SELFTEST_PORT GPIO_A
|
||||
#define SELFTEST_PIN 31
|
||||
|
||||
int post_hotkeys_pressed(void)
|
||||
{
|
||||
qrio_gpio_direction_input(SELFTEST_PORT, SELFTEST_PIN);
|
||||
return qrio_get_gpio(SELFTEST_PORT, SELFTEST_PIN);
|
||||
}
|
||||
#endif
|
||||
|
@ -20,6 +20,9 @@ void qrio_gpio_direction_input(u8 port_off, u8 gpio_nr);
|
||||
#define PRSTCFG_POWUP_RST 0x3
|
||||
|
||||
void qrio_prst(u8 bit, bool en, bool wden);
|
||||
void qrio_wdmask(u8 bit, bool wden);
|
||||
void qrio_prstcfg(u8 bit, u8 mode);
|
||||
void qrio_set_leds(void);
|
||||
void qrio_enable_app_buffer(void);
|
||||
|
||||
void pci_of_setup(void *blob, bd_t *bd);
|
||||
|
@ -8,16 +8,47 @@
|
||||
#
|
||||
|
||||
#PBI commands
|
||||
#Workaround for A-006559 needed for rev 2.0 of P2041 silicon
|
||||
#Freescale's errarta sheet suggests it may be done with PBI
|
||||
#Configure ALTCBAR for DCSR -> DCSR@89000000
|
||||
091380c0 000009C4
|
||||
09000010 00000000
|
||||
091380c0 000009C4
|
||||
09000014 00000000
|
||||
091380c0 000009C4
|
||||
09000018 81d00000
|
||||
09021008 0000f000
|
||||
09021028 0000f000
|
||||
09021048 0000f000
|
||||
09021068 0000f000
|
||||
#Workaround for A-004849
|
||||
091380c0 000009C4
|
||||
890B0050 00000002
|
||||
091380c0 000009C4
|
||||
890B0054 00000002
|
||||
091380c0 000009C4
|
||||
890B0058 00000002
|
||||
091380c0 000009C4
|
||||
890B005C 00000002
|
||||
091380c0 000009C4
|
||||
890B0090 00000002
|
||||
091380c0 000009C4
|
||||
890B0094 00000002
|
||||
091380c0 000009C4
|
||||
890B0098 00000002
|
||||
091380c0 000009C4
|
||||
890B009C 00000002
|
||||
091380c0 000009C4
|
||||
890B0108 00000012
|
||||
091380c0 000009C4
|
||||
#Workaround for A-006559 needed for rev 2.0 of P2041 silicon
|
||||
89021008 0000f000
|
||||
091380c0 000009C4
|
||||
89021028 0000f000
|
||||
091380c0 000009C4
|
||||
89021048 0000f000
|
||||
091380c0 000009C4
|
||||
89021068 0000f000
|
||||
091380c0 000009C4
|
||||
#Flush PBL data
|
||||
09138000 00000000
|
||||
#Disable ALTCBAR
|
||||
09000018 00000000
|
||||
091380c0 000009C4
|
||||
#Initialize CPC1 as 1MB SRAM
|
||||
09010000 00200400
|
||||
09138000 00000000
|
||||
|
@ -94,20 +94,23 @@ err_out:
|
||||
}
|
||||
|
||||
#define PCIE_SW_RST 14
|
||||
#define PEXHC_SW_RST 13
|
||||
#define HOOPER_SW_RST 12
|
||||
#define PEXHC_RST 13
|
||||
#define HOOPER_RST 12
|
||||
|
||||
void pci_init_board(void)
|
||||
{
|
||||
/* first wait for the PCIe FPGA to be configured
|
||||
qrio_prstcfg(PCIE_SW_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
|
||||
qrio_prstcfg(PEXHC_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
|
||||
qrio_prstcfg(HOOPER_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
|
||||
|
||||
/* wait for the PCIe FPGA to be configured
|
||||
* it has been triggered earlier in board_early_init_r */
|
||||
int ret = wait_for_fpga_config();
|
||||
if (ret)
|
||||
if (wait_for_fpga_config())
|
||||
printf("error finishing PCIe FPGA config\n");
|
||||
|
||||
qrio_prst(PCIE_SW_RST, false, false);
|
||||
qrio_prst(PEXHC_SW_RST, false, false);
|
||||
qrio_prst(HOOPER_SW_RST, false, false);
|
||||
qrio_prst(PEXHC_RST, false, false);
|
||||
qrio_prst(HOOPER_RST, false, false);
|
||||
/* Hooper is not direcly PCIe capable */
|
||||
mdelay(50);
|
||||
|
||||
|
@ -91,7 +91,7 @@ void qrio_set_opendrain_gpio(u8 port_off, u8 gpio_nr, u8 val)
|
||||
|
||||
#define WDMASK_OFF 0x16
|
||||
|
||||
static void qrio_wdmask(u8 bit, bool wden)
|
||||
void qrio_wdmask(u8 bit, bool wden)
|
||||
{
|
||||
u16 wdmask;
|
||||
void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
|
||||
@ -144,3 +144,32 @@ void qrio_prstcfg(u8 bit, u8 mode)
|
||||
|
||||
out_be32(qrio_base + PRSTCFG_OFF, prstcfg);
|
||||
}
|
||||
|
||||
#define CTRLH_OFF 0x02
|
||||
#define CTRLH_WRL_BOOT 0x01
|
||||
#define CTRLH_WRL_UNITRUN 0x02
|
||||
|
||||
void qrio_set_leds(void)
|
||||
{
|
||||
u8 ctrlh;
|
||||
void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
|
||||
|
||||
/* set UNIT LED to RED and BOOT LED to ON */
|
||||
ctrlh = in_8(qrio_base + CTRLH_OFF);
|
||||
ctrlh |= (CTRLH_WRL_BOOT | CTRLH_WRL_UNITRUN);
|
||||
out_8(qrio_base + CTRLH_OFF, ctrlh);
|
||||
}
|
||||
|
||||
#define CTRLL_OFF 0x03
|
||||
#define CTRLL_WRB_BUFENA 0x20
|
||||
|
||||
void qrio_enable_app_buffer(void)
|
||||
{
|
||||
u8 ctrll;
|
||||
void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
|
||||
|
||||
/* enable application buffer */
|
||||
ctrll = in_8(qrio_base + CTRLL_OFF);
|
||||
ctrll |= (CTRLL_WRB_BUFENA);
|
||||
out_8(qrio_base + CTRLL_OFF, ctrll);
|
||||
}
|
||||
|
@ -7,5 +7,5 @@ aa55aa55 010e0100
|
||||
#64 bytes RCW data
|
||||
14600000 00000000 28200000 00000000
|
||||
148E70CF CFC02000 58000000 41000000
|
||||
00000000 00000000 00000000 F0428002
|
||||
00000000 00000000 00000000 F0428816
|
||||
00000000 00000000 00000000 00000000
|
||||
|
@ -652,7 +652,6 @@ Active powerpc mpc8260 - - cpu86
|
||||
Active powerpc mpc8260 - - cpu86 CPU86_ROMBOOT CPU86:BOOT_ROM Wolfgang Denk <wd@denx.de>
|
||||
Active powerpc mpc8260 - - cpu87 CPU87 - -
|
||||
Active powerpc mpc8260 - - cpu87 CPU87_ROMBOOT CPU87:BOOT_ROM -
|
||||
Active powerpc mpc8260 - - ep8248 ep8248 - Yuli Barcohen <yuli@arabellasw.com>
|
||||
Active powerpc mpc8260 - - iphase4539 IPHASE4539 - Wolfgang Grandegger <wg@denx.de>
|
||||
Active powerpc mpc8260 - - muas3001 muas3001 - Heiko Schocher <hs@denx.de>
|
||||
Active powerpc mpc8260 - - muas3001 muas3001_dev muas3001:MUAS_DEV_BOARD Heiko Schocher <hs@denx.de>
|
||||
@ -812,8 +811,8 @@ Active powerpc mpc85xx - freescale mpc8568mds
|
||||
Active powerpc mpc85xx - freescale mpc8569mds MPC8569MDS - -
|
||||
Active powerpc mpc85xx - freescale mpc8569mds MPC8569MDS_ATM MPC8569MDS:ATM -
|
||||
Active powerpc mpc85xx - freescale mpc8569mds MPC8569MDS_NAND MPC8569MDS:NAND -
|
||||
Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS - -
|
||||
Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS_36BIT MPC8572DS:36BIT -
|
||||
Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS - York Sun <yorksun@freescale.com>
|
||||
Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS_36BIT MPC8572DS:36BIT York Sun <yorksun@freescale.com>
|
||||
Active powerpc mpc85xx - freescale mpc8572ds MPC8572DS_NAND MPC8572DS:NAND -
|
||||
Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_NAND P1010RDB:P1010RDB_PA,36BIT,NAND -
|
||||
Active powerpc mpc85xx - freescale p1010rdb P1010RDB-PA_36BIT_NAND_SECBOOT P1010RDB:P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT -
|
||||
@ -969,6 +968,7 @@ Active powerpc mpc85xx - freescale t208xqds
|
||||
Active powerpc mpc85xx - freescale t208xrdb T2080RDB T208xRDB:PPC_T2080 -
|
||||
Active powerpc mpc85xx - freescale t208xrdb T2080RDB_NAND T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND -
|
||||
Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SDCARD T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD -
|
||||
Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SECURE_BOOT T208xRDB:PPC_T2080,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
|
||||
Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SPIFLASH T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH -
|
||||
Active powerpc mpc85xx - freescale t208xrdb T2080RDB_SRIO_PCIE_BOOT T208xRDB:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
|
||||
Active powerpc mpc85xx - freescale t4qds T4160QDS T4240QDS:PPC_T4160 -
|
||||
@ -983,6 +983,7 @@ Active powerpc mpc85xx - freescale t4qds
|
||||
Active powerpc mpc85xx - freescale t4qds T4240QDS_SECURE_BOOT T4240QDS:PPC_T4240,SECURE_BOOT Aneesh Bansal <aneesh.bansal@freescale.com>
|
||||
Active powerpc mpc85xx - freescale t4qds T4240QDS_SPIFLASH T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000 -
|
||||
Active powerpc mpc85xx - freescale t4qds T4240QDS_SRIO_PCIE_BOOT T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000 -
|
||||
Active powerpc mpc85xx - freescale t4rdb T4240RDB T4240RDB:PPC_T4240 Chunhe Lan <Chunhe.Lan@freescale.com>
|
||||
Active powerpc mpc85xx - gdsys p1022 controlcenterd_36BIT_SDCARD controlcenterd:36BIT,SDCARD Dirk Eibach <eibach@gdsys.de>
|
||||
Active powerpc mpc85xx - gdsys p1022 controlcenterd_36BIT_SDCARD_DEVELOP controlcenterd:36BIT,SDCARD,DEVELOP Dirk Eibach <eibach@gdsys.de>
|
||||
Active powerpc mpc85xx - gdsys p1022 controlcenterd_TRAILBLAZER controlcenterd:TRAILBLAZER,SPIFLASH Dirk Eibach <eibach@gdsys.de>
|
||||
|
@ -96,7 +96,7 @@ static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data)
|
||||
else if (cmd->resp_type & MMC_RSP_PRESENT)
|
||||
xfertyp |= XFERTYP_RSPTYP_48;
|
||||
|
||||
#if defined(CONFIG_MX53) || defined(CONFIG_T4240QDS)
|
||||
#if defined(CONFIG_MX53) || defined(CONFIG_PPC_T4240)
|
||||
if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
|
||||
xfertyp |= XFERTYP_CMDTYP_ABORT;
|
||||
#endif
|
||||
|
@ -32,5 +32,6 @@ obj-$(CONFIG_PPC_T2080) += t2080.o
|
||||
obj-$(CONFIG_PPC_T2081) += t2080.o
|
||||
obj-$(CONFIG_PPC_T4240) += t4240.o
|
||||
obj-$(CONFIG_PPC_T4160) += t4240.o
|
||||
obj-$(CONFIG_PPC_T4080) += t4240.o
|
||||
obj-$(CONFIG_PPC_B4420) += b4860.o
|
||||
obj-$(CONFIG_PPC_B4860) += b4860.o
|
||||
|
@ -29,10 +29,8 @@ int memac_mdio_write(struct mii_dev *bus, int port_addr, int dev_addr,
|
||||
c45 = 0; /* clause 22 */
|
||||
dev_addr = regnum & 0x1f;
|
||||
clrbits_be32(®s->mdio_stat, MDIO_STAT_ENC);
|
||||
} else {
|
||||
} else
|
||||
setbits_be32(®s->mdio_stat, MDIO_STAT_ENC);
|
||||
setbits_be32(®s->mdio_stat, MDIO_STAT_HOLD_15_CLK);
|
||||
}
|
||||
|
||||
/* Wait till the bus is free */
|
||||
while ((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY)
|
||||
@ -76,10 +74,8 @@ int memac_mdio_read(struct mii_dev *bus, int port_addr, int dev_addr,
|
||||
c45 = 0; /* clause 22 */
|
||||
dev_addr = regnum & 0x1f;
|
||||
clrbits_be32(®s->mdio_stat, MDIO_STAT_ENC);
|
||||
} else {
|
||||
} else
|
||||
setbits_be32(®s->mdio_stat, MDIO_STAT_ENC);
|
||||
setbits_be32(®s->mdio_stat, MDIO_STAT_HOLD_15_CLK);
|
||||
}
|
||||
|
||||
/* Wait till the bus is free */
|
||||
while ((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY)
|
||||
|
@ -14,6 +14,8 @@
|
||||
#include "asm/immap_qe.h"
|
||||
#include "qe.h"
|
||||
|
||||
#define MPC85xx_DEVDISR_QE_DISABLE 0x1
|
||||
|
||||
qe_map_t *qe_immr = NULL;
|
||||
static qe_snum_t snums[QE_NUM_OF_SNUM];
|
||||
|
||||
@ -317,7 +319,9 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
|
||||
size_t calc_size = sizeof(struct qe_firmware);
|
||||
size_t length;
|
||||
const struct qe_header *hdr;
|
||||
|
||||
#ifdef CONFIG_DEEP_SLEEP
|
||||
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
#endif
|
||||
if (!firmware) {
|
||||
printf("Invalid address\n");
|
||||
return -EINVAL;
|
||||
@ -330,6 +334,9 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
|
||||
if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') ||
|
||||
(hdr->magic[2] != 'F')) {
|
||||
printf("Not a microcode\n");
|
||||
#ifdef CONFIG_DEEP_SLEEP
|
||||
setbits_be32(&gur->devdisr, MPC85xx_DEVDISR_QE_DISABLE);
|
||||
#endif
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
|
@ -729,9 +729,12 @@ void get_sys_info ( sys_info_t * );
|
||||
#if defined(CONFIG_8xx) || defined(CONFIG_MPC8260)
|
||||
void cpu_init_f (volatile immap_t *immr);
|
||||
#endif
|
||||
#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MCF52x2) ||defined(CONFIG_MPC86xx)
|
||||
#if defined(CONFIG_4xx) || defined(CONFIG_MCF52x2) || defined(CONFIG_MPC86xx)
|
||||
void cpu_init_f (void);
|
||||
#endif
|
||||
#ifdef CONFIG_MPC85xx
|
||||
ulong cpu_init_f(void);
|
||||
#endif
|
||||
|
||||
int cpu_init_r (void);
|
||||
#if defined(CONFIG_MPC8260)
|
||||
|
@ -7,6 +7,9 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
/*
|
||||
* B4860 QDS board configuration file
|
||||
*/
|
||||
@ -115,6 +118,17 @@
|
||||
#define IDT_SERDES1_ADDRESS 0x6E
|
||||
#define IDT_SERDES2_ADDRESS 0x6C
|
||||
|
||||
/* Voltage monitor on channel 2*/
|
||||
#define I2C_MUX_CH_VOL_MONITOR 0xa
|
||||
#define I2C_VOL_MONITOR_ADDR 0x40
|
||||
#define I2C_VOL_MONITOR_BUS_V_OFFSET 0x2
|
||||
#define I2C_VOL_MONITOR_BUS_V_OVF 0x1
|
||||
#define I2C_VOL_MONITOR_BUS_V_SHIFT 3
|
||||
|
||||
#define CONFIG_ZM7300
|
||||
#define I2C_MUX_CH_DPM 0xa
|
||||
#define I2C_DPM_ADDR 0x28
|
||||
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
|
||||
#ifdef CONFIG_SYS_NO_FLASH
|
||||
|
@ -11,6 +11,8 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
#include "../board/freescale/common/ics307_clk.h"
|
||||
|
||||
#ifdef CONFIG_36BIT
|
||||
|
@ -11,6 +11,9 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
#include "../board/freescale/common/ics307_clk.h"
|
||||
|
||||
#ifdef CONFIG_36BIT
|
||||
@ -30,7 +33,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_SYS_TEXT_BASE
|
||||
#define CONFIG_SYS_TEXT_BASE 0xeff80000
|
||||
#define CONFIG_SYS_TEXT_BASE 0xeff40000
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RESET_VECTOR_ADDRESS
|
||||
|
@ -16,6 +16,9 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
/* High Level Configuration Options */
|
||||
#define CONFIG_MPC8641 1 /* MPC8641 specific */
|
||||
#define CONFIG_MPC8641HPCN 1 /* MPC8641HPCN board specific */
|
||||
|
@ -721,6 +721,7 @@ unsigned long get_board_ddr_clk(void);
|
||||
|
||||
#define CONFIG_CMD_DHCP
|
||||
#define CONFIG_CMD_ELF
|
||||
#define CONFIG_CMD_ERRATA
|
||||
#define CONFIG_CMD_MII
|
||||
#define CONFIG_CMD_I2C
|
||||
#define CONFIG_CMD_PING
|
||||
|
752
include/configs/T4240RDB.h
Normal file
752
include/configs/T4240RDB.h
Normal file
@ -0,0 +1,752 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/*
|
||||
* T4240 RDB board configuration file
|
||||
*/
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_T4240RDB
|
||||
#define CONFIG_PHYS_64BIT
|
||||
|
||||
#define CONFIG_FSL_SATA_V2
|
||||
#define CONFIG_PCIE4
|
||||
|
||||
#define CONFIG_ICS307_REFCLK_HZ 25000000 /* ICS307 ref clk freq */
|
||||
|
||||
#ifdef CONFIG_RAMBOOT_PBL
|
||||
#define CONFIG_RAMBOOT_TEXT_BASE CONFIG_SYS_TEXT_BASE
|
||||
#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
|
||||
#define CONFIG_SYS_FSL_PBL_PBI $(SRCTREE)/board/freescale/t4rdb/t4_pbi.cfg
|
||||
#define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/t4rdb/t4_rcw.cfg
|
||||
#endif
|
||||
|
||||
#define CONFIG_DDR_ECC
|
||||
|
||||
#define CONFIG_CMD_REGINFO
|
||||
|
||||
/* High Level Configuration Options */
|
||||
#define CONFIG_BOOKE
|
||||
#define CONFIG_E500 /* BOOKE e500 family */
|
||||
#define CONFIG_E500MC /* BOOKE e500mc family */
|
||||
#define CONFIG_SYS_BOOK3E_HV /* Category E.HV supported */
|
||||
#define CONFIG_MP /* support multiple processors */
|
||||
|
||||
#ifndef CONFIG_SYS_TEXT_BASE
|
||||
#define CONFIG_SYS_TEXT_BASE 0xeff40000
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_RESET_VECTOR_ADDRESS
|
||||
#define CONFIG_RESET_VECTOR_ADDRESS 0xeffffffc
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_FSL_CPC /* Corenet Platform Cache */
|
||||
#define CONFIG_SYS_NUM_CPC CONFIG_NUM_DDR_CONTROLLERS
|
||||
#define CONFIG_FSL_IFC /* Enable IFC Support */
|
||||
#define CONFIG_PCI /* Enable PCI/PCIE */
|
||||
#define CONFIG_PCIE1 /* PCIE controler 1 */
|
||||
#define CONFIG_PCIE2 /* PCIE controler 2 */
|
||||
#define CONFIG_PCIE3 /* PCIE controler 3 */
|
||||
#define CONFIG_FSL_PCI_INIT /* Use common FSL init code */
|
||||
#define CONFIG_SYS_PCI_64BIT /* enable 64-bit PCI resources */
|
||||
|
||||
#define CONFIG_FSL_LAW /* Use common FSL init code */
|
||||
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
|
||||
/*
|
||||
* These can be toggled for performance analysis, otherwise use default.
|
||||
*/
|
||||
#define CONFIG_SYS_CACHE_STASHING
|
||||
#define CONFIG_BTB /* toggle branch predition */
|
||||
#ifdef CONFIG_DDR_ECC
|
||||
#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
|
||||
#define CONFIG_MEM_INIT_VALUE 0xdeadbeef
|
||||
#endif
|
||||
|
||||
#define CONFIG_ENABLE_36BIT_PHYS
|
||||
|
||||
#define CONFIG_ADDR_MAP
|
||||
#define CONFIG_SYS_NUM_ADDR_MAP 64 /* number of TLB1 entries */
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_START 0x00200000 /* memtest works on */
|
||||
#define CONFIG_SYS_MEMTEST_END 0x00400000
|
||||
#define CONFIG_SYS_ALT_MEMTEST
|
||||
#define CONFIG_PANIC_HANG /* do not reset board on panic */
|
||||
|
||||
/*
|
||||
* Config the L3 Cache as L3 SRAM
|
||||
*/
|
||||
#define CONFIG_SYS_INIT_L3_ADDR CONFIG_RAMBOOT_TEXT_BASE
|
||||
|
||||
#define CONFIG_SYS_DCSRBAR 0xf0000000
|
||||
#define CONFIG_SYS_DCSRBAR_PHYS 0xf00000000ull
|
||||
|
||||
/*
|
||||
* DDR Setup
|
||||
*/
|
||||
#define CONFIG_VERY_BIG_RAM
|
||||
#define CONFIG_SYS_DDR_SDRAM_BASE 0x00000000
|
||||
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE
|
||||
|
||||
/* CONFIG_NUM_DDR_CONTROLLERS is defined in include/asm/config_mpc85xx.h */
|
||||
#define CONFIG_DIMM_SLOTS_PER_CTLR 1
|
||||
#define CONFIG_CHIP_SELECTS_PER_CTRL 4
|
||||
#define CONFIG_FSL_DDR_FIRST_SLOT_QUAD_CAPABLE
|
||||
|
||||
#define CONFIG_DDR_SPD
|
||||
#define CONFIG_SYS_FSL_DDR3
|
||||
|
||||
|
||||
/*
|
||||
* IFC Definitions
|
||||
*/
|
||||
#define CONFIG_SYS_FLASH_BASE 0xe0000000
|
||||
#define CONFIG_SYS_FLASH_BASE_PHYS (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
|
||||
|
||||
|
||||
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
|
||||
|
||||
#define CONFIG_BOARD_EARLY_INIT_R /* call board_early_init_r function */
|
||||
#define CONFIG_MISC_INIT_R
|
||||
|
||||
#define CONFIG_HWCONFIG
|
||||
|
||||
/* define to use L1 as initial stack */
|
||||
#define CONFIG_L1_INIT_RAM
|
||||
#define CONFIG_SYS_INIT_RAM_LOCK
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR 0xfdd00000 /* Initial L1 address */
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0xf
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW 0xfe0ec000
|
||||
/* The assembler doesn't like typecast */
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
|
||||
((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
|
||||
CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
|
||||
#define CONFIG_SYS_INIT_RAM_SIZE 0x00004000
|
||||
|
||||
#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_INIT_RAM_SIZE - \
|
||||
GENERATED_GBL_DATA_SIZE)
|
||||
#define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_GBL_DATA_OFFSET
|
||||
|
||||
#define CONFIG_SYS_MONITOR_LEN (512 * 1024)
|
||||
#define CONFIG_SYS_MALLOC_LEN (4 * 1024 * 1024)
|
||||
|
||||
/* Serial Port - controlled on board with jumper J8
|
||||
* open - index 2
|
||||
* shorted - index 1
|
||||
*/
|
||||
#define CONFIG_CONS_INDEX 1
|
||||
#define CONFIG_SYS_NS16550
|
||||
#define CONFIG_SYS_NS16550_SERIAL
|
||||
#define CONFIG_SYS_NS16550_REG_SIZE 1
|
||||
#define CONFIG_SYS_NS16550_CLK (get_bus_freq(0)/2)
|
||||
|
||||
#define CONFIG_SYS_BAUDRATE_TABLE \
|
||||
{300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
|
||||
|
||||
#define CONFIG_SYS_NS16550_COM1 (CONFIG_SYS_CCSRBAR+0x11C500)
|
||||
#define CONFIG_SYS_NS16550_COM2 (CONFIG_SYS_CCSRBAR+0x11C600)
|
||||
#define CONFIG_SYS_NS16550_COM3 (CONFIG_SYS_CCSRBAR+0x11D500)
|
||||
#define CONFIG_SYS_NS16550_COM4 (CONFIG_SYS_CCSRBAR+0x11D600)
|
||||
|
||||
/* Use the HUSH parser */
|
||||
#define CONFIG_SYS_HUSH_PARSER
|
||||
#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
|
||||
|
||||
/* pass open firmware flat tree */
|
||||
#define CONFIG_OF_LIBFDT
|
||||
#define CONFIG_OF_BOARD_SETUP
|
||||
#define CONFIG_OF_STDOUT_VIA_ALIAS
|
||||
|
||||
/* new uImage format support */
|
||||
#define CONFIG_FIT
|
||||
#define CONFIG_FIT_VERBOSE /* enable fit_format_{error,warning}() */
|
||||
|
||||
/* I2C */
|
||||
#define CONFIG_SYS_I2C
|
||||
#define CONFIG_SYS_I2C_FSL
|
||||
#define CONFIG_SYS_FSL_I2C_SLAVE 0x7F
|
||||
#define CONFIG_SYS_FSL_I2C_OFFSET 0x118000
|
||||
#define CONFIG_SYS_FSL_I2C2_SLAVE 0x7F
|
||||
#define CONFIG_SYS_FSL_I2C2_OFFSET 0x118100
|
||||
|
||||
/*
|
||||
* General PCI
|
||||
* Memory space is mapped 1-1, but I/O space must start from 0.
|
||||
*/
|
||||
|
||||
/* controller 1, direct to uli, tgtid 3, Base address 20000 */
|
||||
#define CONFIG_SYS_PCIE1_MEM_VIRT 0x80000000
|
||||
#define CONFIG_SYS_PCIE1_MEM_BUS 0xe0000000
|
||||
#define CONFIG_SYS_PCIE1_MEM_PHYS 0xc00000000ull
|
||||
#define CONFIG_SYS_PCIE1_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE1_IO_VIRT 0xf8000000
|
||||
#define CONFIG_SYS_PCIE1_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCIE1_IO_PHYS 0xff8000000ull
|
||||
#define CONFIG_SYS_PCIE1_IO_SIZE 0x00010000 /* 64k */
|
||||
|
||||
/* controller 2, Slot 2, tgtid 2, Base address 201000 */
|
||||
#define CONFIG_SYS_PCIE2_MEM_VIRT 0xa0000000
|
||||
#define CONFIG_SYS_PCIE2_MEM_BUS 0xe0000000
|
||||
#define CONFIG_SYS_PCIE2_MEM_PHYS 0xc20000000ull
|
||||
#define CONFIG_SYS_PCIE2_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE2_IO_VIRT 0xf8010000
|
||||
#define CONFIG_SYS_PCIE2_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCIE2_IO_PHYS 0xff8010000ull
|
||||
#define CONFIG_SYS_PCIE2_IO_SIZE 0x00010000 /* 64k */
|
||||
|
||||
/* controller 3, Slot 1, tgtid 1, Base address 202000 */
|
||||
#define CONFIG_SYS_PCIE3_MEM_VIRT 0xc0000000
|
||||
#define CONFIG_SYS_PCIE3_MEM_BUS 0xe0000000
|
||||
#define CONFIG_SYS_PCIE3_MEM_PHYS 0xc40000000ull
|
||||
#define CONFIG_SYS_PCIE3_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE3_IO_VIRT 0xf8020000
|
||||
#define CONFIG_SYS_PCIE3_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCIE3_IO_PHYS 0xff8020000ull
|
||||
#define CONFIG_SYS_PCIE3_IO_SIZE 0x00010000 /* 64k */
|
||||
|
||||
/* controller 4, Base address 203000 */
|
||||
#define CONFIG_SYS_PCIE4_MEM_BUS 0xe0000000
|
||||
#define CONFIG_SYS_PCIE4_MEM_PHYS 0xc60000000ull
|
||||
#define CONFIG_SYS_PCIE4_MEM_SIZE 0x20000000 /* 512M */
|
||||
#define CONFIG_SYS_PCIE4_IO_BUS 0x00000000
|
||||
#define CONFIG_SYS_PCIE4_IO_PHYS 0xff8030000ull
|
||||
#define CONFIG_SYS_PCIE4_IO_SIZE 0x00010000 /* 64k */
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
#define CONFIG_PCI_INDIRECT_BRIDGE
|
||||
#define CONFIG_NET_MULTI
|
||||
#define CONFIG_PCI_PNP /* do pci plug-and-play */
|
||||
#define CONFIG_E1000
|
||||
|
||||
#define CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */
|
||||
#define CONFIG_DOS_PARTITION
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
/* SATA */
|
||||
#ifdef CONFIG_FSL_SATA_V2
|
||||
#define CONFIG_LIBATA
|
||||
#define CONFIG_FSL_SATA
|
||||
|
||||
#define CONFIG_SYS_SATA_MAX_DEVICE 2
|
||||
#define CONFIG_SATA1
|
||||
#define CONFIG_SYS_SATA1 CONFIG_SYS_MPC85xx_SATA1_ADDR
|
||||
#define CONFIG_SYS_SATA1_FLAGS FLAGS_DMA
|
||||
#define CONFIG_SATA2
|
||||
#define CONFIG_SYS_SATA2 CONFIG_SYS_MPC85xx_SATA2_ADDR
|
||||
#define CONFIG_SYS_SATA2_FLAGS FLAGS_DMA
|
||||
|
||||
#define CONFIG_LBA48
|
||||
#define CONFIG_CMD_SATA
|
||||
#define CONFIG_DOS_PARTITION
|
||||
#define CONFIG_CMD_EXT2
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FMAN_ENET
|
||||
#define CONFIG_MII /* MII PHY management */
|
||||
#define CONFIG_ETHPRIME "FM1@DTSEC1"
|
||||
#define CONFIG_PHY_GIGE /* Include GbE speed/duplex detection */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Environment
|
||||
*/
|
||||
#define CONFIG_LOADS_ECHO /* echo on for serial download */
|
||||
#define CONFIG_SYS_LOADS_BAUD_CHANGE /* allow baudrate change */
|
||||
|
||||
/*
|
||||
* Command line configuration.
|
||||
*/
|
||||
#include <config_cmd_default.h>
|
||||
|
||||
#define CONFIG_CMD_DHCP
|
||||
#define CONFIG_CMD_ELF
|
||||
#define CONFIG_CMD_ERRATA
|
||||
#define CONFIG_CMD_GREPENV
|
||||
#define CONFIG_CMD_IRQ
|
||||
#define CONFIG_CMD_I2C
|
||||
#define CONFIG_CMD_MII
|
||||
#define CONFIG_CMD_PING
|
||||
#define CONFIG_CMD_SETEXPR
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
#define CONFIG_CMD_PCI
|
||||
#define CONFIG_CMD_NET
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Miscellaneous configurable options
|
||||
*/
|
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */
|
||||
#define CONFIG_CMDLINE_EDITING /* Command-line editing */
|
||||
#define CONFIG_AUTO_COMPLETE /* add autocompletion support */
|
||||
#define CONFIG_SYS_LOAD_ADDR 0x2000000 /* default load address */
|
||||
#ifdef CONFIG_CMD_KGDB
|
||||
#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */
|
||||
#else
|
||||
#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
|
||||
#endif
|
||||
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
|
||||
#define CONFIG_SYS_MAXARGS 16 /* max number of command args */
|
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE/* Boot Argument Buffer Size */
|
||||
|
||||
/*
|
||||
* For booting Linux, the board info and command line data
|
||||
* have to be in the first 64 MB of memory, since this is
|
||||
* the maximum mapped by the Linux kernel during initialization.
|
||||
*/
|
||||
#define CONFIG_SYS_BOOTMAPSZ (64 << 20) /* Initial map for Linux*/
|
||||
#define CONFIG_SYS_BOOTM_LEN (64 << 20) /* Increase max gunzip size */
|
||||
|
||||
#ifdef CONFIG_CMD_KGDB
|
||||
#define CONFIG_KGDB_BAUDRATE 230400 /* speed to run kgdb serial port */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Environment Configuration
|
||||
*/
|
||||
#define CONFIG_ROOTPATH "/opt/nfsroot"
|
||||
#define CONFIG_BOOTFILE "uImage"
|
||||
#define CONFIG_UBOOTPATH "u-boot.bin" /* U-Boot image on TFTP server*/
|
||||
|
||||
/* default location for tftp and bootm */
|
||||
#define CONFIG_LOADADDR 1000000
|
||||
|
||||
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
#define CONFIG_HVBOOT \
|
||||
"setenv bootargs config-addr=0x60000000; " \
|
||||
"bootm 0x01000000 - 0x00f00000"
|
||||
|
||||
#ifdef CONFIG_SYS_NO_FLASH
|
||||
#ifndef CONFIG_RAMBOOT_PBL
|
||||
#define CONFIG_ENV_IS_NOWHERE
|
||||
#endif
|
||||
#else
|
||||
#define CONFIG_FLASH_CFI_DRIVER
|
||||
#define CONFIG_SYS_FLASH_CFI
|
||||
#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SPIFLASH)
|
||||
#define CONFIG_SYS_EXTRA_ENV_RELOC
|
||||
#define CONFIG_ENV_IS_IN_SPI_FLASH
|
||||
#define CONFIG_ENV_SPI_BUS 0
|
||||
#define CONFIG_ENV_SPI_CS 0
|
||||
#define CONFIG_ENV_SPI_MAX_HZ 10000000
|
||||
#define CONFIG_ENV_SPI_MODE 0
|
||||
#define CONFIG_ENV_SIZE 0x2000 /* 8KB */
|
||||
#define CONFIG_ENV_OFFSET 0x100000 /* 1MB */
|
||||
#define CONFIG_ENV_SECT_SIZE 0x10000
|
||||
#elif defined(CONFIG_SDCARD)
|
||||
#define CONFIG_SYS_EXTRA_ENV_RELOC
|
||||
#define CONFIG_ENV_IS_IN_MMC
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
#define CONFIG_ENV_SIZE 0x2000
|
||||
#define CONFIG_ENV_OFFSET (512 * 1658)
|
||||
#elif defined(CONFIG_NAND)
|
||||
#define CONFIG_SYS_EXTRA_ENV_RELOC
|
||||
#define CONFIG_ENV_IS_IN_NAND
|
||||
#define CONFIG_ENV_SIZE CONFIG_SYS_NAND_BLOCK_SIZE
|
||||
#define CONFIG_ENV_OFFSET (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
|
||||
#elif defined(CONFIG_ENV_IS_NOWHERE)
|
||||
#define CONFIG_ENV_SIZE 0x2000
|
||||
#else
|
||||
#define CONFIG_ENV_IS_IN_FLASH
|
||||
#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
|
||||
#define CONFIG_ENV_SIZE 0x2000
|
||||
#define CONFIG_ENV_SECT_SIZE 0x20000 /* 128K (one sector) */
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_CLK_FREQ 66666666
|
||||
#define CONFIG_DDR_CLK_FREQ 133333333
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
unsigned long get_board_sys_clk(void);
|
||||
unsigned long get_board_ddr_clk(void);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* DDR Setup
|
||||
*/
|
||||
#define CONFIG_SYS_SPD_BUS_NUM 0
|
||||
#define SPD_EEPROM_ADDRESS1 0x52
|
||||
#define SPD_EEPROM_ADDRESS2 0x54
|
||||
#define SPD_EEPROM_ADDRESS3 0x56
|
||||
#define SPD_EEPROM_ADDRESS SPD_EEPROM_ADDRESS1 /* for p3041/p5010 */
|
||||
#define CONFIG_SYS_SDRAM_SIZE 4096 /* for fixed parameter use */
|
||||
|
||||
/*
|
||||
* IFC Definitions
|
||||
*/
|
||||
#define CONFIG_SYS_NOR0_CSPR_EXT (0xf)
|
||||
#define CONFIG_SYS_NOR0_CSPR (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS \
|
||||
+ 0x8000000) | \
|
||||
CSPR_PORT_SIZE_16 | \
|
||||
CSPR_MSEL_NOR | \
|
||||
CSPR_V)
|
||||
#define CONFIG_SYS_NOR1_CSPR_EXT (0xf)
|
||||
#define CONFIG_SYS_NOR1_CSPR (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | \
|
||||
CSPR_PORT_SIZE_16 | \
|
||||
CSPR_MSEL_NOR | \
|
||||
CSPR_V)
|
||||
#define CONFIG_SYS_NOR_AMASK IFC_AMASK(128*1024*1024)
|
||||
/* NOR Flash Timing Params */
|
||||
#define CONFIG_SYS_NOR_CSOR CSOR_NAND_TRHZ_80
|
||||
|
||||
#define CONFIG_SYS_NOR_FTIM0 (FTIM0_NOR_TACSE(0x4) | \
|
||||
FTIM0_NOR_TEADC(0x5) | \
|
||||
FTIM0_NOR_TEAHC(0x5))
|
||||
#define CONFIG_SYS_NOR_FTIM1 (FTIM1_NOR_TACO(0x35) | \
|
||||
FTIM1_NOR_TRAD_NOR(0x1A) |\
|
||||
FTIM1_NOR_TSEQRAD_NOR(0x13))
|
||||
#define CONFIG_SYS_NOR_FTIM2 (FTIM2_NOR_TCS(0x4) | \
|
||||
FTIM2_NOR_TCH(0x4) | \
|
||||
FTIM2_NOR_TWPH(0x0E) | \
|
||||
FTIM2_NOR_TWP(0x1c))
|
||||
#define CONFIG_SYS_NOR_FTIM3 0x0
|
||||
|
||||
#define CONFIG_SYS_FLASH_QUIET_TEST
|
||||
#define CONFIG_FLASH_SHOW_PROGRESS 45 /* count down from 45/5: 9..1 */
|
||||
|
||||
#define CONFIG_SYS_MAX_FLASH_BANKS 2 /* number of banks */
|
||||
#define CONFIG_SYS_MAX_FLASH_SECT 1024 /* sectors per device */
|
||||
#define CONFIG_SYS_FLASH_ERASE_TOUT 60000 /* Flash Erase Timeout (ms) */
|
||||
#define CONFIG_SYS_FLASH_WRITE_TOUT 500 /* Flash Write Timeout (ms) */
|
||||
|
||||
#define CONFIG_SYS_FLASH_EMPTY_INFO
|
||||
#define CONFIG_SYS_FLASH_BANKS_LIST {CONFIG_SYS_FLASH_BASE_PHYS \
|
||||
+ 0x8000000, CONFIG_SYS_FLASH_BASE_PHYS}
|
||||
|
||||
/* NAND Flash on IFC */
|
||||
#define CONFIG_NAND_FSL_IFC
|
||||
#define CONFIG_SYS_NAND_MAX_ECCPOS 256
|
||||
#define CONFIG_SYS_NAND_MAX_OOBFREE 2
|
||||
#define CONFIG_SYS_NAND_BASE 0xff800000
|
||||
#define CONFIG_SYS_NAND_BASE_PHYS (0xf00000000ull | CONFIG_SYS_NAND_BASE)
|
||||
|
||||
#define CONFIG_SYS_NAND_CSPR_EXT (0xf)
|
||||
#define CONFIG_SYS_NAND_CSPR (CSPR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
|
||||
| CSPR_PORT_SIZE_8 /* Port Size = 8 bit */ \
|
||||
| CSPR_MSEL_NAND /* MSEL = NAND */ \
|
||||
| CSPR_V)
|
||||
#define CONFIG_SYS_NAND_AMASK IFC_AMASK(64*1024)
|
||||
|
||||
#define CONFIG_SYS_NAND_CSOR (CSOR_NAND_ECC_ENC_EN /* ECC on encode */ \
|
||||
| CSOR_NAND_ECC_DEC_EN /* ECC on decode */ \
|
||||
| CSOR_NAND_ECC_MODE_4 /* 4-bit ECC */ \
|
||||
| CSOR_NAND_RAL_3 /* RAL = 2Byes */ \
|
||||
| CSOR_NAND_PGS_4K /* Page Size = 4K */ \
|
||||
| CSOR_NAND_SPRZ_224 /* Spare size = 224 */ \
|
||||
| CSOR_NAND_PB(128)) /*Page Per Block = 128*/
|
||||
|
||||
#define CONFIG_SYS_NAND_ONFI_DETECTION
|
||||
|
||||
/* ONFI NAND Flash mode0 Timing Params */
|
||||
#define CONFIG_SYS_NAND_FTIM0 (FTIM0_NAND_TCCST(0x07) | \
|
||||
FTIM0_NAND_TWP(0x18) | \
|
||||
FTIM0_NAND_TWCHT(0x07) | \
|
||||
FTIM0_NAND_TWH(0x0a))
|
||||
#define CONFIG_SYS_NAND_FTIM1 (FTIM1_NAND_TADLE(0x32) | \
|
||||
FTIM1_NAND_TWBE(0x39) | \
|
||||
FTIM1_NAND_TRR(0x0e) | \
|
||||
FTIM1_NAND_TRP(0x18))
|
||||
#define CONFIG_SYS_NAND_FTIM2 (FTIM2_NAND_TRAD(0x0f) | \
|
||||
FTIM2_NAND_TREH(0x0a) | \
|
||||
FTIM2_NAND_TWHRE(0x1e))
|
||||
#define CONFIG_SYS_NAND_FTIM3 0x0
|
||||
|
||||
#define CONFIG_SYS_NAND_DDR_LAW 11
|
||||
#define CONFIG_SYS_NAND_BASE_LIST { CONFIG_SYS_NAND_BASE }
|
||||
#define CONFIG_SYS_MAX_NAND_DEVICE 1
|
||||
#define CONFIG_MTD_NAND_VERIFY_WRITE
|
||||
#define CONFIG_CMD_NAND
|
||||
|
||||
#define CONFIG_SYS_NAND_BLOCK_SIZE (512 * 1024)
|
||||
|
||||
#if defined(CONFIG_NAND)
|
||||
#define CONFIG_SYS_CSPR0_EXT CONFIG_SYS_NAND_CSPR_EXT
|
||||
#define CONFIG_SYS_CSPR0 CONFIG_SYS_NAND_CSPR
|
||||
#define CONFIG_SYS_AMASK0 CONFIG_SYS_NAND_AMASK
|
||||
#define CONFIG_SYS_CSOR0 CONFIG_SYS_NAND_CSOR
|
||||
#define CONFIG_SYS_CS0_FTIM0 CONFIG_SYS_NAND_FTIM0
|
||||
#define CONFIG_SYS_CS0_FTIM1 CONFIG_SYS_NAND_FTIM1
|
||||
#define CONFIG_SYS_CS0_FTIM2 CONFIG_SYS_NAND_FTIM2
|
||||
#define CONFIG_SYS_CS0_FTIM3 CONFIG_SYS_NAND_FTIM3
|
||||
#define CONFIG_SYS_CSPR2_EXT CONFIG_SYS_NOR0_CSPR_EXT
|
||||
#define CONFIG_SYS_CSPR2 CONFIG_SYS_NOR0_CSPR
|
||||
#define CONFIG_SYS_AMASK2 CONFIG_SYS_NOR_AMASK
|
||||
#define CONFIG_SYS_CSOR2 CONFIG_SYS_NOR_CSOR
|
||||
#define CONFIG_SYS_CS2_FTIM0 CONFIG_SYS_NOR_FTIM0
|
||||
#define CONFIG_SYS_CS2_FTIM1 CONFIG_SYS_NOR_FTIM1
|
||||
#define CONFIG_SYS_CS2_FTIM2 CONFIG_SYS_NOR_FTIM2
|
||||
#define CONFIG_SYS_CS2_FTIM3 CONFIG_SYS_NOR_FTIM3
|
||||
#else
|
||||
#define CONFIG_SYS_CSPR0_EXT CONFIG_SYS_NOR0_CSPR_EXT
|
||||
#define CONFIG_SYS_CSPR0 CONFIG_SYS_NOR0_CSPR
|
||||
#define CONFIG_SYS_AMASK0 CONFIG_SYS_NOR_AMASK
|
||||
#define CONFIG_SYS_CSOR0 CONFIG_SYS_NOR_CSOR
|
||||
#define CONFIG_SYS_CS0_FTIM0 CONFIG_SYS_NOR_FTIM0
|
||||
#define CONFIG_SYS_CS0_FTIM1 CONFIG_SYS_NOR_FTIM1
|
||||
#define CONFIG_SYS_CS0_FTIM2 CONFIG_SYS_NOR_FTIM2
|
||||
#define CONFIG_SYS_CS0_FTIM3 CONFIG_SYS_NOR_FTIM3
|
||||
#define CONFIG_SYS_CSPR1_EXT CONFIG_SYS_NAND_CSPR_EXT
|
||||
#define CONFIG_SYS_CSPR1 CONFIG_SYS_NAND_CSPR
|
||||
#define CONFIG_SYS_AMASK1 CONFIG_SYS_NAND_AMASK
|
||||
#define CONFIG_SYS_CSOR1 CONFIG_SYS_NAND_CSOR
|
||||
#define CONFIG_SYS_CS1_FTIM0 CONFIG_SYS_NAND_FTIM0
|
||||
#define CONFIG_SYS_CS1_FTIM1 CONFIG_SYS_NAND_FTIM1
|
||||
#define CONFIG_SYS_CS1_FTIM2 CONFIG_SYS_NAND_FTIM2
|
||||
#define CONFIG_SYS_CS1_FTIM3 CONFIG_SYS_NAND_FTIM3
|
||||
#endif
|
||||
#define CONFIG_SYS_CSPR2_EXT CONFIG_SYS_NOR1_CSPR_EXT
|
||||
#define CONFIG_SYS_CSPR2 CONFIG_SYS_NOR1_CSPR
|
||||
#define CONFIG_SYS_AMASK2 CONFIG_SYS_NOR_AMASK
|
||||
#define CONFIG_SYS_CSOR2 CONFIG_SYS_NOR_CSOR
|
||||
#define CONFIG_SYS_CS2_FTIM0 CONFIG_SYS_NOR_FTIM0
|
||||
#define CONFIG_SYS_CS2_FTIM1 CONFIG_SYS_NOR_FTIM1
|
||||
#define CONFIG_SYS_CS2_FTIM2 CONFIG_SYS_NOR_FTIM2
|
||||
#define CONFIG_SYS_CS2_FTIM3 CONFIG_SYS_NOR_FTIM3
|
||||
|
||||
#if defined(CONFIG_RAMBOOT_PBL)
|
||||
#define CONFIG_SYS_RAMBOOT
|
||||
#endif
|
||||
|
||||
|
||||
/* I2C */
|
||||
#define CONFIG_SYS_FSL_I2C_SPEED 100000 /* I2C speed */
|
||||
#define CONFIG_SYS_FSL_I2C2_SPEED 100000 /* I2C2 speed */
|
||||
#define I2C_MUX_PCA_ADDR_PRI 0x77 /* I2C bus multiplexer,primary */
|
||||
#define I2C_MUX_PCA_ADDR_SEC 0x76 /* I2C bus multiplexer,secondary */
|
||||
|
||||
#define I2C_MUX_CH_DEFAULT 0x8
|
||||
#define I2C_MUX_CH_VOL_MONITOR 0xa
|
||||
#define I2C_MUX_CH_VSC3316_FS 0xc
|
||||
#define I2C_MUX_CH_VSC3316_BS 0xd
|
||||
|
||||
/* Voltage monitor on channel 2*/
|
||||
#define I2C_VOL_MONITOR_ADDR 0x40
|
||||
#define I2C_VOL_MONITOR_BUS_V_OFFSET 0x2
|
||||
#define I2C_VOL_MONITOR_BUS_V_OVF 0x1
|
||||
#define I2C_VOL_MONITOR_BUS_V_SHIFT 3
|
||||
|
||||
/*
|
||||
* eSPI - Enhanced SPI
|
||||
*/
|
||||
#define CONFIG_FSL_ESPI
|
||||
#define CONFIG_SPI_FLASH
|
||||
#define CONFIG_SPI_FLASH_SST
|
||||
#define CONFIG_CMD_SF
|
||||
#define CONFIG_SF_DEFAULT_SPEED 10000000
|
||||
#define CONFIG_SF_DEFAULT_MODE 0
|
||||
|
||||
|
||||
/* Qman/Bman */
|
||||
#ifndef CONFIG_NOBQFMAN
|
||||
#define CONFIG_SYS_DPAA_QBMAN /* Support Q/Bman */
|
||||
#define CONFIG_SYS_BMAN_NUM_PORTALS 50
|
||||
#define CONFIG_SYS_BMAN_MEM_BASE 0xf4000000
|
||||
#define CONFIG_SYS_BMAN_MEM_PHYS 0xff4000000ull
|
||||
#define CONFIG_SYS_BMAN_MEM_SIZE 0x02000000
|
||||
#define CONFIG_SYS_QMAN_NUM_PORTALS 50
|
||||
#define CONFIG_SYS_QMAN_MEM_BASE 0xf6000000
|
||||
#define CONFIG_SYS_QMAN_MEM_PHYS 0xff6000000ull
|
||||
#define CONFIG_SYS_QMAN_MEM_SIZE 0x02000000
|
||||
|
||||
#define CONFIG_SYS_DPAA_FMAN
|
||||
#define CONFIG_SYS_DPAA_PME
|
||||
#define CONFIG_SYS_PMAN
|
||||
#define CONFIG_SYS_DPAA_DCE
|
||||
#define CONFIG_SYS_DPAA_RMAN
|
||||
#define CONFIG_SYS_INTERLAKEN
|
||||
|
||||
/* Default address of microcode for the Linux Fman driver */
|
||||
#if defined(CONFIG_SPIFLASH)
|
||||
/*
|
||||
* env is stored at 0x100000, sector size is 0x10000, ucode is stored after
|
||||
* env, so we got 0x110000.
|
||||
*/
|
||||
#define CONFIG_SYS_QE_FW_IN_SPIFLASH
|
||||
#define CONFIG_SYS_FMAN_FW_ADDR 0x110000
|
||||
#elif defined(CONFIG_SDCARD)
|
||||
/*
|
||||
* PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
|
||||
* about 825KB (1650 blocks), Env is stored after the image, and the env size is
|
||||
* 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
|
||||
*/
|
||||
#define CONFIG_SYS_QE_FMAN_FW_IN_MMC
|
||||
#define CONFIG_SYS_FMAN_FW_ADDR (512 * 1680)
|
||||
#elif defined(CONFIG_NAND)
|
||||
#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
|
||||
#define CONFIG_SYS_FMAN_FW_ADDR (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
|
||||
#else
|
||||
#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
|
||||
#define CONFIG_SYS_FMAN_FW_ADDR 0xEFF00000
|
||||
#endif
|
||||
#define CONFIG_SYS_QE_FMAN_FW_LENGTH 0x10000
|
||||
#define CONFIG_SYS_FDT_PAD (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
|
||||
#endif /* CONFIG_NOBQFMAN */
|
||||
|
||||
#ifdef CONFIG_SYS_DPAA_FMAN
|
||||
#define CONFIG_FMAN_ENET
|
||||
#define CONFIG_PHYLIB_10G
|
||||
#define CONFIG_PHY_VITESSE
|
||||
#define CONFIG_PHY_CORTINA
|
||||
#define CONFIG_CORTINA_FW_ADDR 0xefe00000
|
||||
#define CONFIG_CORTINA_FW_LENGTH 0x40000
|
||||
#define CONFIG_PHY_TERANETICS
|
||||
#define SGMII_PHY_ADDR1 0x0
|
||||
#define SGMII_PHY_ADDR2 0x1
|
||||
#define SGMII_PHY_ADDR3 0x2
|
||||
#define SGMII_PHY_ADDR4 0x3
|
||||
#define SGMII_PHY_ADDR5 0x4
|
||||
#define SGMII_PHY_ADDR6 0x5
|
||||
#define SGMII_PHY_ADDR7 0x6
|
||||
#define SGMII_PHY_ADDR8 0x7
|
||||
#define FM1_10GEC1_PHY_ADDR 0x10
|
||||
#define FM1_10GEC2_PHY_ADDR 0x11
|
||||
#define FM2_10GEC1_PHY_ADDR 0x12
|
||||
#define FM2_10GEC2_PHY_ADDR 0x13
|
||||
#define CORTINA_PHY_ADDR1 FM1_10GEC1_PHY_ADDR
|
||||
#define CORTINA_PHY_ADDR2 FM1_10GEC2_PHY_ADDR
|
||||
#define CORTINA_PHY_ADDR3 FM2_10GEC1_PHY_ADDR
|
||||
#define CORTINA_PHY_ADDR4 FM2_10GEC2_PHY_ADDR
|
||||
#endif
|
||||
|
||||
|
||||
/* SATA */
|
||||
#ifdef CONFIG_FSL_SATA_V2
|
||||
#define CONFIG_LIBATA
|
||||
#define CONFIG_FSL_SATA
|
||||
|
||||
#define CONFIG_SYS_SATA_MAX_DEVICE 2
|
||||
#define CONFIG_SATA1
|
||||
#define CONFIG_SYS_SATA1 CONFIG_SYS_MPC85xx_SATA1_ADDR
|
||||
#define CONFIG_SYS_SATA1_FLAGS FLAGS_DMA
|
||||
#define CONFIG_SATA2
|
||||
#define CONFIG_SYS_SATA2 CONFIG_SYS_MPC85xx_SATA2_ADDR
|
||||
#define CONFIG_SYS_SATA2_FLAGS FLAGS_DMA
|
||||
|
||||
#define CONFIG_LBA48
|
||||
#define CONFIG_CMD_SATA
|
||||
#define CONFIG_DOS_PARTITION
|
||||
#define CONFIG_CMD_EXT2
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FMAN_ENET
|
||||
#define CONFIG_MII /* MII PHY management */
|
||||
#define CONFIG_ETHPRIME "FM1@DTSEC1"
|
||||
#define CONFIG_PHY_GIGE /* Include GbE speed/duplex detection */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* USB
|
||||
*/
|
||||
#define CONFIG_CMD_USB
|
||||
#define CONFIG_USB_STORAGE
|
||||
#define CONFIG_USB_EHCI
|
||||
#define CONFIG_USB_EHCI_FSL
|
||||
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
|
||||
#define CONFIG_CMD_EXT2
|
||||
#define CONFIG_HAS_FSL_DR_USB
|
||||
|
||||
#define CONFIG_MMC
|
||||
|
||||
#ifdef CONFIG_MMC
|
||||
#define CONFIG_FSL_ESDHC
|
||||
#define CONFIG_SYS_FSL_ESDHC_ADDR CONFIG_SYS_MPC85xx_ESDHC_ADDR
|
||||
#define CONFIG_SYS_FSL_ESDHC_BROKEN_TIMEOUT
|
||||
#define CONFIG_CMD_MMC
|
||||
#define CONFIG_GENERIC_MMC
|
||||
#define CONFIG_CMD_EXT2
|
||||
#define CONFIG_CMD_FAT
|
||||
#define CONFIG_DOS_PARTITION
|
||||
#endif
|
||||
|
||||
#define CONFIG_BOOTDELAY 10 /* -1 disables auto-boot */
|
||||
|
||||
#define __USB_PHY_TYPE utmi
|
||||
|
||||
/*
|
||||
* T4240 has 3 DDR controllers. Default to 3-way interleaving. It can be
|
||||
* 3way_1KB, 3way_4KB, 3way_8KB. T4160 has 2 DDR controllers. Default to 2-way
|
||||
* interleaving. It can be cacheline, page, bank, superbank.
|
||||
* See doc/README.fsl-ddr for details.
|
||||
*/
|
||||
#define CTRL_INTLV_PREFERED 3way_4KB
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"hwconfig=fsl_ddr:" \
|
||||
"ctlr_intlv=" __stringify(CTRL_INTLV_PREFERED) "," \
|
||||
"bank_intlv=auto;" \
|
||||
"usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) "\0"\
|
||||
"netdev=eth0\0" \
|
||||
"uboot=" __stringify(CONFIG_UBOOTPATH) "\0" \
|
||||
"ubootaddr=" __stringify(CONFIG_SYS_TEXT_BASE) "\0" \
|
||||
"tftpflash=tftpboot $loadaddr $uboot && " \
|
||||
"protect off $ubootaddr +$filesize && " \
|
||||
"erase $ubootaddr +$filesize && " \
|
||||
"cp.b $loadaddr $ubootaddr $filesize && " \
|
||||
"protect on $ubootaddr +$filesize && " \
|
||||
"cmp.b $loadaddr $ubootaddr $filesize\0" \
|
||||
"consoledev=ttyS0\0" \
|
||||
"ramdiskaddr=2000000\0" \
|
||||
"ramdiskfile=t4240rdb/ramdisk.uboot\0" \
|
||||
"fdtaddr=c00000\0" \
|
||||
"fdtfile=t4240rdb/t4240rdb.dtb\0" \
|
||||
"bdev=sda3\0"
|
||||
|
||||
#define CONFIG_HVBOOT \
|
||||
"setenv bootargs config-addr=0x60000000; " \
|
||||
"bootm 0x01000000 - 0x00f00000"
|
||||
|
||||
#define CONFIG_LINUX \
|
||||
"setenv bootargs root=/dev/ram rw " \
|
||||
"console=$consoledev,$baudrate $othbootargs;" \
|
||||
"setenv ramdiskaddr 0x02000000;" \
|
||||
"setenv fdtaddr 0x00c00000;" \
|
||||
"setenv loadaddr 0x1000000;" \
|
||||
"bootm $loadaddr $ramdiskaddr $fdtaddr"
|
||||
|
||||
#define CONFIG_HDBOOT \
|
||||
"setenv bootargs root=/dev/$bdev rw " \
|
||||
"console=$consoledev,$baudrate $othbootargs;" \
|
||||
"tftp $loadaddr $bootfile;" \
|
||||
"tftp $fdtaddr $fdtfile;" \
|
||||
"bootm $loadaddr - $fdtaddr"
|
||||
|
||||
#define CONFIG_NFSBOOTCOMMAND \
|
||||
"setenv bootargs root=/dev/nfs rw " \
|
||||
"nfsroot=$serverip:$rootpath " \
|
||||
"ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \
|
||||
"console=$consoledev,$baudrate $othbootargs;" \
|
||||
"tftp $loadaddr $bootfile;" \
|
||||
"tftp $fdtaddr $fdtfile;" \
|
||||
"bootm $loadaddr - $fdtaddr"
|
||||
|
||||
#define CONFIG_RAMBOOTCOMMAND \
|
||||
"setenv bootargs root=/dev/ram rw " \
|
||||
"console=$consoledev,$baudrate $othbootargs;" \
|
||||
"tftp $ramdiskaddr $ramdiskfile;" \
|
||||
"tftp $loadaddr $bootfile;" \
|
||||
"tftp $fdtaddr $fdtfile;" \
|
||||
"bootm $loadaddr $ramdiskaddr $fdtaddr"
|
||||
|
||||
#define CONFIG_BOOTCOMMAND CONFIG_LINUX
|
||||
|
||||
#include <asm/fsl_secure_boot.h>
|
||||
|
||||
#ifdef CONFIG_SECURE_BOOT
|
||||
/* Secure Boot target was not getting build for T4240 because of
|
||||
* increased binary size. So the size is being reduced by removing USB
|
||||
* which is anyways not used in Secure Environment.
|
||||
*/
|
||||
#undef CONFIG_CMD_USB
|
||||
#endif
|
||||
|
||||
#endif /* __CONFIG_H */
|
@ -10,6 +10,9 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
#include "../board/freescale/common/ics307_clk.h"
|
||||
|
||||
#ifdef CONFIG_RAMBOOT_PBL
|
||||
|
@ -85,11 +85,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
|
||||
#define CONFIG_ADDR_MAP
|
||||
#define CONFIG_SYS_NUM_ADDR_MAP 64 /* number of TLB1 entries */
|
||||
|
||||
#define CONFIG_POST CONFIG_SYS_POST_MEMORY /* test POST memory test */
|
||||
#define CONFIG_SYS_MEMTEST_START 0x00100000 /* memtest works on */
|
||||
#define CONFIG_SYS_MEMTEST_END 0x00800000
|
||||
#define CONFIG_SYS_ALT_MEMTEST
|
||||
#define CONFIG_PANIC_HANG /* do not reset board on panic */
|
||||
#define CONFIG_POST CONFIG_SYS_POST_MEM_REGIONS /* POST memory regions test */
|
||||
|
||||
/*
|
||||
* Config the L3 Cache as L3 SRAM
|
||||
@ -143,10 +139,12 @@ unsigned long get_board_sys_clk(unsigned long dummy);
|
||||
#define CONFIG_KM_PNVRAM 0x80000
|
||||
/* physical RAM MTD size [hex] */
|
||||
#define CONFIG_KM_PHRAM 0x100000
|
||||
/* resereved pram area at the end of memroy [hex] */
|
||||
#define CONFIG_KM_RESERVED_PRAM 0x0
|
||||
/* enable protected RAM */
|
||||
#define CONFIG_PRAM 0
|
||||
/* reserved pram area at the end of memory [hex]
|
||||
* u-boot reserves some memory for the MP boot page */
|
||||
#define CONFIG_KM_RESERVED_PRAM 0x1000
|
||||
/* set the default PRAM value to at least PNVRAM + PHRAM when pram env variable
|
||||
* is not valid yet, which is the case for when u-boot copies itself to RAM */
|
||||
#define CONFIG_PRAM ((CONFIG_KM_PNVRAM + CONFIG_KM_PHRAM)>>10)
|
||||
|
||||
#define CONFIG_KM_CRAMFS_ADDR 0x2000000
|
||||
#define CONFIG_KM_KERNEL_ADDR 0x1000000 /* max kernel size 15.5Mbytes */
|
||||
@ -383,6 +381,7 @@ int get_scl(void);
|
||||
*/
|
||||
#define CONFIG_CMD_PCI
|
||||
#define CONFIG_CMD_NET
|
||||
#define CONFIG_CMD_ERRATA
|
||||
|
||||
/* we don't need flash support */
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
|
@ -10,6 +10,9 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
#ifdef CONFIG_36BIT
|
||||
#define CONFIG_PHYS_64BIT
|
||||
#endif
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#undef CONFIG_SYS_TEXT_BASE
|
||||
#define CONFIG_SYS_TEXT_BASE 0xf01000 /* 15 MB */
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
|
||||
#define CONFIG_SYS_MPC85XX_NO_RESETVEC
|
||||
|
||||
|
@ -10,6 +10,8 @@
|
||||
#ifndef __T4QDS_H
|
||||
#define __T4QDS_H
|
||||
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
#define CONFIG_CMD_REGINFO
|
||||
|
||||
/* High Level Configuration Options */
|
||||
|
Loading…
Reference in New Issue
Block a user