Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
This commit is contained in:
@@ -299,6 +299,8 @@ static void mpc83xx_pcie_init_bus(int bus, struct pci_region *reg)
|
||||
|
||||
printf("PCIE%d: ", bus);
|
||||
|
||||
#define PCI_LTSSM 0x404 /* PCIe Link Training, Status State Machine */
|
||||
#define PCI_LTSSM_L0 0x16 /* L0 state */
|
||||
reg16 = in_le16(hose_cfg_base + PCI_LTSSM);
|
||||
if (reg16 >= PCI_LTSSM_L0)
|
||||
printf("link\n");
|
||||
|
||||
@@ -46,6 +46,7 @@ COBJS-$(CONFIG_MPC8568) += ddr-gen2.o
|
||||
COBJS-$(CONFIG_MPC8544) += ddr-gen2.o
|
||||
|
||||
# supports ddr1/2/3
|
||||
COBJS-$(CONFIG_PPC_C29X) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_MPC8572) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_MPC8536) += ddr-gen3.o
|
||||
COBJS-$(CONFIG_MPC8569) += ddr-gen3.o
|
||||
@@ -100,6 +101,7 @@ COBJS-$(CONFIG_SYS_FSL_QORIQ_CHASSIS1) += fsl_corenet_serdes.o
|
||||
COBJS-$(CONFIG_SYS_FSL_QORIQ_CHASSIS2) += fsl_corenet2_serdes.o
|
||||
|
||||
# SoC specific SERDES support
|
||||
COBJS-$(CONFIG_PPC_C29X) += c29x_serdes.o
|
||||
COBJS-$(CONFIG_MPC8536) += mpc8536_serdes.o
|
||||
COBJS-$(CONFIG_MPC8544) += mpc8544_serdes.o
|
||||
COBJS-$(CONFIG_MPC8548) += mpc8548_serdes.o
|
||||
|
||||
@@ -41,8 +41,8 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
|
||||
|
||||
#ifdef CONFIG_SYS_SRIO
|
||||
struct srio_liodn_id_table srio_liodn_tbl[] = {
|
||||
SET_SRIO_LIODN_1(1, 307),
|
||||
SET_SRIO_LIODN_1(2, 387),
|
||||
SET_SRIO_LIODN_BASE(1, 307),
|
||||
SET_SRIO_LIODN_BASE(2, 387),
|
||||
};
|
||||
int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
|
||||
#endif
|
||||
@@ -112,10 +112,10 @@ int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl);
|
||||
#ifdef CONFIG_SYS_DPAA_RMAN
|
||||
struct liodn_id_table rman_liodn_tbl[] = {
|
||||
/* Set RMan block 0-3 liodn offset */
|
||||
SET_RMAN_LIODN(0, 678),
|
||||
SET_RMAN_LIODN(1, 679),
|
||||
SET_RMAN_LIODN(2, 680),
|
||||
SET_RMAN_LIODN(3, 681),
|
||||
SET_RMAN_LIODN(0, 6),
|
||||
SET_RMAN_LIODN(1, 7),
|
||||
SET_RMAN_LIODN(2, 8),
|
||||
SET_RMAN_LIODN(3, 9),
|
||||
};
|
||||
int rman_liodn_tbl_sz = ARRAY_SIZE(rman_liodn_tbl);
|
||||
#endif
|
||||
|
||||
62
arch/powerpc/cpu/mpc85xx/c29x_serdes.c
Normal file
62
arch/powerpc/cpu/mpc85xx/c29x_serdes.c
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2013 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/immap_85xx.h>
|
||||
#include <asm/fsl_serdes.h>
|
||||
|
||||
#define SRDS1_MAX_LANES 4
|
||||
|
||||
static u32 serdes1_prtcl_map;
|
||||
|
||||
struct serdes_config {
|
||||
u32 protocol;
|
||||
u8 lanes[SRDS1_MAX_LANES];
|
||||
};
|
||||
|
||||
static const struct serdes_config serdes1_cfg_tbl[] = {
|
||||
/* SerDes 1 */
|
||||
{1, {PCIE1, PCIE1, PCIE1, PCIE1} },
|
||||
{2, {PCIE1, PCIE1, PCIE1, PCIE1} },
|
||||
{3, {PCIE1, PCIE1, NONE, NONE} },
|
||||
{4, {PCIE1, PCIE1, NONE, NONE} },
|
||||
{5, {PCIE1, NONE, NONE, NONE} },
|
||||
{6, {PCIE1, NONE, NONE, NONE} },
|
||||
{}
|
||||
};
|
||||
|
||||
int is_serdes_configured(enum srds_prtcl device)
|
||||
{
|
||||
return (1 << device) & serdes1_prtcl_map;
|
||||
}
|
||||
|
||||
void fsl_serdes_init(void)
|
||||
{
|
||||
ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
|
||||
u32 pordevsr = in_be32(&gur->pordevsr);
|
||||
u32 srds_cfg = (pordevsr & MPC85xx_PORDEVSR_IO_SEL) >>
|
||||
MPC85xx_PORDEVSR_IO_SEL_SHIFT;
|
||||
const struct serdes_config *ptr;
|
||||
int lane;
|
||||
|
||||
debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
|
||||
|
||||
if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
|
||||
printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
|
||||
return;
|
||||
}
|
||||
|
||||
ptr = &serdes1_cfg_tbl[srds_cfg];
|
||||
if (!ptr->protocol)
|
||||
return;
|
||||
|
||||
for (lane = 0; lane < SRDS1_MAX_LANES; lane++) {
|
||||
enum srds_prtcl lane_prtcl = ptr->lanes[lane];
|
||||
serdes1_prtcl_map |= (1 << lane_prtcl);
|
||||
}
|
||||
}
|
||||
@@ -244,6 +244,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A006593
|
||||
puts("Work-around for Erratum A006593 enabled\n");
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
|
||||
puts("Work-around for Erratum A-005812 enabled\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -44,10 +44,10 @@ int checkcpu (void)
|
||||
uint major, minor;
|
||||
struct cpu_type *cpu;
|
||||
char buf1[32], buf2[32];
|
||||
#if (defined(CONFIG_DDR_CLK_FREQ) || \
|
||||
defined(CONFIG_FSL_CORENET)) && !defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2)
|
||||
volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
#endif /* CONFIG_FSL_CORENET */
|
||||
#if defined(CONFIG_DDR_CLK_FREQ) || defined(CONFIG_FSL_CORENET)
|
||||
ccsr_gur_t __iomem *gur =
|
||||
(void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Cornet platforms use ddr sync bit in RCW to indicate sync vs async
|
||||
@@ -211,6 +211,21 @@ int checkcpu (void)
|
||||
|
||||
puts("L1: D-cache 32 kB enabled\n I-cache 32 kB enabled\n");
|
||||
|
||||
#ifdef CONFIG_FSL_CORENET
|
||||
/* Display the RCW, so that no one gets confused as to what RCW
|
||||
* we're actually using for this boot.
|
||||
*/
|
||||
puts("Reset Configuration Word (RCW):");
|
||||
for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
|
||||
u32 rcw = in_be32(&gur->rcwsr[i]);
|
||||
|
||||
if ((i % 4) == 0)
|
||||
printf("\n %08x:", i * 4);
|
||||
printf(" %08x", rcw);
|
||||
}
|
||||
puts("\n");
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -399,6 +399,14 @@ int cpu_init_r(void)
|
||||
sync();
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
|
||||
/*
|
||||
* A-005812 workaround sets bit 32 of SPR 976 for SoCs running
|
||||
* in write shadow mode. Checking DCWS before setting SPR 976.
|
||||
*/
|
||||
if (mfspr(L1CSR2) & L1CSR2_DCWS)
|
||||
mtspr(SPRN_HDBCR0, (mfspr(SPRN_HDBCR0) | 0x80000000));
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PPC_SPINTABLE_COMPATIBLE) && defined(CONFIG_MP)
|
||||
spin = getenv("spin_table_compat");
|
||||
@@ -532,8 +540,10 @@ skip_l2:
|
||||
|
||||
enable_cpc();
|
||||
|
||||
#ifndef CONFIG_SYS_FSL_NO_SERDES
|
||||
/* needs to be in ram since code uses global static vars */
|
||||
fsl_serdes_init();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A005871
|
||||
if (IS_SVR_REV(svr, 1, 0)) {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#endif
|
||||
|
||||
void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num)
|
||||
unsigned int ctrl_num, int step)
|
||||
{
|
||||
unsigned int i;
|
||||
volatile ccsr_ddr_t *ddr = (void *)CONFIG_SYS_MPC8xxx_DDR_ADDR;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#endif
|
||||
|
||||
void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num)
|
||||
unsigned int ctrl_num, int step)
|
||||
{
|
||||
unsigned int i;
|
||||
ccsr_ddr_t *ddr = (void *)CONFIG_SYS_MPC8xxx_DDR_ADDR;
|
||||
|
||||
@@ -15,8 +15,18 @@
|
||||
#error Invalid setting for CONFIG_CHIP_SELECTS_PER_CTRL
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* regs has the to-be-set values for DDR controller registers
|
||||
* ctrl_num is the DDR controller number
|
||||
* step: 0 goes through the initialization in one pass
|
||||
* 1 sets registers and returns before enabling controller
|
||||
* 2 resumes from step 1 and continues to initialize
|
||||
* Dividing the initialization to two steps to deassert DDR reset signal
|
||||
* to comply with JEDEC specs for RDIMMs.
|
||||
*/
|
||||
void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num)
|
||||
unsigned int ctrl_num, int step)
|
||||
{
|
||||
unsigned int i, bus_width;
|
||||
volatile ccsr_ddr_t *ddr;
|
||||
@@ -54,6 +64,9 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
return;
|
||||
}
|
||||
|
||||
if (step == 2)
|
||||
goto step2;
|
||||
|
||||
if (regs->ddr_eor)
|
||||
out_be32(&ddr->eor, regs->ddr_eor);
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134
|
||||
@@ -123,10 +136,17 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
out_be32(&ddr->timing_cfg_5, regs->timing_cfg_5);
|
||||
out_be32(&ddr->ddr_zq_cntl, regs->ddr_zq_cntl);
|
||||
out_be32(&ddr->ddr_wrlvl_cntl, regs->ddr_wrlvl_cntl);
|
||||
#ifndef CONFIG_SYS_FSL_DDR_EMU
|
||||
/*
|
||||
* Skip these two registers if running on emulator
|
||||
* because emulator doesn't have skew between bytes.
|
||||
*/
|
||||
|
||||
if (regs->ddr_wrlvl_cntl_2)
|
||||
out_be32(&ddr->ddr_wrlvl_cntl_2, regs->ddr_wrlvl_cntl_2);
|
||||
if (regs->ddr_wrlvl_cntl_3)
|
||||
out_be32(&ddr->ddr_wrlvl_cntl_3, regs->ddr_wrlvl_cntl_3);
|
||||
#endif
|
||||
|
||||
out_be32(&ddr->ddr_sr_cntr, regs->ddr_sr_cntr);
|
||||
out_be32(&ddr->ddr_sdram_rcw_1, regs->ddr_sdram_rcw_1);
|
||||
@@ -150,6 +170,20 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
out_be32(&ddr->debug[21], 0x24000000);
|
||||
#endif /* CONFIG_SYS_FSL_ERRATUM_DDR_A003474 */
|
||||
|
||||
/*
|
||||
* For RDIMMs, JEDEC spec requires clocks to be stable before reset is
|
||||
* deasserted. Clocks start when any chip select is enabled and clock
|
||||
* control register is set. Because all DDR components are connected to
|
||||
* one reset signal, this needs to be done in two steps. Step 1 is to
|
||||
* get the clocks started. Step 2 resumes after reset signal is
|
||||
* deasserted.
|
||||
*/
|
||||
if (step == 1) {
|
||||
udelay(200);
|
||||
return;
|
||||
}
|
||||
|
||||
step2:
|
||||
/* Set, but do not enable the memory */
|
||||
temp_sdram_cfg = regs->ddr_sdram_cfg;
|
||||
temp_sdram_cfg &= ~(SDRAM_CFG_MEM_EN);
|
||||
|
||||
@@ -604,8 +604,12 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
||||
|
||||
fdt_add_enet_stashing(blob);
|
||||
|
||||
#ifndef CONFIG_FSL_TBCLK_EXTRA_DIV
|
||||
#define CONFIG_FSL_TBCLK_EXTRA_DIV 1
|
||||
#endif
|
||||
do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
|
||||
"timebase-frequency", get_tbclk(), 1);
|
||||
"timebase-frequency", get_tbclk() / CONFIG_FSL_TBCLK_EXTRA_DIV,
|
||||
1);
|
||||
do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
|
||||
"bus-frequency", bd->bi_busfreq, 1);
|
||||
get_sys_info(&sysinfo);
|
||||
|
||||
@@ -9,5 +9,4 @@
|
||||
|
||||
int is_serdes_prtcl_valid(int serdes, u32 prtcl);
|
||||
int serdes_lane_enabled(int lane);
|
||||
enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
|
||||
#endif /* __FSL_CORENET2_SERDES_H */
|
||||
|
||||
@@ -226,6 +226,21 @@ __secondary_start_page:
|
||||
2:
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
|
||||
/*
|
||||
* A-005812 workaround sets bit 32 of SPR 976 for SoCs running in
|
||||
* write shadow mode. This code should run after other code setting
|
||||
* DCWS.
|
||||
*/
|
||||
mfspr r3,L1CSR2
|
||||
andis. r3,r3,(L1CSR2_DCWS)@h
|
||||
beq 1f
|
||||
mfspr r3, SPRN_HDBCR0
|
||||
oris r3, r3, 0x8000
|
||||
mtspr SPRN_HDBCR0, r3
|
||||
1:
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BACKSIDE_L2_CACHE
|
||||
/* skip L2 setup on P2040/P2040E as they have no L2 */
|
||||
mfspr r3,SPRN_SVR
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
#define MINIMAL_SPL
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_SPL) && !defined(CONFIG_SYS_RAMBOOT) && !defined(CONFIG_SECURE_BOOT)
|
||||
#if !defined(CONFIG_SPL) && !defined(CONFIG_SYS_RAMBOOT) && \
|
||||
!defined(CONFIG_SECURE_BOOT) && !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
|
||||
#define NOR_BOOT
|
||||
#endif
|
||||
|
||||
|
||||
@@ -65,8 +65,8 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
|
||||
#endif
|
||||
|
||||
struct srio_liodn_id_table srio_liodn_tbl[] = {
|
||||
SET_SRIO_LIODN_1(1, 307),
|
||||
SET_SRIO_LIODN_1(2, 387),
|
||||
SET_SRIO_LIODN_BASE(1, 307),
|
||||
SET_SRIO_LIODN_BASE(2, 387),
|
||||
};
|
||||
int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
|
||||
|
||||
@@ -159,10 +159,10 @@ int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl);
|
||||
#ifdef CONFIG_SYS_DPAA_RMAN
|
||||
struct liodn_id_table rman_liodn_tbl[] = {
|
||||
/* Set RMan block 0-3 liodn offset */
|
||||
SET_RMAN_LIODN(0, 678),
|
||||
SET_RMAN_LIODN(1, 679),
|
||||
SET_RMAN_LIODN(2, 680),
|
||||
SET_RMAN_LIODN(3, 681),
|
||||
SET_RMAN_LIODN(0, 6),
|
||||
SET_RMAN_LIODN(1, 7),
|
||||
SET_RMAN_LIODN(2, 8),
|
||||
SET_RMAN_LIODN(3, 9),
|
||||
};
|
||||
int rman_liodn_tbl_sz = ARRAY_SIZE(rman_liodn_tbl);
|
||||
#endif
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#endif
|
||||
|
||||
void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num)
|
||||
unsigned int ctrl_num, int step)
|
||||
{
|
||||
unsigned int i;
|
||||
volatile ccsr_ddr_t *ddr;
|
||||
|
||||
@@ -79,6 +79,9 @@ static struct cpu_type cpu_type_list[] = {
|
||||
CPU_TYPE_ENTRY(BSC9131, 9131, 1),
|
||||
CPU_TYPE_ENTRY(BSC9132, 9132, 2),
|
||||
CPU_TYPE_ENTRY(BSC9232, 9232, 2),
|
||||
CPU_TYPE_ENTRY(C291, C291, 1),
|
||||
CPU_TYPE_ENTRY(C292, C292, 1),
|
||||
CPU_TYPE_ENTRY(C293, C293, 1),
|
||||
#elif defined(CONFIG_MPC86xx)
|
||||
CPU_TYPE_ENTRY(8610, 8610, 1),
|
||||
CPU_TYPE_ENTRY(8641, 8641, 2),
|
||||
|
||||
@@ -364,7 +364,7 @@ static void set_timing_cfg_3(fsl_ddr_cfg_regs_t *ddr,
|
||||
|
||||
ddr->timing_cfg_3 = (0
|
||||
| ((ext_pretoact & 0x1) << 28)
|
||||
| ((ext_acttopre & 0x2) << 24)
|
||||
| ((ext_acttopre & 0x3) << 24)
|
||||
| ((ext_acttorw & 0x1) << 22)
|
||||
| ((ext_refrec & 0x1F) << 16)
|
||||
| ((ext_caslat & 0x3) << 12)
|
||||
@@ -681,6 +681,7 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
|
||||
unsigned int odt_cfg = 0; /* ODT configuration */
|
||||
unsigned int num_pr; /* Number of posted refreshes */
|
||||
unsigned int slow = 0; /* DDR will be run less than 1250 */
|
||||
unsigned int x4_en = 0; /* x4 DRAM enable */
|
||||
unsigned int obc_cfg; /* On-The-Fly Burst Chop Cfg */
|
||||
unsigned int ap_en; /* Address Parity Enable */
|
||||
unsigned int d_init; /* DRAM data initialization */
|
||||
@@ -725,6 +726,8 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
|
||||
ap_en = 0;
|
||||
}
|
||||
|
||||
x4_en = popts->x4_en ? 1 : 0;
|
||||
|
||||
#if defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
|
||||
/* Use the DDR controller to auto initialize memory. */
|
||||
d_init = popts->ECC_init_using_memctl;
|
||||
@@ -747,6 +750,7 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
|
||||
| ((odt_cfg & 0x3) << 21)
|
||||
| ((num_pr & 0xf) << 12)
|
||||
| ((slow & 1) << 11)
|
||||
| (x4_en << 10)
|
||||
| (qd_en << 9)
|
||||
| (unq_mrs_en << 8)
|
||||
| ((obc_cfg & 0x1) << 6)
|
||||
@@ -1585,8 +1589,8 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
|
||||
| ((ea & 0xFFF) << 0) /* ending address MSB */
|
||||
);
|
||||
} else {
|
||||
debug("FSLDDR: setting bnds to 0 for inactive CS\n");
|
||||
ddr->cs[i].bnds = 0;
|
||||
/* setting bnds to 0xffffffff for inactive CS */
|
||||
ddr->cs[i].bnds = 0xffffffff;
|
||||
}
|
||||
|
||||
debug("FSLDDR: cs[%d]_bnds = 0x%08x\n", i, ddr->cs[i].bnds);
|
||||
@@ -1638,5 +1642,10 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
|
||||
|
||||
set_ddr_sdram_rcw(ddr, popts, common_dimm);
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_DDR_EMU
|
||||
/* disble DDR training for emulator */
|
||||
ddr->debug[2] = 0x00000400;
|
||||
ddr->debug[4] = 0xff800000;
|
||||
#endif
|
||||
return check_fsl_memctl_config_regs(ddr);
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ unsigned int check_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr);
|
||||
|
||||
/* processor specific function */
|
||||
void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num);
|
||||
unsigned int ctrl_num, int step);
|
||||
|
||||
/* board specific function */
|
||||
int fsl_ddr_get_dimm_params(dimm_params_t *pdimm,
|
||||
|
||||
@@ -129,6 +129,7 @@ ddr_compute_dimm_parameters(const ddr3_spd_eeprom_t *spd,
|
||||
pdimm->ec_sdram_width = 0;
|
||||
pdimm->data_width = pdimm->primary_sdram_width
|
||||
+ pdimm->ec_sdram_width;
|
||||
pdimm->device_width = 1 << ((spd->organization & 0x7) + 2);
|
||||
|
||||
/* These are the types defined by the JEDEC DDR3 SPD spec */
|
||||
pdimm->mirrored_dimm = 0;
|
||||
|
||||
@@ -205,6 +205,7 @@ static void fsl_ddr_dimm_parameters_edit(fsl_ddr_info_t *pinfo,
|
||||
DIMM_PARM(primary_sdram_width),
|
||||
DIMM_PARM(ec_sdram_width),
|
||||
DIMM_PARM(registered_dimm),
|
||||
DIMM_PARM(device_width),
|
||||
|
||||
DIMM_PARM(n_row_addr),
|
||||
DIMM_PARM(n_col_addr),
|
||||
@@ -263,6 +264,7 @@ static void print_dimm_parameters(const dimm_params_t *pdimm)
|
||||
DIMM_PARM(primary_sdram_width),
|
||||
DIMM_PARM(ec_sdram_width),
|
||||
DIMM_PARM(registered_dimm),
|
||||
DIMM_PARM(device_width),
|
||||
|
||||
DIMM_PARM(n_row_addr),
|
||||
DIMM_PARM(n_col_addr),
|
||||
@@ -443,6 +445,7 @@ static void fsl_ddr_options_edit(fsl_ddr_info_t *pinfo,
|
||||
CTRL_OPTIONS(twoT_en),
|
||||
CTRL_OPTIONS(threeT_en),
|
||||
CTRL_OPTIONS(ap_en),
|
||||
CTRL_OPTIONS(x4_en),
|
||||
CTRL_OPTIONS(bstopre),
|
||||
CTRL_OPTIONS(wrlvl_override),
|
||||
CTRL_OPTIONS(wrlvl_sample),
|
||||
@@ -687,6 +690,7 @@ static void print_memctl_options(const memctl_options_t *popts)
|
||||
CTRL_OPTIONS(threeT_en),
|
||||
CTRL_OPTIONS(registered_dimm_en),
|
||||
CTRL_OPTIONS(ap_en),
|
||||
CTRL_OPTIONS(x4_en),
|
||||
CTRL_OPTIONS(bstopre),
|
||||
CTRL_OPTIONS(wrlvl_override),
|
||||
CTRL_OPTIONS(wrlvl_sample),
|
||||
|
||||
@@ -25,10 +25,6 @@ void fsl_ddr_set_lawbar(
|
||||
unsigned int ctrl_num);
|
||||
void fsl_ddr_set_intl3r(const unsigned int granule_size);
|
||||
|
||||
/* processor specific function */
|
||||
extern void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num);
|
||||
|
||||
#if defined(SPD_EEPROM_ADDRESS) || \
|
||||
defined(SPD_EEPROM_ADDRESS1) || defined(SPD_EEPROM_ADDRESS2) || \
|
||||
defined(SPD_EEPROM_ADDRESS3) || defined(SPD_EEPROM_ADDRESS4)
|
||||
@@ -365,9 +361,11 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
|
||||
{
|
||||
unsigned int i, j;
|
||||
unsigned long long total_mem = 0;
|
||||
int assert_reset;
|
||||
|
||||
fsl_ddr_cfg_regs_t *ddr_reg = pinfo->fsl_ddr_config_reg;
|
||||
common_timing_params_t *timing_params = pinfo->common_timing_params;
|
||||
assert_reset = board_need_mem_reset();
|
||||
|
||||
/* data bus width capacity adjust shift amount */
|
||||
unsigned int dbw_capacity_adjust[CONFIG_NUM_DDR_CONTROLLERS];
|
||||
@@ -462,7 +460,20 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
|
||||
timing_params[i].all_DIMMs_registered,
|
||||
&pinfo->memctl_opts[i],
|
||||
pinfo->dimm_params[i], i);
|
||||
/*
|
||||
* For RDIMMs, JEDEC spec requires clocks to be stable
|
||||
* before reset signal is deasserted. For the boards
|
||||
* using fixed parameters, this function should be
|
||||
* be called from board init file.
|
||||
*/
|
||||
if (timing_params[i].all_DIMMs_registered)
|
||||
assert_reset = 1;
|
||||
}
|
||||
if (assert_reset) {
|
||||
debug("Asserting mem reset\n");
|
||||
board_assert_mem_reset();
|
||||
}
|
||||
|
||||
case STEP_ASSIGN_ADDRESSES:
|
||||
/* STEP 5: Assign addresses to chip selects */
|
||||
check_interleaving_options(pinfo);
|
||||
@@ -504,7 +515,13 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
|
||||
fsl_ddr_cfg_regs_t *reg = &ddr_reg[i];
|
||||
if (reg->cs[j].config & 0x80000000) {
|
||||
unsigned int end;
|
||||
end = reg->cs[j].bnds & 0xFFF;
|
||||
/*
|
||||
* 0xfffffff is a special value we put
|
||||
* for unused bnds
|
||||
*/
|
||||
if (reg->cs[j].bnds == 0xffffffff)
|
||||
continue;
|
||||
end = reg->cs[j].bnds & 0xffff;
|
||||
if (end > max_end) {
|
||||
max_end = end;
|
||||
}
|
||||
@@ -531,6 +548,7 @@ phys_size_t fsl_ddr_sdram(void)
|
||||
unsigned int law_memctl = LAW_TRGT_IF_DDR_1;
|
||||
unsigned long long total_memory;
|
||||
fsl_ddr_info_t info;
|
||||
int deassert_reset;
|
||||
|
||||
/* Reset info structure. */
|
||||
memset(&info, 0, sizeof(fsl_ddr_info_t));
|
||||
@@ -559,7 +577,21 @@ phys_size_t fsl_ddr_sdram(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* Program configuration registers. */
|
||||
/*
|
||||
* Program configuration registers.
|
||||
* JEDEC specs requires clocks to be stable before deasserting reset
|
||||
* for RDIMMs. Clocks start after chip select is enabled and clock
|
||||
* control register is set. During step 1, all controllers have their
|
||||
* registers set but not enabled. Step 2 proceeds after deasserting
|
||||
* reset through board FPGA or GPIO.
|
||||
* For non-registered DIMMs, initialization can go through but it is
|
||||
* also OK to follow the same flow.
|
||||
*/
|
||||
deassert_reset = board_need_mem_reset();
|
||||
for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
|
||||
if (info.common_timing_params[i].all_DIMMs_registered)
|
||||
deassert_reset = 1;
|
||||
}
|
||||
for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
|
||||
debug("Programming controller %u\n", i);
|
||||
if (info.common_timing_params[i].ndimms_present == 0) {
|
||||
@@ -567,8 +599,22 @@ phys_size_t fsl_ddr_sdram(void)
|
||||
"skipping programming\n", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
fsl_ddr_set_memctl_regs(&(info.fsl_ddr_config_reg[i]), i);
|
||||
/*
|
||||
* The following call with step = 1 returns before enabling
|
||||
* the controller. It has to finish with step = 2 later.
|
||||
*/
|
||||
fsl_ddr_set_memctl_regs(&(info.fsl_ddr_config_reg[i]), i,
|
||||
deassert_reset ? 1 : 0);
|
||||
}
|
||||
if (deassert_reset) {
|
||||
/* Use board FPGA or GPIO to deassert reset signal */
|
||||
debug("Deasserting mem reset\n");
|
||||
board_deassert_mem_reset();
|
||||
for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
|
||||
/* Call with step = 2 to continue initialization */
|
||||
fsl_ddr_set_memctl_regs(&(info.fsl_ddr_config_reg[i]),
|
||||
i, 2);
|
||||
}
|
||||
}
|
||||
|
||||
/* program LAWs */
|
||||
|
||||
@@ -700,6 +700,8 @@ unsigned int populate_memctl_options(int all_DIMMs_registered,
|
||||
}
|
||||
#endif
|
||||
|
||||
popts->x4_en = (pdimm[0].device_width == 4) ? 1 : 0;
|
||||
|
||||
/* Choose burst length. */
|
||||
#if defined(CONFIG_FSL_DDR3)
|
||||
#if defined(CONFIG_E500MC)
|
||||
|
||||
@@ -303,6 +303,7 @@
|
||||
|
||||
#elif defined(CONFIG_PPC_P2041) /* also supports P2040 */
|
||||
#define CONFIG_SYS_FSL_QORIQ_CHASSIS1
|
||||
#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 2
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 32
|
||||
@@ -336,6 +337,7 @@
|
||||
|
||||
#elif defined(CONFIG_PPC_P3041)
|
||||
#define CONFIG_SYS_FSL_QORIQ_CHASSIS1
|
||||
#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 2
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 32
|
||||
@@ -366,9 +368,11 @@
|
||||
#define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
|
||||
#define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A004849
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A005812
|
||||
|
||||
#elif defined(CONFIG_PPC_P4080) /* also supports P4040 */
|
||||
#define CONFIG_SYS_FSL_QORIQ_CHASSIS1
|
||||
#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
|
||||
#define CONFIG_MAX_CPUS 8
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 4
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 32
|
||||
@@ -410,10 +414,12 @@
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A004849
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A004580
|
||||
#define CONFIG_SYS_P4080_ERRATUM_PCIE_A003
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A005812
|
||||
|
||||
#elif defined(CONFIG_PPC_P5020) /* also supports P5010 */
|
||||
#define CONFIG_SYS_PPC64 /* 64-bit core */
|
||||
#define CONFIG_SYS_FSL_QORIQ_CHASSIS1
|
||||
#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
|
||||
#define CONFIG_MAX_CPUS 2
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 2
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 32
|
||||
@@ -444,6 +450,7 @@
|
||||
#elif defined(CONFIG_PPC_P5040)
|
||||
#define CONFIG_SYS_PPC64
|
||||
#define CONFIG_SYS_FSL_QORIQ_CHASSIS1
|
||||
#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 3
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 32
|
||||
@@ -469,6 +476,7 @@
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A004510
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
|
||||
#define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A005812
|
||||
|
||||
#elif defined(CONFIG_BSC9131)
|
||||
#define CONFIG_MAX_CPUS 1
|
||||
@@ -492,6 +500,10 @@
|
||||
#define CONFIG_TSECV2
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 4
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 2
|
||||
#define CONFIG_SYS_FSL_DSP_DDR_ADDR 0x40000000
|
||||
#define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000
|
||||
#define CONFIG_SYS_FSL_DSP_M3_RAM_ADDR 0xc0000000
|
||||
#define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT 0xff600000
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 3
|
||||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
|
||||
#define CONFIG_NAND_FSL_IFC
|
||||
@@ -536,6 +548,7 @@
|
||||
#define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
|
||||
#define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
|
||||
#define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
|
||||
#define CONFIG_SYS_FSL_SRIO_LIODN
|
||||
#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
|
||||
#define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
|
||||
#define CONFIG_SYS_FSL_ERRATUM_A004468
|
||||
@@ -576,6 +589,7 @@
|
||||
#define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2
|
||||
#define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
|
||||
#define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
|
||||
#define CONFIG_SYS_FSL_SRIO_LIODN
|
||||
#else
|
||||
#define CONFIG_MAX_CPUS 2
|
||||
#define CONFIG_SYS_FSL_CORES_PER_CLUSTER 2
|
||||
@@ -612,6 +626,18 @@
|
||||
#define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
|
||||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000
|
||||
|
||||
#elif defined(CONFIG_PPC_C29X)
|
||||
#define CONFIG_MAX_CPUS 1
|
||||
#define CONFIG_FSL_SDHC_V2_3
|
||||
#define CONFIG_SYS_FSL_NUM_LAWS 12
|
||||
#define CONFIG_SYS_PPC_E500_DEBUG_TLB 3
|
||||
#define CONFIG_TSECV2_1
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 6
|
||||
#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 1
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 8
|
||||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000
|
||||
|
||||
#else
|
||||
#error Processor type not defined for this platform
|
||||
#endif
|
||||
|
||||
@@ -26,6 +26,7 @@ typedef struct dimm_params_s {
|
||||
unsigned int primary_sdram_width;
|
||||
unsigned int ec_sdram_width;
|
||||
unsigned int registered_dimm;
|
||||
unsigned int device_width; /* x4, x8, x16 components */
|
||||
|
||||
/* SDRAM device parameters */
|
||||
unsigned int n_row_addr;
|
||||
|
||||
@@ -277,6 +277,7 @@ typedef struct memctl_options_s {
|
||||
unsigned int mirrored_dimm;
|
||||
unsigned int quad_rank_present;
|
||||
unsigned int ap_en; /* address parity enable for RDIMM */
|
||||
unsigned int x4_en; /* enable x4 devices */
|
||||
|
||||
/* Global Timing Parameters */
|
||||
unsigned int cas_latency_override;
|
||||
@@ -330,9 +331,31 @@ extern phys_size_t fsl_ddr_sdram(void);
|
||||
extern phys_size_t fsl_ddr_sdram_size(void);
|
||||
extern int fsl_use_spd(void);
|
||||
extern void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
|
||||
unsigned int ctrl_num);
|
||||
unsigned int ctrl_num, int step);
|
||||
u32 fsl_ddr_get_intl3r(void);
|
||||
|
||||
static void __board_assert_mem_reset(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void __board_deassert_mem_reset(void)
|
||||
{
|
||||
}
|
||||
|
||||
void board_assert_mem_reset(void)
|
||||
__attribute__((weak, alias("__board_assert_mem_reset")));
|
||||
|
||||
void board_deassert_mem_reset(void)
|
||||
__attribute__((weak, alias("__board_deassert_mem_reset")));
|
||||
|
||||
static int __board_need_mem_reset(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_need_mem_reset(void)
|
||||
__attribute__((weak, alias("__board_need_mem_reset")));
|
||||
|
||||
/*
|
||||
* The 85xx boards have a common prototype for fixed_sdram so put the
|
||||
* declaration here.
|
||||
|
||||
@@ -82,7 +82,7 @@ enum law_trgt_if {
|
||||
#ifndef CONFIG_MPC8641
|
||||
LAW_TRGT_IF_PCIE_1 = 0x02,
|
||||
#endif
|
||||
#if defined(CONFIG_BSC9131)
|
||||
#if defined(CONFIG_BSC9131) || defined(CONFIG_BSC9132)
|
||||
LAW_TRGT_IF_OCN_DSP = 0x03,
|
||||
#else
|
||||
#if !defined(CONFIG_MPC8572) && !defined(CONFIG_P2020)
|
||||
@@ -92,9 +92,14 @@ enum law_trgt_if {
|
||||
LAW_TRGT_IF_LBC = 0x04,
|
||||
LAW_TRGT_IF_CCSR = 0x08,
|
||||
LAW_TRGT_IF_DSP_CCSR = 0x09,
|
||||
LAW_TRGT_IF_PLATFORM_SRAM = 0x0a,
|
||||
LAW_TRGT_IF_DDR_INTRLV = 0x0b,
|
||||
LAW_TRGT_IF_RIO = 0x0c,
|
||||
#if defined(CONFIG_BSC9132)
|
||||
LAW_TRGT_IF_CLASS_DSP = 0x0d,
|
||||
#else
|
||||
LAW_TRGT_IF_RIO_2 = 0x0d,
|
||||
#endif
|
||||
LAW_TRGT_IF_DPAA_SWP_SRAM = 0x0e,
|
||||
LAW_TRGT_IF_DDR = 0x0f,
|
||||
LAW_TRGT_IF_DDR_2 = 0x16, /* 2nd controller */
|
||||
|
||||
@@ -29,6 +29,13 @@ struct srio_liodn_id_table {
|
||||
+ CONFIG_SYS_MPC85xx_GUTS_OFFSET + CONFIG_SYS_CCSRBAR, \
|
||||
}
|
||||
|
||||
#define SET_SRIO_LIODN_BASE(port, id_a) \
|
||||
{ .id = { id_a }, .num_ids = 1, .portid = port, \
|
||||
.reg_offset[0] = offsetof(struct ccsr_rio, liodn) \
|
||||
+ (port - 1) * 0x200 \
|
||||
+ CONFIG_SYS_FSL_SRIO_ADDR, \
|
||||
}
|
||||
|
||||
struct liodn_id_table {
|
||||
const char * compat;
|
||||
u32 id[2];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007,2009-2011 Freescale Semiconductor, Inc.
|
||||
* Copyright 2007,2009-2012 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
@@ -13,6 +13,34 @@
|
||||
|
||||
#define PEX_IP_BLK_REV_2_2 0x02080202
|
||||
#define PEX_IP_BLK_REV_2_3 0x02080203
|
||||
#define PEX_IP_BLK_REV_3_0 0x02080300
|
||||
|
||||
/* Freescale-specific PCI config registers */
|
||||
#define FSL_PCI_PBFR 0x44
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_PCI_VER_3_X
|
||||
/* Currently only the PCIe capability is used, so hardcode the offset.
|
||||
* if more capabilities need to be justified, the capability link method
|
||||
* should be applied here
|
||||
*/
|
||||
#define FSL_PCIE_CAP_ID 0x70
|
||||
#define PCI_DCR 0x78 /* PCIe Device Control Register */
|
||||
#define PCI_DSR 0x7a /* PCIe Device Status Register */
|
||||
#define PCI_LSR 0x82 /* PCIe Link Status Register */
|
||||
#define PCI_LCR 0x80 /* PCIe Link Control Register */
|
||||
#else
|
||||
#define FSL_PCIE_CAP_ID 0x4c
|
||||
#define PCI_DCR 0x54 /* PCIe Device Control Register */
|
||||
#define PCI_DSR 0x56 /* PCIe Device Status Register */
|
||||
#define PCI_LSR 0x5e /* PCIe Link Status Register */
|
||||
#define PCI_LCR 0x5c /* PCIe Link Control Register */
|
||||
#endif
|
||||
|
||||
#define FSL_PCIE_CFG_RDY 0x4b0
|
||||
#define FSL_PROG_IF_AGENT 0x1
|
||||
|
||||
#define PCI_LTSSM 0x404 /* PCIe Link Training, Status State Machine */
|
||||
#define PCI_LTSSM_L0 0x16 /* L0 state */
|
||||
|
||||
int fsl_setup_hose(struct pci_controller *hose, unsigned long addr);
|
||||
int fsl_is_pci_agent(struct pci_controller *hose);
|
||||
@@ -149,7 +177,10 @@ typedef struct ccsr_pci {
|
||||
u32 perr_cap3; /* 0xe34 - PCIE Error Capture Register 3 */
|
||||
char res23[200];
|
||||
u32 pdb_stat; /* 0xf00 - PCIE Debug Status */
|
||||
char res24[252];
|
||||
char res24[16];
|
||||
u32 pex_csr0; /* 0xf14 - PEX Control/Status register 0*/
|
||||
u32 pex_csr1; /* 0xf18 - PEX Control/Status register 1*/
|
||||
char res25[228];
|
||||
} ccsr_fsl_pci_t;
|
||||
#define PCIE_CONFIG_PC 0x00020000
|
||||
#define PCIE_CONFIG_OB_CK 0x00002000
|
||||
|
||||
@@ -90,6 +90,7 @@ void fsl_serdes_init(void);
|
||||
#ifdef CONFIG_FSL_CORENET
|
||||
#ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
|
||||
int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
|
||||
enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
|
||||
#else
|
||||
int serdes_get_first_lane(enum srds_prtcl device);
|
||||
#endif
|
||||
|
||||
@@ -1544,6 +1544,18 @@ struct rio_pw {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_SRIO_LIODN
|
||||
struct rio_liodn {
|
||||
u32 plbr;
|
||||
u8 res0[28];
|
||||
u32 plaor;
|
||||
u8 res1[12];
|
||||
u32 pludr;
|
||||
u32 plldr;
|
||||
u8 res2[456];
|
||||
};
|
||||
#endif
|
||||
|
||||
/* RapidIO Registers */
|
||||
struct ccsr_rio {
|
||||
struct rio_arch arch;
|
||||
@@ -1566,6 +1578,10 @@ struct ccsr_rio {
|
||||
u8 res7[100];
|
||||
struct rio_pw pw;
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_SRIO_LIODN
|
||||
u8 res5[8192];
|
||||
struct rio_liodn liodn[CONFIG_SYS_FSL_SRIO_MAX_PORTS];
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -2131,6 +2147,11 @@ typedef struct ccsr_gur {
|
||||
#ifdef CONFIG_MPC8536
|
||||
#define MPC85xx_PORPLLSR_DDR_RATIO 0x3e000000
|
||||
#define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT 25
|
||||
#elif defined(CONFIG_PPC_C29X)
|
||||
#define MPC85xx_PORPLLSR_DDR_RATIO 0x00003f00
|
||||
#define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT (9 - ((gur->pordevsr2 \
|
||||
& MPC85xx_PORDEVSR2_DDR_SPD_0) \
|
||||
>> MPC85xx_PORDEVSR2_DDR_SPD_0_SHIFT))
|
||||
#else
|
||||
#if defined(CONFIG_BSC9131) || defined(CONFIG_BSC9132)
|
||||
#define MPC85xx_PORPLLSR_DDR_RATIO 0x00003f00
|
||||
@@ -2178,6 +2199,9 @@ typedef struct ccsr_gur {
|
||||
#elif defined(CONFIG_BSC9132)
|
||||
#define MPC85xx_PORDEVSR_IO_SEL 0x00FE0000
|
||||
#define MPC85xx_PORDEVSR_IO_SEL_SHIFT 17
|
||||
#elif defined(CONFIG_PPC_C29X)
|
||||
#define MPC85xx_PORDEVSR_IO_SEL 0x00e00000
|
||||
#define MPC85xx_PORDEVSR_IO_SEL_SHIFT 21
|
||||
#else
|
||||
#define MPC85xx_PORDEVSR_IO_SEL 0x00780000
|
||||
#define MPC85xx_PORDEVSR_IO_SEL_SHIFT 19
|
||||
@@ -2193,6 +2217,10 @@ typedef struct ccsr_gur {
|
||||
#define MPC85xx_PORDEVSR_RIO_DEV_ID 0x00000007
|
||||
u32 pordbgmsr; /* POR debug mode status */
|
||||
u32 pordevsr2; /* POR I/O device status 2 */
|
||||
#if defined(CONFIG_PPC_C29X)
|
||||
#define MPC85xx_PORDEVSR2_DDR_SPD_0 0x00000008
|
||||
#define MPC85xx_PORDEVSR2_DDR_SPD_0_SHIFT 3
|
||||
#endif
|
||||
/* The 8544 RM says this is bit 26, but it's really bit 24 */
|
||||
#define MPC85xx_PORDEVSR2_SEC_CFG 0x00000080
|
||||
u8 res1[8];
|
||||
@@ -2338,6 +2366,11 @@ typedef struct ccsr_gur {
|
||||
#ifdef CONFIG_BSC9132
|
||||
#define MPC85xx_PMUXCR0_SIM_SEL_MASK 0x0003b000
|
||||
#define MPC85xx_PMUXCR0_SIM_SEL 0x00014000
|
||||
#endif
|
||||
#if defined(CONFIG_PPC_C29X)
|
||||
#define MPC85xx_PMUXCR_SPI_MASK 0x00000300
|
||||
#define MPC85xx_PMUXCR_SPI 0x00000000
|
||||
#define MPC85xx_PMUXCR_SPI_GPIO 0x00000100
|
||||
#endif
|
||||
u32 pmuxcr2; /* Alt. function signal multiplex control 2 */
|
||||
#if defined(CONFIG_P1010) || defined(CONFIG_P1014)
|
||||
@@ -2526,7 +2559,9 @@ typedef struct serdes_corenet {
|
||||
#define SRDS_RSTCTL_RSTDONE 0x40000000
|
||||
#define SRDS_RSTCTL_RSTERR 0x20000000
|
||||
#define SRDS_RSTCTL_SWRST 0x10000000
|
||||
#define SRDS_RSTCTL_SDPD 0x00000020
|
||||
#define SRDS_RSTCTL_SDEN 0x00000020
|
||||
#define SRDS_RSTCTL_SDRST_B 0x00000040
|
||||
#define SRDS_RSTCTL_PLLRST_B 0x00000080
|
||||
u32 pllcr0; /* PLL Control Register 0 */
|
||||
#define SRDS_PLLCR0_POFF 0x80000000
|
||||
#define SRDS_PLLCR0_RFCK_SEL_MASK 0x70000000
|
||||
@@ -3008,12 +3043,18 @@ struct ccsr_pman {
|
||||
#define CONFIG_SYS_MPC85xx_USB2_OFFSET 0x23000
|
||||
#ifdef CONFIG_TSECV2
|
||||
#define CONFIG_SYS_TSEC1_OFFSET 0xB0000
|
||||
#elif defined(CONFIG_TSECV2_1)
|
||||
#define CONFIG_SYS_TSEC1_OFFSET 0x10000
|
||||
#else
|
||||
#define CONFIG_SYS_TSEC1_OFFSET 0x24000
|
||||
#endif
|
||||
#define CONFIG_SYS_MDIO1_OFFSET 0x24000
|
||||
#define CONFIG_SYS_MPC85xx_ESDHC_OFFSET 0x2e000
|
||||
#if defined(CONFIG_PPC_C29X)
|
||||
#define CONFIG_SYS_FSL_SEC_OFFSET 0x80000
|
||||
#else
|
||||
#define CONFIG_SYS_FSL_SEC_OFFSET 0x30000
|
||||
#endif
|
||||
#define CONFIG_SYS_MPC85xx_SERDES2_OFFSET 0xE3100
|
||||
#define CONFIG_SYS_MPC85xx_SERDES1_OFFSET 0xE3000
|
||||
#define CONFIG_SYS_SNVS_OFFSET 0xE6000
|
||||
@@ -3031,6 +3072,12 @@ struct ccsr_pman {
|
||||
#define CONFIG_SYS_MPC85xx_GUTS_OFFSET 0xE0000
|
||||
#define CONFIG_SYS_FSL_SRIO_OFFSET 0xC0000
|
||||
|
||||
#if defined(CONFIG_BSC9132)
|
||||
#define CONFIG_SYS_FSL_DSP_CCSR_DDR_OFFSET 0x10000
|
||||
#define CONFIG_SYS_FSL_DSP_CCSR_DDR_ADDR \
|
||||
(CONFIG_SYS_FSL_DSP_CCSRBAR + CONFIG_SYS_FSL_DSP_CCSR_DDR_OFFSET)
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_FSL_CPC_ADDR \
|
||||
(CONFIG_SYS_CCSRBAR + CONFIG_SYS_FSL_CPC_OFFSET)
|
||||
#define CONFIG_SYS_FSL_QMAN_ADDR \
|
||||
|
||||
@@ -1119,6 +1119,9 @@
|
||||
#define SVR_T4240 0x824000
|
||||
#define SVR_T4120 0x824001
|
||||
#define SVR_T4160 0x824100
|
||||
#define SVR_C291 0x850000
|
||||
#define SVR_C292 0x850020
|
||||
#define SVR_C293 0x850030
|
||||
#define SVR_B4860 0X868000
|
||||
#define SVR_G4860 0x868001
|
||||
#define SVR_G4060 0x868003
|
||||
|
||||
Reference in New Issue
Block a user