| /* |
| * 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} |
| }; |