15614e71bSYork Sun /* 25614e71bSYork Sun * Copyright 2008-2011 Freescale Semiconductor, Inc. 35614e71bSYork Sun * 45614e71bSYork Sun * This program is free software; you can redistribute it and/or 55614e71bSYork Sun * modify it under the terms of the GNU General Public License 65614e71bSYork Sun * Version 2 as published by the Free Software Foundation. 75614e71bSYork Sun */ 85614e71bSYork Sun 95614e71bSYork Sun #ifndef FSL_DDR_MEMCTL_H 105614e71bSYork Sun #define FSL_DDR_MEMCTL_H 115614e71bSYork Sun 125614e71bSYork Sun /* 135614e71bSYork Sun * Pick a basic DDR Technology. 145614e71bSYork Sun */ 155614e71bSYork Sun #include <ddr_spd.h> 165614e71bSYork Sun 175614e71bSYork Sun #define SDRAM_TYPE_DDR1 2 185614e71bSYork Sun #define SDRAM_TYPE_DDR2 3 195614e71bSYork Sun #define SDRAM_TYPE_LPDDR1 6 205614e71bSYork Sun #define SDRAM_TYPE_DDR3 7 215614e71bSYork Sun 225614e71bSYork Sun #define DDR_BL4 4 /* burst length 4 */ 235614e71bSYork Sun #define DDR_BC4 DDR_BL4 /* burst chop for ddr3 */ 245614e71bSYork Sun #define DDR_OTF 6 /* on-the-fly BC4 and BL8 */ 255614e71bSYork Sun #define DDR_BL8 8 /* burst length 8 */ 265614e71bSYork Sun 275614e71bSYork Sun #define DDR3_RTT_OFF 0 285614e71bSYork Sun #define DDR3_RTT_60_OHM 1 /* RTT_Nom = RZQ/4 */ 295614e71bSYork Sun #define DDR3_RTT_120_OHM 2 /* RTT_Nom = RZQ/2 */ 305614e71bSYork Sun #define DDR3_RTT_40_OHM 3 /* RTT_Nom = RZQ/6 */ 315614e71bSYork Sun #define DDR3_RTT_20_OHM 4 /* RTT_Nom = RZQ/12 */ 325614e71bSYork Sun #define DDR3_RTT_30_OHM 5 /* RTT_Nom = RZQ/8 */ 335614e71bSYork Sun 345614e71bSYork Sun #define DDR2_RTT_OFF 0 355614e71bSYork Sun #define DDR2_RTT_75_OHM 1 365614e71bSYork Sun #define DDR2_RTT_150_OHM 2 375614e71bSYork Sun #define DDR2_RTT_50_OHM 3 385614e71bSYork Sun 395614e71bSYork Sun #if defined(CONFIG_SYS_FSL_DDR1) 405614e71bSYork Sun #define FSL_DDR_MIN_TCKE_PULSE_WIDTH_DDR (1) 415614e71bSYork Sun typedef ddr1_spd_eeprom_t generic_spd_eeprom_t; 425614e71bSYork Sun #ifndef CONFIG_FSL_SDRAM_TYPE 435614e71bSYork Sun #define CONFIG_FSL_SDRAM_TYPE SDRAM_TYPE_DDR1 445614e71bSYork Sun #endif 455614e71bSYork Sun #elif defined(CONFIG_SYS_FSL_DDR2) 465614e71bSYork Sun #define FSL_DDR_MIN_TCKE_PULSE_WIDTH_DDR (3) 475614e71bSYork Sun typedef ddr2_spd_eeprom_t generic_spd_eeprom_t; 485614e71bSYork Sun #ifndef CONFIG_FSL_SDRAM_TYPE 495614e71bSYork Sun #define CONFIG_FSL_SDRAM_TYPE SDRAM_TYPE_DDR2 505614e71bSYork Sun #endif 515614e71bSYork Sun #elif defined(CONFIG_SYS_FSL_DDR3) 525614e71bSYork Sun #define FSL_DDR_MIN_TCKE_PULSE_WIDTH_DDR (3) /* FIXME */ 535614e71bSYork Sun typedef ddr3_spd_eeprom_t generic_spd_eeprom_t; 545614e71bSYork Sun #ifndef CONFIG_FSL_SDRAM_TYPE 555614e71bSYork Sun #define CONFIG_FSL_SDRAM_TYPE SDRAM_TYPE_DDR3 565614e71bSYork Sun #endif 575614e71bSYork Sun #endif /* #if defined(CONFIG_SYS_FSL_DDR1) */ 585614e71bSYork Sun 595614e71bSYork Sun #define FSL_DDR_ODT_NEVER 0x0 605614e71bSYork Sun #define FSL_DDR_ODT_CS 0x1 615614e71bSYork Sun #define FSL_DDR_ODT_ALL_OTHER_CS 0x2 625614e71bSYork Sun #define FSL_DDR_ODT_OTHER_DIMM 0x3 635614e71bSYork Sun #define FSL_DDR_ODT_ALL 0x4 645614e71bSYork Sun #define FSL_DDR_ODT_SAME_DIMM 0x5 655614e71bSYork Sun #define FSL_DDR_ODT_CS_AND_OTHER_DIMM 0x6 665614e71bSYork Sun #define FSL_DDR_ODT_OTHER_CS_ONSAMEDIMM 0x7 675614e71bSYork Sun 685614e71bSYork Sun /* define bank(chip select) interleaving mode */ 695614e71bSYork Sun #define FSL_DDR_CS0_CS1 0x40 705614e71bSYork Sun #define FSL_DDR_CS2_CS3 0x20 715614e71bSYork Sun #define FSL_DDR_CS0_CS1_AND_CS2_CS3 (FSL_DDR_CS0_CS1 | FSL_DDR_CS2_CS3) 725614e71bSYork Sun #define FSL_DDR_CS0_CS1_CS2_CS3 (FSL_DDR_CS0_CS1_AND_CS2_CS3 | 0x04) 735614e71bSYork Sun 745614e71bSYork Sun /* define memory controller interleaving mode */ 755614e71bSYork Sun #define FSL_DDR_CACHE_LINE_INTERLEAVING 0x0 765614e71bSYork Sun #define FSL_DDR_PAGE_INTERLEAVING 0x1 775614e71bSYork Sun #define FSL_DDR_BANK_INTERLEAVING 0x2 785614e71bSYork Sun #define FSL_DDR_SUPERBANK_INTERLEAVING 0x3 79*6b1e1254SYork Sun #define FSL_DDR_256B_INTERLEAVING 0x8 805614e71bSYork Sun #define FSL_DDR_3WAY_1KB_INTERLEAVING 0xA 815614e71bSYork Sun #define FSL_DDR_3WAY_4KB_INTERLEAVING 0xC 825614e71bSYork Sun #define FSL_DDR_3WAY_8KB_INTERLEAVING 0xD 835614e71bSYork Sun /* placeholder for 4-way interleaving */ 845614e71bSYork Sun #define FSL_DDR_4WAY_1KB_INTERLEAVING 0x1A 855614e71bSYork Sun #define FSL_DDR_4WAY_4KB_INTERLEAVING 0x1C 865614e71bSYork Sun #define FSL_DDR_4WAY_8KB_INTERLEAVING 0x1D 875614e71bSYork Sun 885614e71bSYork Sun #define SDRAM_CS_CONFIG_EN 0x80000000 895614e71bSYork Sun 905614e71bSYork Sun /* DDR_SDRAM_CFG - DDR SDRAM Control Configuration 915614e71bSYork Sun */ 925614e71bSYork Sun #define SDRAM_CFG_MEM_EN 0x80000000 935614e71bSYork Sun #define SDRAM_CFG_SREN 0x40000000 945614e71bSYork Sun #define SDRAM_CFG_ECC_EN 0x20000000 955614e71bSYork Sun #define SDRAM_CFG_RD_EN 0x10000000 965614e71bSYork Sun #define SDRAM_CFG_SDRAM_TYPE_DDR1 0x02000000 975614e71bSYork Sun #define SDRAM_CFG_SDRAM_TYPE_DDR2 0x03000000 985614e71bSYork Sun #define SDRAM_CFG_SDRAM_TYPE_MASK 0x07000000 995614e71bSYork Sun #define SDRAM_CFG_SDRAM_TYPE_SHIFT 24 1005614e71bSYork Sun #define SDRAM_CFG_DYN_PWR 0x00200000 1015614e71bSYork Sun #define SDRAM_CFG_DBW_MASK 0x00180000 1025614e71bSYork Sun #define SDRAM_CFG_DBW_SHIFT 19 1035614e71bSYork Sun #define SDRAM_CFG_32_BE 0x00080000 1045614e71bSYork Sun #define SDRAM_CFG_16_BE 0x00100000 1055614e71bSYork Sun #define SDRAM_CFG_8_BE 0x00040000 1065614e71bSYork Sun #define SDRAM_CFG_NCAP 0x00020000 1075614e71bSYork Sun #define SDRAM_CFG_2T_EN 0x00008000 1085614e71bSYork Sun #define SDRAM_CFG_BI 0x00000001 1095614e71bSYork Sun 1105614e71bSYork Sun #define SDRAM_CFG2_D_INIT 0x00000010 1115614e71bSYork Sun #define SDRAM_CFG2_ODT_CFG_MASK 0x00600000 1125614e71bSYork Sun #define SDRAM_CFG2_ODT_NEVER 0 1135614e71bSYork Sun #define SDRAM_CFG2_ODT_ONLY_WRITE 1 1145614e71bSYork Sun #define SDRAM_CFG2_ODT_ONLY_READ 2 1155614e71bSYork Sun #define SDRAM_CFG2_ODT_ALWAYS 3 1165614e71bSYork Sun 1175614e71bSYork Sun #define TIMING_CFG_2_CPO_MASK 0x0F800000 1185614e71bSYork Sun 1195614e71bSYork Sun #if defined(CONFIG_P4080) 1205614e71bSYork Sun #define RD_TO_PRE_MASK 0xf 1215614e71bSYork Sun #define RD_TO_PRE_SHIFT 13 1225614e71bSYork Sun #define WR_DATA_DELAY_MASK 0xf 1235614e71bSYork Sun #define WR_DATA_DELAY_SHIFT 9 1245614e71bSYork Sun #else 1255614e71bSYork Sun #define RD_TO_PRE_MASK 0x7 1265614e71bSYork Sun #define RD_TO_PRE_SHIFT 13 1275614e71bSYork Sun #define WR_DATA_DELAY_MASK 0x7 1285614e71bSYork Sun #define WR_DATA_DELAY_SHIFT 10 1295614e71bSYork Sun #endif 1305614e71bSYork Sun 1315614e71bSYork Sun /* DDR_MD_CNTL */ 1325614e71bSYork Sun #define MD_CNTL_MD_EN 0x80000000 1335614e71bSYork Sun #define MD_CNTL_CS_SEL_CS0 0x00000000 1345614e71bSYork Sun #define MD_CNTL_CS_SEL_CS1 0x10000000 1355614e71bSYork Sun #define MD_CNTL_CS_SEL_CS2 0x20000000 1365614e71bSYork Sun #define MD_CNTL_CS_SEL_CS3 0x30000000 1375614e71bSYork Sun #define MD_CNTL_CS_SEL_CS0_CS1 0x40000000 1385614e71bSYork Sun #define MD_CNTL_CS_SEL_CS2_CS3 0x50000000 1395614e71bSYork Sun #define MD_CNTL_MD_SEL_MR 0x00000000 1405614e71bSYork Sun #define MD_CNTL_MD_SEL_EMR 0x01000000 1415614e71bSYork Sun #define MD_CNTL_MD_SEL_EMR2 0x02000000 1425614e71bSYork Sun #define MD_CNTL_MD_SEL_EMR3 0x03000000 1435614e71bSYork Sun #define MD_CNTL_SET_REF 0x00800000 1445614e71bSYork Sun #define MD_CNTL_SET_PRE 0x00400000 1455614e71bSYork Sun #define MD_CNTL_CKE_CNTL_LOW 0x00100000 1465614e71bSYork Sun #define MD_CNTL_CKE_CNTL_HIGH 0x00200000 1475614e71bSYork Sun #define MD_CNTL_WRCW 0x00080000 1485614e71bSYork Sun #define MD_CNTL_MD_VALUE(x) (x & 0x0000FFFF) 1495614e71bSYork Sun 1505614e71bSYork Sun /* DDR_CDR1 */ 1515614e71bSYork Sun #define DDR_CDR1_DHC_EN 0x80000000 1525614e71bSYork Sun #define DDR_CDR1_ODT_SHIFT 17 1535614e71bSYork Sun #define DDR_CDR1_ODT_MASK 0x6 1545614e71bSYork Sun #define DDR_CDR2_ODT_MASK 0x1 1555614e71bSYork Sun #define DDR_CDR1_ODT(x) ((x & DDR_CDR1_ODT_MASK) << DDR_CDR1_ODT_SHIFT) 1565614e71bSYork Sun #define DDR_CDR2_ODT(x) (x & DDR_CDR2_ODT_MASK) 1575614e71bSYork Sun 1585614e71bSYork Sun #if (defined(CONFIG_SYS_FSL_DDR_VER) && \ 1595614e71bSYork Sun (CONFIG_SYS_FSL_DDR_VER >= FSL_DDR_VER_4_7)) 1605614e71bSYork Sun #define DDR_CDR_ODT_OFF 0x0 1615614e71bSYork Sun #define DDR_CDR_ODT_120ohm 0x1 1625614e71bSYork Sun #define DDR_CDR_ODT_180ohm 0x2 1635614e71bSYork Sun #define DDR_CDR_ODT_75ohm 0x3 1645614e71bSYork Sun #define DDR_CDR_ODT_110ohm 0x4 1655614e71bSYork Sun #define DDR_CDR_ODT_60hm 0x5 1665614e71bSYork Sun #define DDR_CDR_ODT_70ohm 0x6 1675614e71bSYork Sun #define DDR_CDR_ODT_47ohm 0x7 1685614e71bSYork Sun #else 1695614e71bSYork Sun #define DDR_CDR_ODT_75ohm 0x0 1705614e71bSYork Sun #define DDR_CDR_ODT_55ohm 0x1 1715614e71bSYork Sun #define DDR_CDR_ODT_60ohm 0x2 1725614e71bSYork Sun #define DDR_CDR_ODT_50ohm 0x3 1735614e71bSYork Sun #define DDR_CDR_ODT_150ohm 0x4 1745614e71bSYork Sun #define DDR_CDR_ODT_43ohm 0x5 1755614e71bSYork Sun #define DDR_CDR_ODT_120ohm 0x6 1765614e71bSYork Sun #endif 1775614e71bSYork Sun 1785614e71bSYork Sun /* Record of register values computed */ 1795614e71bSYork Sun typedef struct fsl_ddr_cfg_regs_s { 1805614e71bSYork Sun struct { 1815614e71bSYork Sun unsigned int bnds; 1825614e71bSYork Sun unsigned int config; 1835614e71bSYork Sun unsigned int config_2; 1845614e71bSYork Sun } cs[CONFIG_CHIP_SELECTS_PER_CTRL]; 1855614e71bSYork Sun unsigned int timing_cfg_3; 1865614e71bSYork Sun unsigned int timing_cfg_0; 1875614e71bSYork Sun unsigned int timing_cfg_1; 1885614e71bSYork Sun unsigned int timing_cfg_2; 1895614e71bSYork Sun unsigned int ddr_sdram_cfg; 1905614e71bSYork Sun unsigned int ddr_sdram_cfg_2; 1915614e71bSYork Sun unsigned int ddr_sdram_mode; 1925614e71bSYork Sun unsigned int ddr_sdram_mode_2; 1935614e71bSYork Sun unsigned int ddr_sdram_mode_3; 1945614e71bSYork Sun unsigned int ddr_sdram_mode_4; 1955614e71bSYork Sun unsigned int ddr_sdram_mode_5; 1965614e71bSYork Sun unsigned int ddr_sdram_mode_6; 1975614e71bSYork Sun unsigned int ddr_sdram_mode_7; 1985614e71bSYork Sun unsigned int ddr_sdram_mode_8; 1995614e71bSYork Sun unsigned int ddr_sdram_md_cntl; 2005614e71bSYork Sun unsigned int ddr_sdram_interval; 2015614e71bSYork Sun unsigned int ddr_data_init; 2025614e71bSYork Sun unsigned int ddr_sdram_clk_cntl; 2035614e71bSYork Sun unsigned int ddr_init_addr; 2045614e71bSYork Sun unsigned int ddr_init_ext_addr; 2055614e71bSYork Sun unsigned int timing_cfg_4; 2065614e71bSYork Sun unsigned int timing_cfg_5; 2075614e71bSYork Sun unsigned int ddr_zq_cntl; 2085614e71bSYork Sun unsigned int ddr_wrlvl_cntl; 2095614e71bSYork Sun unsigned int ddr_wrlvl_cntl_2; 2105614e71bSYork Sun unsigned int ddr_wrlvl_cntl_3; 2115614e71bSYork Sun unsigned int ddr_sr_cntr; 2125614e71bSYork Sun unsigned int ddr_sdram_rcw_1; 2135614e71bSYork Sun unsigned int ddr_sdram_rcw_2; 2145614e71bSYork Sun unsigned int ddr_eor; 2155614e71bSYork Sun unsigned int ddr_cdr1; 2165614e71bSYork Sun unsigned int ddr_cdr2; 2175614e71bSYork Sun unsigned int err_disable; 2185614e71bSYork Sun unsigned int err_int_en; 2195614e71bSYork Sun unsigned int debug[32]; 2205614e71bSYork Sun } fsl_ddr_cfg_regs_t; 2215614e71bSYork Sun 2225614e71bSYork Sun typedef struct memctl_options_partial_s { 2235614e71bSYork Sun unsigned int all_dimms_ecc_capable; 2245614e71bSYork Sun unsigned int all_dimms_tckmax_ps; 2255614e71bSYork Sun unsigned int all_dimms_burst_lengths_bitmask; 2265614e71bSYork Sun unsigned int all_dimms_registered; 2275614e71bSYork Sun unsigned int all_dimms_unbuffered; 2285614e71bSYork Sun /* unsigned int lowest_common_SPD_caslat; */ 2295614e71bSYork Sun unsigned int all_dimms_minimum_trcd_ps; 2305614e71bSYork Sun } memctl_options_partial_t; 2315614e71bSYork Sun 2325614e71bSYork Sun #define DDR_DATA_BUS_WIDTH_64 0 2335614e71bSYork Sun #define DDR_DATA_BUS_WIDTH_32 1 2345614e71bSYork Sun #define DDR_DATA_BUS_WIDTH_16 2 2355614e71bSYork Sun /* 2365614e71bSYork Sun * Generalized parameters for memory controller configuration, 2375614e71bSYork Sun * might be a little specific to the FSL memory controller 2385614e71bSYork Sun */ 2395614e71bSYork Sun typedef struct memctl_options_s { 2405614e71bSYork Sun /* 2415614e71bSYork Sun * Memory organization parameters 2425614e71bSYork Sun * 2435614e71bSYork Sun * if DIMM is present in the system 2445614e71bSYork Sun * where DIMMs are with respect to chip select 2455614e71bSYork Sun * where chip selects are with respect to memory boundaries 2465614e71bSYork Sun */ 2475614e71bSYork Sun unsigned int registered_dimm_en; /* use registered DIMM support */ 2485614e71bSYork Sun 2495614e71bSYork Sun /* Options local to a Chip Select */ 2505614e71bSYork Sun struct cs_local_opts_s { 2515614e71bSYork Sun unsigned int auto_precharge; 2525614e71bSYork Sun unsigned int odt_rd_cfg; 2535614e71bSYork Sun unsigned int odt_wr_cfg; 2545614e71bSYork Sun unsigned int odt_rtt_norm; 2555614e71bSYork Sun unsigned int odt_rtt_wr; 2565614e71bSYork Sun } cs_local_opts[CONFIG_CHIP_SELECTS_PER_CTRL]; 2575614e71bSYork Sun 2585614e71bSYork Sun /* Special configurations for chip select */ 2595614e71bSYork Sun unsigned int memctl_interleaving; 2605614e71bSYork Sun unsigned int memctl_interleaving_mode; 2615614e71bSYork Sun unsigned int ba_intlv_ctl; 2625614e71bSYork Sun unsigned int addr_hash; 2635614e71bSYork Sun 2645614e71bSYork Sun /* Operational mode parameters */ 2655614e71bSYork Sun unsigned int ecc_mode; /* Use ECC? */ 2665614e71bSYork Sun /* Initialize ECC using memory controller? */ 2675614e71bSYork Sun unsigned int ecc_init_using_memctl; 2685614e71bSYork Sun unsigned int dqs_config; /* Use DQS? maybe only with DDR2? */ 2695614e71bSYork Sun /* SREN - self-refresh during sleep */ 2705614e71bSYork Sun unsigned int self_refresh_in_sleep; 2715614e71bSYork Sun unsigned int dynamic_power; /* DYN_PWR */ 2725614e71bSYork Sun /* memory data width to use (16-bit, 32-bit, 64-bit) */ 2735614e71bSYork Sun unsigned int data_bus_width; 2745614e71bSYork Sun unsigned int burst_length; /* BL4, OTF and BL8 */ 2755614e71bSYork Sun /* On-The-Fly Burst Chop enable */ 2765614e71bSYork Sun unsigned int otf_burst_chop_en; 2775614e71bSYork Sun /* mirrior DIMMs for DDR3 */ 2785614e71bSYork Sun unsigned int mirrored_dimm; 2795614e71bSYork Sun unsigned int quad_rank_present; 2805614e71bSYork Sun unsigned int ap_en; /* address parity enable for RDIMM */ 2815614e71bSYork Sun unsigned int x4_en; /* enable x4 devices */ 2825614e71bSYork Sun 2835614e71bSYork Sun /* Global Timing Parameters */ 2845614e71bSYork Sun unsigned int cas_latency_override; 2855614e71bSYork Sun unsigned int cas_latency_override_value; 2865614e71bSYork Sun unsigned int use_derated_caslat; 2875614e71bSYork Sun unsigned int additive_latency_override; 2885614e71bSYork Sun unsigned int additive_latency_override_value; 2895614e71bSYork Sun 2905614e71bSYork Sun unsigned int clk_adjust; /* */ 2915614e71bSYork Sun unsigned int cpo_override; 2925614e71bSYork Sun unsigned int write_data_delay; /* DQS adjust */ 2935614e71bSYork Sun 2945614e71bSYork Sun unsigned int wrlvl_override; 2955614e71bSYork Sun unsigned int wrlvl_sample; /* Write leveling */ 2965614e71bSYork Sun unsigned int wrlvl_start; 2975614e71bSYork Sun unsigned int wrlvl_ctl_2; 2985614e71bSYork Sun unsigned int wrlvl_ctl_3; 2995614e71bSYork Sun 3005614e71bSYork Sun unsigned int half_strength_driver_enable; 3015614e71bSYork Sun unsigned int twot_en; 3025614e71bSYork Sun unsigned int threet_en; 3035614e71bSYork Sun unsigned int bstopre; 3045614e71bSYork Sun unsigned int tcke_clock_pulse_width_ps; /* tCKE */ 3055614e71bSYork Sun unsigned int tfaw_window_four_activates_ps; /* tFAW -- FOUR_ACT */ 3065614e71bSYork Sun 3075614e71bSYork Sun /* Rtt impedance */ 3085614e71bSYork Sun unsigned int rtt_override; /* rtt_override enable */ 3095614e71bSYork Sun unsigned int rtt_override_value; /* that is Rtt_Nom for DDR3 */ 3105614e71bSYork Sun unsigned int rtt_wr_override_value; /* this is Rtt_WR for DDR3 */ 3115614e71bSYork Sun 3125614e71bSYork Sun /* Automatic self refresh */ 3135614e71bSYork Sun unsigned int auto_self_refresh_en; 3145614e71bSYork Sun unsigned int sr_it; 3155614e71bSYork Sun /* ZQ calibration */ 3165614e71bSYork Sun unsigned int zq_en; 3175614e71bSYork Sun /* Write leveling */ 3185614e71bSYork Sun unsigned int wrlvl_en; 3195614e71bSYork Sun /* RCW override for RDIMM */ 3205614e71bSYork Sun unsigned int rcw_override; 3215614e71bSYork Sun unsigned int rcw_1; 3225614e71bSYork Sun unsigned int rcw_2; 3235614e71bSYork Sun /* control register 1 */ 3245614e71bSYork Sun unsigned int ddr_cdr1; 3255614e71bSYork Sun unsigned int ddr_cdr2; 3265614e71bSYork Sun 3275614e71bSYork Sun unsigned int trwt_override; 3285614e71bSYork Sun unsigned int trwt; /* read-to-write turnaround */ 3295614e71bSYork Sun } memctl_options_t; 3305614e71bSYork Sun 3315614e71bSYork Sun extern phys_size_t fsl_ddr_sdram(void); 3325614e71bSYork Sun extern phys_size_t fsl_ddr_sdram_size(void); 3335614e71bSYork Sun extern int fsl_use_spd(void); 3345614e71bSYork Sun extern void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs, 3355614e71bSYork Sun unsigned int ctrl_num, int step); 3365614e71bSYork Sun u32 fsl_ddr_get_intl3r(void); 3375614e71bSYork Sun 3385614e71bSYork Sun static void __board_assert_mem_reset(void) 3395614e71bSYork Sun { 3405614e71bSYork Sun } 3415614e71bSYork Sun 3425614e71bSYork Sun static void __board_deassert_mem_reset(void) 3435614e71bSYork Sun { 3445614e71bSYork Sun } 3455614e71bSYork Sun 3465614e71bSYork Sun void board_assert_mem_reset(void) 3475614e71bSYork Sun __attribute__((weak, alias("__board_assert_mem_reset"))); 3485614e71bSYork Sun 3495614e71bSYork Sun void board_deassert_mem_reset(void) 3505614e71bSYork Sun __attribute__((weak, alias("__board_deassert_mem_reset"))); 3515614e71bSYork Sun 3525614e71bSYork Sun static int __board_need_mem_reset(void) 3535614e71bSYork Sun { 3545614e71bSYork Sun return 0; 3555614e71bSYork Sun } 3565614e71bSYork Sun 3575614e71bSYork Sun int board_need_mem_reset(void) 3585614e71bSYork Sun __attribute__((weak, alias("__board_need_mem_reset"))); 3595614e71bSYork Sun 3605614e71bSYork Sun /* 3615614e71bSYork Sun * The 85xx boards have a common prototype for fixed_sdram so put the 3625614e71bSYork Sun * declaration here. 3635614e71bSYork Sun */ 3645614e71bSYork Sun #ifdef CONFIG_MPC85xx 3655614e71bSYork Sun extern phys_size_t fixed_sdram(void); 3665614e71bSYork Sun #endif 3675614e71bSYork Sun 3685614e71bSYork Sun #if defined(CONFIG_DDR_ECC) 3695614e71bSYork Sun extern void ddr_enable_ecc(unsigned int dram_size); 3705614e71bSYork Sun #endif 3715614e71bSYork Sun 3725614e71bSYork Sun 3735614e71bSYork Sun typedef struct fixed_ddr_parm{ 3745614e71bSYork Sun int min_freq; 3755614e71bSYork Sun int max_freq; 3765614e71bSYork Sun fsl_ddr_cfg_regs_t *ddr_settings; 3775614e71bSYork Sun } fixed_ddr_parm_t; 3785614e71bSYork Sun #endif 379