mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-13 08:27:23 +00:00
ae6b03fefc
The P3060QDS is a Freescale reference board for the six-core P3060 SOC. P3060QDS Board Overview: Memory subsystem: - 2G Bytes unbuffered DDR3 SDRAM SO-DIMM(64bit bus) - 128M Bytes NOR flash single-chip memory - 16M Bytes SPI flash - 8K Bytes AT24C64 I2C EEPROM for RCW Ethernet: - Eight Ethernet controllers (4x1G + 4x1G/2.5G) - Three VSC8641 PHYs on board (2xRGMII + 1xMII) - Suport multiple Vitesse VSC8234 SGMII Cards in Slot1/2/3 PCIe: Two PCI Express 2.0 controllers/ports USB: Two USB2.0, USB1(TYPE-A) and USB2(TYPE-AB) on board I2C: Four I2C controllers UART: Supports two dUARTs up to 115200 bps for console RapidIO: Two RapidIO, sRIO1 and sRIO2 Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Signed-off-by: York Sun <yorksun@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
214 lines
8.6 KiB
C
214 lines
8.6 KiB
C
/*
|
|
* Copyright 2009-2011 Freescale Semiconductor, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* Version 2 as published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <asm/fsl_ddr_sdram.h>
|
|
|
|
#define CONFIG_SYS_DDR_TIMING_3_1200 0x01030000
|
|
#define CONFIG_SYS_DDR_TIMING_0_1200 0xCC550104
|
|
#define CONFIG_SYS_DDR_TIMING_1_1200 0x868FAA45
|
|
#define CONFIG_SYS_DDR_TIMING_2_1200 0x0FB8A912
|
|
#define CONFIG_SYS_DDR_MODE_1_1200 0x00441A40
|
|
#define CONFIG_SYS_DDR_MODE_2_1200 0x00100000
|
|
#define CONFIG_SYS_DDR_INTERVAL_1200 0x12480100
|
|
#define CONFIG_SYS_DDR_CLK_CTRL_1200 0x02800000
|
|
|
|
#define CONFIG_SYS_DDR_TIMING_3_1000 0x00020000
|
|
#define CONFIG_SYS_DDR_TIMING_0_1000 0xCC440104
|
|
#define CONFIG_SYS_DDR_TIMING_1_1000 0x727DF944
|
|
#define CONFIG_SYS_DDR_TIMING_2_1000 0x0FB088CF
|
|
#define CONFIG_SYS_DDR_MODE_1_1000 0x00441830
|
|
#define CONFIG_SYS_DDR_MODE_2_1000 0x00080000
|
|
#define CONFIG_SYS_DDR_INTERVAL_1000 0x0F3C0100
|
|
#define CONFIG_SYS_DDR_CLK_CTRL_1000 0x02800000
|
|
|
|
#define CONFIG_SYS_DDR_TIMING_3_900 0x00020000
|
|
#define CONFIG_SYS_DDR_TIMING_0_900 0xCC440104
|
|
#define CONFIG_SYS_DDR_TIMING_1_900 0x616ba844
|
|
#define CONFIG_SYS_DDR_TIMING_2_900 0x0fb088ce
|
|
#define CONFIG_SYS_DDR_MODE_1_900 0x00441620
|
|
#define CONFIG_SYS_DDR_MODE_2_900 0x00080000
|
|
#define CONFIG_SYS_DDR_INTERVAL_900 0x0db60100
|
|
#define CONFIG_SYS_DDR_CLK_CTRL_900 0x02800000
|
|
|
|
#define CONFIG_SYS_DDR_TIMING_3_800 0x00020000
|
|
#define CONFIG_SYS_DDR_TIMING_0_800 0xcc330104
|
|
#define CONFIG_SYS_DDR_TIMING_1_800 0x6f6b4744
|
|
#define CONFIG_SYS_DDR_TIMING_2_800 0x0fa888cc
|
|
#define CONFIG_SYS_DDR_MODE_1_800 0x00441420
|
|
#define CONFIG_SYS_DDR_MODE_2_800 0x00000000
|
|
#define CONFIG_SYS_DDR_INTERVAL_800 0x0c300100
|
|
#define CONFIG_SYS_DDR_CLK_CTRL_800 0x02800000
|
|
|
|
#define CONFIG_SYS_DDR_CS0_BNDS 0x000000FF
|
|
#define CONFIG_SYS_DDR_CS1_BNDS 0x00000000
|
|
#define CONFIG_SYS_DDR_CS2_BNDS 0x000000FF
|
|
#define CONFIG_SYS_DDR_CS3_BNDS 0x000000FF
|
|
#define CONFIG_SYS_DDR2_CS0_BNDS 0x000000FF
|
|
#define CONFIG_SYS_DDR2_CS1_BNDS 0x00000000
|
|
#define CONFIG_SYS_DDR2_CS2_BNDS 0x000000FF
|
|
#define CONFIG_SYS_DDR2_CS3_BNDS 0x000000FF
|
|
#define CONFIG_SYS_DDR_CS0_CONFIG 0xA0044202
|
|
#define CONFIG_SYS_DDR_CS0_CONFIG_2 0x00000000
|
|
#define CONFIG_SYS_DDR_CS1_CONFIG 0x80004202
|
|
#define CONFIG_SYS_DDR_CS2_CONFIG 0x00000000
|
|
#define CONFIG_SYS_DDR_CS3_CONFIG 0x00000000
|
|
#define CONFIG_SYS_DDR2_CS0_CONFIG 0x80044202
|
|
#define CONFIG_SYS_DDR2_CS1_CONFIG 0x80004202
|
|
#define CONFIG_SYS_DDR2_CS2_CONFIG 0x00000000
|
|
#define CONFIG_SYS_DDR2_CS3_CONFIG 0x00000000
|
|
#define CONFIG_SYS_DDR_INIT_ADDR 0x00000000
|
|
#define CONFIG_SYS_DDR_INIT_EXT_ADDR 0x00000000
|
|
#define CONFIG_SYS_DDR_CS1_CONFIG 0x80004202
|
|
#define CONFIG_SYS_DDR_DATA_INIT 0xdeadbeef
|
|
#define CONFIG_SYS_DDR_TIMING_4 0x00000001
|
|
#define CONFIG_SYS_DDR_TIMING_5 0x02401400
|
|
#define CONFIG_SYS_DDR_MODE_CONTROL 0x00000000
|
|
#define CONFIG_SYS_DDR_ZQ_CNTL 0x89080600
|
|
#define CONFIG_SYS_DDR_WRLVL_CNTL 0x8675F607
|
|
#define CONFIG_SYS_DDR_SDRAM_CFG 0xE7044000
|
|
#define CONFIG_SYS_DDR_SDRAM_CFG2 0x24401031
|
|
#define CONFIG_SYS_DDR_RCW_1 0x00000000
|
|
#define CONFIG_SYS_DDR_RCW_2 0x00000000
|
|
#define CONFIG_MEM_INIT_VALUE 0xdeadbeef
|
|
|
|
fsl_ddr_cfg_regs_t ddr_cfg_regs_800 = {
|
|
.cs[0].bnds = CONFIG_SYS_DDR_CS0_BNDS,
|
|
.cs[1].bnds = CONFIG_SYS_DDR_CS1_BNDS,
|
|
.cs[2].bnds = CONFIG_SYS_DDR_CS2_BNDS,
|
|
.cs[3].bnds = CONFIG_SYS_DDR_CS3_BNDS,
|
|
.cs[0].config = CONFIG_SYS_DDR_CS0_CONFIG,
|
|
.cs[0].config_2 = CONFIG_SYS_DDR_CS0_CONFIG_2,
|
|
.cs[1].config = CONFIG_SYS_DDR_CS1_CONFIG,
|
|
.cs[2].config = CONFIG_SYS_DDR_CS2_CONFIG,
|
|
.cs[3].config = CONFIG_SYS_DDR_CS3_CONFIG,
|
|
.timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_800,
|
|
.timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_800,
|
|
.timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_800,
|
|
.timing_cfg_2 = CONFIG_SYS_DDR_TIMING_2_800,
|
|
.ddr_sdram_cfg = CONFIG_SYS_DDR_SDRAM_CFG,
|
|
.ddr_sdram_cfg_2 = CONFIG_SYS_DDR_SDRAM_CFG2,
|
|
.ddr_sdram_mode = CONFIG_SYS_DDR_MODE_1_800,
|
|
.ddr_sdram_mode_2 = CONFIG_SYS_DDR_MODE_2_800,
|
|
.ddr_sdram_md_cntl = CONFIG_SYS_DDR_MODE_CONTROL,
|
|
.ddr_sdram_interval = CONFIG_SYS_DDR_INTERVAL_800,
|
|
.ddr_data_init = CONFIG_MEM_INIT_VALUE,
|
|
.ddr_sdram_clk_cntl = CONFIG_SYS_DDR_CLK_CTRL_800,
|
|
.ddr_init_addr = CONFIG_SYS_DDR_INIT_ADDR,
|
|
.ddr_init_ext_addr = CONFIG_SYS_DDR_INIT_EXT_ADDR,
|
|
.timing_cfg_4 = CONFIG_SYS_DDR_TIMING_4,
|
|
.timing_cfg_5 = CONFIG_SYS_DDR_TIMING_5,
|
|
.ddr_zq_cntl = CONFIG_SYS_DDR_ZQ_CNTL,
|
|
.ddr_wrlvl_cntl = CONFIG_SYS_DDR_WRLVL_CNTL,
|
|
.ddr_sdram_rcw_1 = CONFIG_SYS_DDR_RCW_1,
|
|
.ddr_sdram_rcw_2 = CONFIG_SYS_DDR_RCW_2
|
|
};
|
|
|
|
fsl_ddr_cfg_regs_t ddr_cfg_regs_900 = {
|
|
.cs[0].bnds = CONFIG_SYS_DDR_CS0_BNDS,
|
|
.cs[1].bnds = CONFIG_SYS_DDR_CS1_BNDS,
|
|
.cs[2].bnds = CONFIG_SYS_DDR_CS2_BNDS,
|
|
.cs[3].bnds = CONFIG_SYS_DDR_CS3_BNDS,
|
|
.cs[0].config = CONFIG_SYS_DDR_CS0_CONFIG,
|
|
.cs[0].config_2 = CONFIG_SYS_DDR_CS0_CONFIG_2,
|
|
.cs[1].config = CONFIG_SYS_DDR_CS1_CONFIG,
|
|
.cs[2].config = CONFIG_SYS_DDR_CS2_CONFIG,
|
|
.cs[3].config = CONFIG_SYS_DDR_CS3_CONFIG,
|
|
.timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_900,
|
|
.timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_900,
|
|
.timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_900,
|
|
.timing_cfg_2 = CONFIG_SYS_DDR_TIMING_2_900,
|
|
.ddr_sdram_cfg = CONFIG_SYS_DDR_SDRAM_CFG,
|
|
.ddr_sdram_cfg_2 = CONFIG_SYS_DDR_SDRAM_CFG2,
|
|
.ddr_sdram_mode = CONFIG_SYS_DDR_MODE_1_900,
|
|
.ddr_sdram_mode_2 = CONFIG_SYS_DDR_MODE_2_900,
|
|
.ddr_sdram_md_cntl = CONFIG_SYS_DDR_MODE_CONTROL,
|
|
.ddr_sdram_interval = CONFIG_SYS_DDR_INTERVAL_900,
|
|
.ddr_data_init = CONFIG_MEM_INIT_VALUE,
|
|
.ddr_sdram_clk_cntl = CONFIG_SYS_DDR_CLK_CTRL_900,
|
|
.ddr_init_addr = CONFIG_SYS_DDR_INIT_ADDR,
|
|
.ddr_init_ext_addr = CONFIG_SYS_DDR_INIT_EXT_ADDR,
|
|
.timing_cfg_4 = CONFIG_SYS_DDR_TIMING_4,
|
|
.timing_cfg_5 = CONFIG_SYS_DDR_TIMING_5,
|
|
.ddr_zq_cntl = CONFIG_SYS_DDR_ZQ_CNTL,
|
|
.ddr_wrlvl_cntl = CONFIG_SYS_DDR_WRLVL_CNTL,
|
|
.ddr_sdram_rcw_1 = CONFIG_SYS_DDR_RCW_1,
|
|
.ddr_sdram_rcw_2 = CONFIG_SYS_DDR_RCW_2
|
|
};
|
|
|
|
fsl_ddr_cfg_regs_t ddr_cfg_regs_1000 = {
|
|
.cs[0].bnds = CONFIG_SYS_DDR_CS0_BNDS,
|
|
.cs[1].bnds = CONFIG_SYS_DDR_CS1_BNDS,
|
|
.cs[2].bnds = CONFIG_SYS_DDR_CS2_BNDS,
|
|
.cs[3].bnds = CONFIG_SYS_DDR_CS3_BNDS,
|
|
.cs[0].config = CONFIG_SYS_DDR_CS0_CONFIG,
|
|
.cs[0].config_2 = CONFIG_SYS_DDR_CS0_CONFIG_2,
|
|
.cs[1].config = CONFIG_SYS_DDR_CS1_CONFIG,
|
|
.cs[2].config = CONFIG_SYS_DDR_CS2_CONFIG,
|
|
.cs[3].config = CONFIG_SYS_DDR_CS3_CONFIG,
|
|
.timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_1000,
|
|
.timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_1000,
|
|
.timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_1000,
|
|
.timing_cfg_2 = CONFIG_SYS_DDR_TIMING_2_1000,
|
|
.ddr_sdram_cfg = CONFIG_SYS_DDR_SDRAM_CFG,
|
|
.ddr_sdram_cfg_2 = CONFIG_SYS_DDR_SDRAM_CFG2,
|
|
.ddr_sdram_mode = CONFIG_SYS_DDR_MODE_1_1000,
|
|
.ddr_sdram_mode_2 = CONFIG_SYS_DDR_MODE_2_1000,
|
|
.ddr_sdram_md_cntl = CONFIG_SYS_DDR_MODE_CONTROL,
|
|
.ddr_sdram_interval = CONFIG_SYS_DDR_INTERVAL_1000,
|
|
.ddr_data_init = CONFIG_MEM_INIT_VALUE,
|
|
.ddr_sdram_clk_cntl = CONFIG_SYS_DDR_CLK_CTRL_1000,
|
|
.ddr_init_addr = CONFIG_SYS_DDR_INIT_ADDR,
|
|
.ddr_init_ext_addr = CONFIG_SYS_DDR_INIT_EXT_ADDR,
|
|
.timing_cfg_4 = CONFIG_SYS_DDR_TIMING_4,
|
|
.timing_cfg_5 = CONFIG_SYS_DDR_TIMING_5,
|
|
.ddr_zq_cntl = CONFIG_SYS_DDR_ZQ_CNTL,
|
|
.ddr_wrlvl_cntl = CONFIG_SYS_DDR_WRLVL_CNTL,
|
|
.ddr_sdram_rcw_1 = CONFIG_SYS_DDR_RCW_1,
|
|
.ddr_sdram_rcw_2 = CONFIG_SYS_DDR_RCW_2
|
|
};
|
|
|
|
fsl_ddr_cfg_regs_t ddr_cfg_regs_1200 = {
|
|
.cs[0].bnds = CONFIG_SYS_DDR_CS0_BNDS,
|
|
.cs[1].bnds = CONFIG_SYS_DDR_CS1_BNDS,
|
|
.cs[2].bnds = CONFIG_SYS_DDR_CS2_BNDS,
|
|
.cs[3].bnds = CONFIG_SYS_DDR_CS3_BNDS,
|
|
.cs[0].config = CONFIG_SYS_DDR_CS0_CONFIG,
|
|
.cs[0].config_2 = CONFIG_SYS_DDR_CS0_CONFIG_2,
|
|
.cs[1].config = CONFIG_SYS_DDR_CS1_CONFIG,
|
|
.cs[2].config = CONFIG_SYS_DDR_CS2_CONFIG,
|
|
.cs[3].config = CONFIG_SYS_DDR_CS3_CONFIG,
|
|
.timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_1200,
|
|
.timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_1200,
|
|
.timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_1200,
|
|
.timing_cfg_2 = CONFIG_SYS_DDR_TIMING_2_1200,
|
|
.ddr_sdram_cfg = CONFIG_SYS_DDR_SDRAM_CFG,
|
|
.ddr_sdram_cfg_2 = CONFIG_SYS_DDR_SDRAM_CFG2,
|
|
.ddr_sdram_mode = CONFIG_SYS_DDR_MODE_1_1200,
|
|
.ddr_sdram_mode_2 = CONFIG_SYS_DDR_MODE_2_1200,
|
|
.ddr_sdram_md_cntl = CONFIG_SYS_DDR_MODE_CONTROL,
|
|
.ddr_sdram_interval = CONFIG_SYS_DDR_INTERVAL_1200,
|
|
.ddr_data_init = CONFIG_MEM_INIT_VALUE,
|
|
.ddr_sdram_clk_cntl = CONFIG_SYS_DDR_CLK_CTRL_1200,
|
|
.ddr_init_addr = CONFIG_SYS_DDR_INIT_ADDR,
|
|
.ddr_init_ext_addr = CONFIG_SYS_DDR_INIT_EXT_ADDR,
|
|
.timing_cfg_4 = CONFIG_SYS_DDR_TIMING_4,
|
|
.timing_cfg_5 = CONFIG_SYS_DDR_TIMING_5,
|
|
.ddr_zq_cntl = CONFIG_SYS_DDR_ZQ_CNTL,
|
|
.ddr_wrlvl_cntl = CONFIG_SYS_DDR_WRLVL_CNTL,
|
|
.ddr_sdram_rcw_1 = CONFIG_SYS_DDR_RCW_1,
|
|
.ddr_sdram_rcw_2 = CONFIG_SYS_DDR_RCW_2
|
|
};
|
|
|
|
fixed_ddr_parm_t fixed_ddr_parm_0[] = {
|
|
{750, 850, &ddr_cfg_regs_800},
|
|
{850, 950, &ddr_cfg_regs_900},
|
|
{950, 1050, &ddr_cfg_regs_1000},
|
|
{1050, 1250, &ddr_cfg_regs_1200},
|
|
{0, 0, NULL}
|
|
};
|