<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic T1022 DDR4 DQmaping setup in T-Series</title>
    <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2116734#M5243</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;P&gt;hello：&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;We are having a customized board with T1022 processor，use DDR4 particles MT40A512M16LY-062E，now we want to ifc norflash boot，but now we can‘t boot.we modify uboot&amp;nbsp;added &lt;SPAN class=""&gt;macro&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=""&gt;definition&amp;nbsp;&lt;/SPAN&gt;CONFIG_SYS_FSL_DDR4 and freescale/t104xrdb/ddr.c, source code upload.we use codewarrior QCVS component&amp;nbsp;generate ddr &amp;nbsp;arguments，then we modify ddr arguments，but now can not bootup，we do not modify DQ maping in QCVS,&lt;/SPAN&gt;&lt;SPAN&gt;please help us to solve problem，thanks！&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;DIV&gt;&lt;SPAN&gt;freescale/t104xrdb/ddr.c&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;common.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;i2c.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;hwconfig.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;asm/mmu.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;fsl_ddr_sdram.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;fsl_ddr_dimm_params.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;asm/fsl_law.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;asm/mpc85xx_gpio.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include "ddr.h"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;DECLARE_GLOBAL_DATA_PTR;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void fsl_ddr_board_options(memctl_options_t *popts,&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dimm_params_t *pdimm,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;unsigned int ctrl_num)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;const struct board_specific_parameters *pbsp, *pbsp_highest = NULL;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ulong ddr_freq;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (ctrl_num &amp;gt; 1) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Not supported controller number %d\n", ctrl_num);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (!pdimm-&amp;gt;n_ranks)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp = udimms[0];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Get clk_adjust according to the board ddr&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* freqency and n_banks specified in board_specific_parameters table.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_freq = get_ddr_freq(0) / 1000000;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while (pbsp-&amp;gt;datarate_mhz_high) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (pbsp-&amp;gt;n_ranks == pdimm-&amp;gt;n_ranks &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; (pdimm-&amp;gt;rank_density &amp;gt;&amp;gt; 30) &amp;gt;= pbsp-&amp;gt;rank_gb) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (ddr_freq &amp;lt;= pbsp-&amp;gt;datarate_mhz_high) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;clk_adjust = pbsp-&amp;gt;clk_adjust;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_start = pbsp-&amp;gt;wrlvl_start;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_2 = pbsp-&amp;gt;wrlvl_ctl_2;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_3 = pbsp-&amp;gt;wrlvl_ctl_3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;goto found;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp_highest = pbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp++;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (pbsp_highest) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Error: board specific timing not found\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("for data rate %lu MT/s\n", ddr_freq);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Trying to use the highest speed (%u) parameters\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pbsp_highest-&amp;gt;datarate_mhz_high);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;clk_adjust = pbsp_highest-&amp;gt;clk_adjust;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_start = pbsp_highest-&amp;gt;wrlvl_start;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_2 = pbsp-&amp;gt;wrlvl_ctl_2;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_3 = pbsp-&amp;gt;wrlvl_ctl_3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;} else {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;panic("DIMM is not supported by this board");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;found:&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x, "&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"wrlvl_ctrl_3 0x%x\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp-&amp;gt;n_ranks, pbsp-&amp;gt;datarate_mhz_high, pbsp-&amp;gt;rank_gb,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp-&amp;gt;clk_adjust, pbsp-&amp;gt;wrlvl_start, pbsp-&amp;gt;wrlvl_ctl_2,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp-&amp;gt;wrlvl_ctl_3);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* Factors to consider for half-strength driver enable:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* - number of DIMMs installed&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#ifdef CONFIG_SYS_FSL_DDR4&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;half_strength_driver_enable = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* optimize cpo for erratum A-009942 */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;cpo_sample = 0x59;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;half_strength_driver_enable = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* Write leveling override&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_override = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_sample = 0xf;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* rtt and rtt_wr override&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;rtt_override = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Enable ZQ calibration */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;zq_en = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* DHC_EN =1, ODT = 75 Ohm */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#ifdef CONFIG_SYS_FSL_DDR4&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_120OHM);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_120OHM) |&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DDR_CDR2_VREF_OVRD(70);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Vref = 70% */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_75ohm);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_75ohm);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_300MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 300000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_400MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 400000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_500MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 500000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_600MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 600000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_700MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 700000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_800MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 800000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_900MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 900000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1000MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1000000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1200MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1200000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1300MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1300000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1400MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1400000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1500MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1500000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1600MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1600000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1700MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1700000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1800MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1800000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1900MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1900000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2000MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2000000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2100MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2100000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2200MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2200000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2300MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2300000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2400MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2400000000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define SDRAM_CFG_MEM_EN_MASK&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x80000000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* DDR Controller 1 register values */&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS0_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xFF&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS1_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0200023F&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS0_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x80010412&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS1_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0202&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS0_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS1_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS2_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0240027F&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS3_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x028002BF&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS2_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0202&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS3_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00010202&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS2_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS3_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x01111000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x4055000C&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xCCC60E54&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0049111C&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_SDRAM_CFG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x05008000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_SDRAM_CFG2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00401050&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x01010215&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_CONTROL&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_INTERVAL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x18600618&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MEM_INIT_VALUE&amp;nbsp; &amp;nbsp;0xDEADBEEF&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CLK_CTRL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x02800000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_INIT_ADDR&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_INIT_EXT_ADDR&amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00220001&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x05401400&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ZQ_CNTL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x8A090705&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_WRLVL_CNTL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x8675F609&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_WRLVL_CNTL_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_WRLVL_CNTL_3&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CDR_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x80040000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CDR_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x80040000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_SDRAM_CFG_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x03115800&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DESKEW_CNTL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x80000000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x5B65B658&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0xD96D96D8&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x5B65B658&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0xD8000000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_9&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0500&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x04000000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_11&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_12&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_14&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_15&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_16&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ERR_DISABLE&amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ERR_INT_EN&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ERR_SBE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00010000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#ifndef CONFIG_SYS_DDR_RAW_TIMING&lt;/DIV&gt;&lt;DIV&gt;fsl_ddr_cfg_regs_t ddr_cfg_regs_1600 = {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[0].bnds = 0x7F,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[1].bnds = 0x008000BF,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[2].bnds = 0x0100013F,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[3].bnds = 0x0140017F,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[0].config = 0x80010422,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[0].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[1].config = 0x0202,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[1].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[2].config = 0x0202,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[2].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[3].config = 0x00010202,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[3].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_3 = 0x02111000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_0 = 0x6055000C,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_1 = 0xB3B40F56,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_2 = 0x0048D118,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_cfg = 0x05008000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_cfg_2 = 0x00401052,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_cfg_3 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode = 0x01010411,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_3 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_4 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_5 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_6 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_7 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_8 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_9 = 0x0500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_10 = 0x04000000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_11 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_12 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_13 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_14 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_15 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_16 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_interval = 0x18600618,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_data_init = 0xDEADBEEF,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_clk_cntl = 0x02800000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_init_addr = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_init_ext_addr = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_4 = 0x00220001,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_5 = 0x05401400,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_6 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_7 = 0x20000000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_8 = 0x03114400,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_9 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_zq_cntl = 0x8A090705,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_wrlvl_cntl = 0x8675F609,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_wrlvl_cntl_2 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_wrlvl_cntl_3 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sr_cntr = 0x80000000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_rcw_1 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_rcw_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_cdr1 = 0x80040000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_cdr2 = 0x80040000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_0 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_1 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_2 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_3 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//.debug[28] = 0x00700046,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[0].bnds = DDRmc1_CS0_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[1].bnds = DDRmc1_CS1_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[0].config = DDRmc1_CS0_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[1].config = DDRmc1_CS1_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[0].config_2 = DDRmc1_CS0_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[1].config_2 =&amp;nbsp; DDRmc1_CS1_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[2].bnds = DDRmc1_CS2_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[3].bnds = DDRmc1_CS3_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[2].config = DDRmc1_CS2_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[3].config = DDRmc1_CS3_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[2].config_2 =&amp;nbsp; DDRmc1_CS2_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[3].config_2 =&amp;nbsp; DDRmc1_CS3_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_0 = DDRmc1_TIMING_CFG_0,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_1 = DDRmc1_TIMING_CFG_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_2 = DDRmc1_TIMING_CFG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_3 = DDRmc1_TIMING_CFG_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_4 = DDRmc1_TIMING_CFG_4,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_5 = DDRmc1_TIMING_CFG_5,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_6 = DDRmc1_TIMING_CFG_6,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_7 = DDRmc1_TIMING_CFG_7,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_8 = DDRmc1_TIMING_CFG_8,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_cfg = DDRmc1_SDRAM_CFG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_cfg_2 = DDRmc1_SDRAM_CFG2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_cfg_3 = DDRmc1_SDRAM_CFG_3,// DDRmc1_SDRAM_CFG3&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode = DDRmc1_MODE_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_2 = DDRmc1_MODE_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_3 = DDRmc1_MODE_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_4 = DDRmc1_MODE_4,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_5 = DDRmc1_MODE_5,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_6 = DDRmc1_MODE_6,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_7 = DDRmc1_MODE_7,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_8 = DDRmc1_MODE_8,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_9 = DDRmc1_MODE_9,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_10 = DDRmc1_MODE_10,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_11 = DDRmc1_MODE_11,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_12 = DDRmc1_MODE_12,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_13 = DDRmc1_MODE_13,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_14 = DDRmc1_MODE_14,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_15 = DDRmc1_MODE_15,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_16 = DDRmc1_MODE_16,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_md_cntl = DDRmc1_MODE_CONTROL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_interval = DDRmc1_INTERVAL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_data_init = DDRmc1_MEM_INIT_VALUE,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_clk_cntl = DDRmc1_CLK_CTRL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.init_addr = DDRmc1_INIT_ADDR,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.init_ext_addr = DDRmc1_INIT_EXT_ADDR,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_zq_cntl = DDRmc1_ZQ_CNTL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_wrlvl_cntl = DDRmc1_WRLVL_CNTL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_wrlvl_cntl_2 = DDRmc1_WRLVL_CNTL_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_wrlvl_cntl_3 = DDRmc1_WRLVL_CNTL_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_1 = DDRmc1_RCW_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_2 = DDRmc1_RCW_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_3 = DDRmc1_RCW_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_4 = DDRmc1_RCW_4,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_5 = DDRmc1_RCW_5,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_6 = DDRmc1_RCW_6,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.deskew_cntl = DDRmc1_DESKEW_CNTL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_cdr1 = DDRmc1_CDR_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_cdr1 = DDRmc1_CDR_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.err_disable = DDRmc1_ERR_DISABLE,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.err_int_en = DDRmc1_ERR_INT_EN,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.err_sbe = DDRmc1_ERR_SBE&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;fixed_ddr_parm_t fixed_ddr_parm_0[] = {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{1550, 1650, &amp;amp;ddr_cfg_regs_1600},&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{0, 0, NULL}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* DDR model number: MT40A512M8HX-093E */&lt;/DIV&gt;&lt;DIV&gt;#ifdef CONFIG_SYS_DDR_RAW_TIMING&lt;/DIV&gt;&lt;DIV&gt;dimm_params_t ddr_raw_timing = {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.n_ranks = 1,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.rank_density = 2147483648u,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.capacity = 2147483648u,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.primary_sdram_width = 32,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ec_sdram_width = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.registered_dimm = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.mirrored_dimm = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.n_row_addr = 15,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.n_col_addr = 10,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.bank_addr_bits = 2,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.bank_group_bits = 2,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.edc_config = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.burst_lengths_bitmask = 0x0c,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tckmin_x_ps = 938,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tckmax_ps = 1500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.caslat_x = 0x000DFA00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.taa_ps = 13500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trcd_ps = 13500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trp_ps = 13500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tras_ps = 33000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trc_ps = 46500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trfc1_ps = 260000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trfc2_ps = 160000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trfc4_ps = 110000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tfaw_ps = 21000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trrds_ps = 3700,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trrdl_ps = 5300,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tccdl_ps = 5355,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.refresh_rate_ps = 7800000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[0] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[1] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[2] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[3] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[4] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[5] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[6] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[7] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[8] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[9] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[10] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[11] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[12] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[13] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[14] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[15] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[16] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[17] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping_ors = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;int fsl_ddr_get_dimm_params(dimm_params_t *pdimm,&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; unsigned int controller_number,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; unsigned int dimm_number)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;static const char dimm_model[] = "Fixed DDR on board";&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (((controller_number == 0) &amp;amp;&amp;amp; (dimm_number == 0)) ||&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; ((controller_number == 1) &amp;amp;&amp;amp; (dimm_number == 0))) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy(pdimm, &amp;amp;ddr_raw_timing, sizeof(dimm_params_t));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memset(pdimm-&amp;gt;mpart, 0, sizeof(pdimm-&amp;gt;mpart));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy(pdimm-&amp;gt;mpart, dimm_model, sizeof(dimm_model) - 1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;phys_size_t fixed_sdram(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;int i;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;char buf[32];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;fsl_ddr_cfg_regs_t ddr_cfg_regs;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;phys_size_t ddr_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ulong ddr_freq, ddr_freq_mhz;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_freq = get_ddr_freq(0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_freq_mhz = ddr_freq / 1000000;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Configuring DDR for %s MT/s data rate\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strmhz(buf, ddr_freq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for (i = 0; fixed_ddr_parm_0[i].max_freq &amp;gt; 0; i++) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if ((ddr_freq_mhz &amp;gt; fixed_ddr_parm_0[i].min_freq) &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; (ddr_freq_mhz &amp;lt;= fixed_ddr_parm_0[i].max_freq)) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy(&amp;amp;ddr_cfg_regs,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fixed_ddr_parm_0[i].ddr_settings,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sizeof(ddr_cfg_regs));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (fixed_ddr_parm_0[i].max_freq == 0)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;panic("Unsupported DDR data rate %s MT/s data rate\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; strmhz(buf, ddr_freq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_size = (phys_size_t)2048 * 1024 * 1024;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;fsl_ddr_set_memctl_regs(&amp;amp;ddr_cfg_regs, 0, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return ddr_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#if defined(CONFIG_DEEP_SLEEP)&lt;/DIV&gt;&lt;DIV&gt;void board_mem_sleep_setup(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;void __iomem *cpld_base = (void *)CONFIG_SYS_CPLD_BASE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* does not provide HW signals for power management */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;clrbits_8(cpld_base + 0x17, 0x40);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Disable MCKE isolation */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;gpio_set_value(2, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;udelay(1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;phys_size_t initdram(int board_type)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;phys_size_t dram_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;puts("swh ddr4 init!\r\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size&amp;nbsp; = fixed_sdram();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#if 0&lt;/DIV&gt;&lt;DIV&gt;#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_RAMBOOT_PBL)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;puts("Initializing....using SPD\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size = fsl_ddr_sdram();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size =&amp;nbsp; fsl_ddr_sdram_size();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size = setup_ddr_tlbs(dram_size / 0x100000);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size *= 0x100000;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#if defined(CONFIG_DEEP_SLEEP) &amp;amp;&amp;amp; !defined(CONFIG_SPL_BUILD)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;fsl_dp_resume();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return dram_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI-SPOILER&gt;&lt;/LI-SPOILER&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DQmap.png" style="width: 934px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343009iD51BB05E1FA65C88/image-size/large?v=v2&amp;amp;px=999" role="button" title="DQmap.png" alt="DQmap.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ddr41.jpg" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343014i740F05422F2365D5/image-size/large?v=v2&amp;amp;px=999" role="button" title="ddr41.jpg" alt="ddr41.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="uboot.jpg" style="width: 727px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343016i7714CB793198F6AE/image-size/large?v=v2&amp;amp;px=999" role="button" title="uboot.jpg" alt="uboot.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 16 Jun 2025 08:01:13 GMT</pubDate>
    <dc:creator>JohnieSi</dc:creator>
    <dc:date>2025-06-16T08:01:13Z</dc:date>
    <item>
      <title>T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2116734#M5243</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;P&gt;hello：&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;We are having a customized board with T1022 processor，use DDR4 particles MT40A512M16LY-062E，now we want to ifc norflash boot，but now we can‘t boot.we modify uboot&amp;nbsp;added &lt;SPAN class=""&gt;macro&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=""&gt;definition&amp;nbsp;&lt;/SPAN&gt;CONFIG_SYS_FSL_DDR4 and freescale/t104xrdb/ddr.c, source code upload.we use codewarrior QCVS component&amp;nbsp;generate ddr &amp;nbsp;arguments，then we modify ddr arguments，but now can not bootup，we do not modify DQ maping in QCVS,&lt;/SPAN&gt;&lt;SPAN&gt;please help us to solve problem，thanks！&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;DIV&gt;&lt;SPAN&gt;freescale/t104xrdb/ddr.c&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;common.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;i2c.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;hwconfig.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;asm/mmu.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;fsl_ddr_sdram.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;fsl_ddr_dimm_params.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;asm/fsl_law.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include &amp;lt;asm/mpc85xx_gpio.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include "ddr.h"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;DECLARE_GLOBAL_DATA_PTR;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void fsl_ddr_board_options(memctl_options_t *popts,&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dimm_params_t *pdimm,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;unsigned int ctrl_num)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;const struct board_specific_parameters *pbsp, *pbsp_highest = NULL;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ulong ddr_freq;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (ctrl_num &amp;gt; 1) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Not supported controller number %d\n", ctrl_num);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (!pdimm-&amp;gt;n_ranks)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp = udimms[0];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Get clk_adjust according to the board ddr&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* freqency and n_banks specified in board_specific_parameters table.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_freq = get_ddr_freq(0) / 1000000;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while (pbsp-&amp;gt;datarate_mhz_high) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (pbsp-&amp;gt;n_ranks == pdimm-&amp;gt;n_ranks &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; (pdimm-&amp;gt;rank_density &amp;gt;&amp;gt; 30) &amp;gt;= pbsp-&amp;gt;rank_gb) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (ddr_freq &amp;lt;= pbsp-&amp;gt;datarate_mhz_high) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;clk_adjust = pbsp-&amp;gt;clk_adjust;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_start = pbsp-&amp;gt;wrlvl_start;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_2 = pbsp-&amp;gt;wrlvl_ctl_2;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_3 = pbsp-&amp;gt;wrlvl_ctl_3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;goto found;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp_highest = pbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp++;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (pbsp_highest) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Error: board specific timing not found\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("for data rate %lu MT/s\n", ddr_freq);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Trying to use the highest speed (%u) parameters\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pbsp_highest-&amp;gt;datarate_mhz_high);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;clk_adjust = pbsp_highest-&amp;gt;clk_adjust;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_start = pbsp_highest-&amp;gt;wrlvl_start;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_2 = pbsp-&amp;gt;wrlvl_ctl_2;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_ctl_3 = pbsp-&amp;gt;wrlvl_ctl_3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;} else {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;panic("DIMM is not supported by this board");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;found:&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x, "&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"wrlvl_ctrl_3 0x%x\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp-&amp;gt;n_ranks, pbsp-&amp;gt;datarate_mhz_high, pbsp-&amp;gt;rank_gb,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp-&amp;gt;clk_adjust, pbsp-&amp;gt;wrlvl_start, pbsp-&amp;gt;wrlvl_ctl_2,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pbsp-&amp;gt;wrlvl_ctl_3);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* Factors to consider for half-strength driver enable:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* - number of DIMMs installed&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#ifdef CONFIG_SYS_FSL_DDR4&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;half_strength_driver_enable = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* optimize cpo for erratum A-009942 */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;cpo_sample = 0x59;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;half_strength_driver_enable = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* Write leveling override&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_override = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;wrlvl_sample = 0xf;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;* rtt and rtt_wr override&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;rtt_override = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Enable ZQ calibration */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;zq_en = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* DHC_EN =1, ODT = 75 Ohm */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#ifdef CONFIG_SYS_FSL_DDR4&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_120OHM);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_120OHM) |&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DDR_CDR2_VREF_OVRD(70);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Vref = 70% */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_75ohm);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;popts-&amp;gt;ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_75ohm);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_300MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 300000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_400MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 400000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_500MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 500000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_600MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 600000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_700MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 700000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_800MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 800000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_900MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 900000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1000MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1000000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1200MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1200000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1300MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1300000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1400MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1400000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1500MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1500000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1600MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1600000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1700MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1700000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1800MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1800000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_1900MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 1900000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2000MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2000000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2100MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2100000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2200MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2200000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2300MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2300000000&lt;/DIV&gt;&lt;DIV&gt;#define DATARATE_2400MHZ&amp;nbsp; &amp;nbsp; &amp;nbsp; 2400000000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define SDRAM_CFG_MEM_EN_MASK&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x80000000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* DDR Controller 1 register values */&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS0_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xFF&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS1_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0200023F&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS0_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x80010412&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS1_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0202&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS0_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS1_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS2_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0240027F&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS3_BNDS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x028002BF&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS2_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0202&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS3_CONFIG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00010202&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS2_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CS3_CONFIG_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x01111000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x4055000C&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0xCCC60E54&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0049111C&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_SDRAM_CFG&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x05008000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_SDRAM_CFG2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00401050&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x01010215&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_CONTROL&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_INTERVAL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x18600618&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MEM_INIT_VALUE&amp;nbsp; &amp;nbsp;0xDEADBEEF&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CLK_CTRL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x02800000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_INIT_ADDR&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_INIT_EXT_ADDR&amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00220001&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x05401400&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ZQ_CNTL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x8A090705&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_WRLVL_CNTL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x8675F609&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_WRLVL_CNTL_2&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_WRLVL_CNTL_3&amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CDR_1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x80040000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_CDR_2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x80040000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_SDRAM_CFG_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_TIMING_CFG_8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x03115800&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DESKEW_CNTL&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x80000000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x5B65B658&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0xD96D96D8&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x5B65B658&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_DQ_MAP3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0xD8000000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_RCW_6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_9&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x0500&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x04000000&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_11&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_12&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_14&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_15&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_MODE_16&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ERR_DISABLE&amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ERR_INT_EN&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0x00&lt;/DIV&gt;&lt;DIV&gt;#define DDRmc1_ERR_SBE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0x00010000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#ifndef CONFIG_SYS_DDR_RAW_TIMING&lt;/DIV&gt;&lt;DIV&gt;fsl_ddr_cfg_regs_t ddr_cfg_regs_1600 = {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[0].bnds = 0x7F,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[1].bnds = 0x008000BF,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[2].bnds = 0x0100013F,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[3].bnds = 0x0140017F,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[0].config = 0x80010422,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[0].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[1].config = 0x0202,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[1].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[2].config = 0x0202,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[2].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[3].config = 0x00010202,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.cs[3].config_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_3 = 0x02111000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_0 = 0x6055000C,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_1 = 0xB3B40F56,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_2 = 0x0048D118,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_cfg = 0x05008000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_cfg_2 = 0x00401052,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_cfg_3 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode = 0x01010411,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_3 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_4 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_5 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_6 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_7 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_8 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_9 = 0x0500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_10 = 0x04000000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_11 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_12 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_13 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_14 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_15 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_mode_16 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_interval = 0x18600618,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_data_init = 0xDEADBEEF,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_clk_cntl = 0x02800000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_init_addr = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_init_ext_addr = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_4 = 0x00220001,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_5 = 0x05401400,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_6 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_7 = 0x20000000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_8 = 0x03114400,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.timing_cfg_9 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_zq_cntl = 0x8A090705,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_wrlvl_cntl = 0x8675F609,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_wrlvl_cntl_2 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_wrlvl_cntl_3 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sr_cntr = 0x80000000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_rcw_1 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_sdram_rcw_2 = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_cdr1 = 0x80040000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ddr_cdr2 = 0x80040000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_0 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_1 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_2 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_map_3 = 0x00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//.debug[28] = 0x00700046,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[0].bnds = DDRmc1_CS0_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[1].bnds = DDRmc1_CS1_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[0].config = DDRmc1_CS0_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[1].config = DDRmc1_CS1_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[0].config_2 = DDRmc1_CS0_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[1].config_2 =&amp;nbsp; DDRmc1_CS1_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[2].bnds = DDRmc1_CS2_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[3].bnds = DDRmc1_CS3_BNDS,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[2].config = DDRmc1_CS2_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[3].config = DDRmc1_CS3_CONFIG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[2].config_2 =&amp;nbsp; DDRmc1_CS2_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.cs[3].config_2 =&amp;nbsp; DDRmc1_CS3_CONFIG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_0 = DDRmc1_TIMING_CFG_0,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_1 = DDRmc1_TIMING_CFG_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_2 = DDRmc1_TIMING_CFG_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_3 = DDRmc1_TIMING_CFG_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_4 = DDRmc1_TIMING_CFG_4,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_5 = DDRmc1_TIMING_CFG_5,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_6 = DDRmc1_TIMING_CFG_6,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_7 = DDRmc1_TIMING_CFG_7,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.timing_cfg_8 = DDRmc1_TIMING_CFG_8,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_cfg = DDRmc1_SDRAM_CFG,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_cfg_2 = DDRmc1_SDRAM_CFG2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_cfg_3 = DDRmc1_SDRAM_CFG_3,// DDRmc1_SDRAM_CFG3&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode = DDRmc1_MODE_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_2 = DDRmc1_MODE_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_3 = DDRmc1_MODE_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_4 = DDRmc1_MODE_4,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_5 = DDRmc1_MODE_5,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_6 = DDRmc1_MODE_6,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_7 = DDRmc1_MODE_7,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_8 = DDRmc1_MODE_8,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_9 = DDRmc1_MODE_9,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_10 = DDRmc1_MODE_10,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_11 = DDRmc1_MODE_11,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_12 = DDRmc1_MODE_12,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_13 = DDRmc1_MODE_13,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_14 = DDRmc1_MODE_14,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_15 = DDRmc1_MODE_15,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_mode_16 = DDRmc1_MODE_16,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_md_cntl = DDRmc1_MODE_CONTROL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_interval = DDRmc1_INTERVAL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_data_init = DDRmc1_MEM_INIT_VALUE,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.sdram_clk_cntl = DDRmc1_CLK_CTRL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.init_addr = DDRmc1_INIT_ADDR,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.init_ext_addr = DDRmc1_INIT_EXT_ADDR,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_zq_cntl = DDRmc1_ZQ_CNTL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_wrlvl_cntl = DDRmc1_WRLVL_CNTL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_wrlvl_cntl_2 = DDRmc1_WRLVL_CNTL_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_wrlvl_cntl_3 = DDRmc1_WRLVL_CNTL_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_1 = DDRmc1_RCW_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_2 = DDRmc1_RCW_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_3 = DDRmc1_RCW_3,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_4 = DDRmc1_RCW_4,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_5 = DDRmc1_RCW_5,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_sdram_rcw_6 = DDRmc1_RCW_6,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.deskew_cntl = DDRmc1_DESKEW_CNTL,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_cdr1 = DDRmc1_CDR_1,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.ddr_cdr1 = DDRmc1_CDR_2,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.err_disable = DDRmc1_ERR_DISABLE,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.err_int_en = DDRmc1_ERR_INT_EN,&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp; &amp;nbsp;.err_sbe = DDRmc1_ERR_SBE&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;fixed_ddr_parm_t fixed_ddr_parm_0[] = {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{1550, 1650, &amp;amp;ddr_cfg_regs_1600},&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{0, 0, NULL}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* DDR model number: MT40A512M8HX-093E */&lt;/DIV&gt;&lt;DIV&gt;#ifdef CONFIG_SYS_DDR_RAW_TIMING&lt;/DIV&gt;&lt;DIV&gt;dimm_params_t ddr_raw_timing = {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.n_ranks = 1,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.rank_density = 2147483648u,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.capacity = 2147483648u,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.primary_sdram_width = 32,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.ec_sdram_width = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.registered_dimm = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.mirrored_dimm = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.n_row_addr = 15,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.n_col_addr = 10,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.bank_addr_bits = 2,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.bank_group_bits = 2,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.edc_config = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.burst_lengths_bitmask = 0x0c,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tckmin_x_ps = 938,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tckmax_ps = 1500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.caslat_x = 0x000DFA00,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.taa_ps = 13500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trcd_ps = 13500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trp_ps = 13500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tras_ps = 33000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trc_ps = 46500,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trfc1_ps = 260000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trfc2_ps = 160000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trfc4_ps = 110000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tfaw_ps = 21000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trrds_ps = 3700,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.trrdl_ps = 5300,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.tccdl_ps = 5355,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.refresh_rate_ps = 7800000,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[0] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[1] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[2] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[3] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[4] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[5] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[6] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[7] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[8] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[9] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[10] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[11] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[12] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[13] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[14] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[15] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[16] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping[17] = 0x0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;.dq_mapping_ors = 0,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;int fsl_ddr_get_dimm_params(dimm_params_t *pdimm,&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; unsigned int controller_number,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; unsigned int dimm_number)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;static const char dimm_model[] = "Fixed DDR on board";&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (((controller_number == 0) &amp;amp;&amp;amp; (dimm_number == 0)) ||&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; ((controller_number == 1) &amp;amp;&amp;amp; (dimm_number == 0))) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy(pdimm, &amp;amp;ddr_raw_timing, sizeof(dimm_params_t));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memset(pdimm-&amp;gt;mpart, 0, sizeof(pdimm-&amp;gt;mpart));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy(pdimm-&amp;gt;mpart, dimm_model, sizeof(dimm_model) - 1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;phys_size_t fixed_sdram(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;int i;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;char buf[32];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;fsl_ddr_cfg_regs_t ddr_cfg_regs;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;phys_size_t ddr_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ulong ddr_freq, ddr_freq_mhz;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_freq = get_ddr_freq(0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_freq_mhz = ddr_freq / 1000000;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("Configuring DDR for %s MT/s data rate\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strmhz(buf, ddr_freq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for (i = 0; fixed_ddr_parm_0[i].max_freq &amp;gt; 0; i++) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if ((ddr_freq_mhz &amp;gt; fixed_ddr_parm_0[i].min_freq) &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; (ddr_freq_mhz &amp;lt;= fixed_ddr_parm_0[i].max_freq)) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy(&amp;amp;ddr_cfg_regs,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fixed_ddr_parm_0[i].ddr_settings,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sizeof(ddr_cfg_regs));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (fixed_ddr_parm_0[i].max_freq == 0)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;panic("Unsupported DDR data rate %s MT/s data rate\n",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; strmhz(buf, ddr_freq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ddr_size = (phys_size_t)2048 * 1024 * 1024;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;fsl_ddr_set_memctl_regs(&amp;amp;ddr_cfg_regs, 0, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return ddr_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#if defined(CONFIG_DEEP_SLEEP)&lt;/DIV&gt;&lt;DIV&gt;void board_mem_sleep_setup(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;void __iomem *cpld_base = (void *)CONFIG_SYS_CPLD_BASE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* does not provide HW signals for power management */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;clrbits_8(cpld_base + 0x17, 0x40);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Disable MCKE isolation */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;gpio_set_value(2, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;udelay(1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;phys_size_t initdram(int board_type)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;phys_size_t dram_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;puts("swh ddr4 init!\r\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size&amp;nbsp; = fixed_sdram();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#if 0&lt;/DIV&gt;&lt;DIV&gt;#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_RAMBOOT_PBL)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;puts("Initializing....using SPD\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size = fsl_ddr_sdram();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#else&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size =&amp;nbsp; fsl_ddr_sdram_size();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size = setup_ddr_tlbs(dram_size / 0x100000);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dram_size *= 0x100000;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#if defined(CONFIG_DEEP_SLEEP) &amp;amp;&amp;amp; !defined(CONFIG_SPL_BUILD)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;fsl_dp_resume();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return dram_size;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI-SPOILER&gt;&lt;/LI-SPOILER&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DQmap.png" style="width: 934px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343009iD51BB05E1FA65C88/image-size/large?v=v2&amp;amp;px=999" role="button" title="DQmap.png" alt="DQmap.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ddr41.jpg" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343014i740F05422F2365D5/image-size/large?v=v2&amp;amp;px=999" role="button" title="ddr41.jpg" alt="ddr41.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="uboot.jpg" style="width: 727px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343016i7714CB793198F6AE/image-size/large?v=v2&amp;amp;px=999" role="button" title="uboot.jpg" alt="uboot.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 16 Jun 2025 08:01:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2116734#M5243</guid>
      <dc:creator>JohnieSi</dc:creator>
      <dc:date>2025-06-16T08:01:13Z</dc:date>
    </item>
    <item>
      <title>Re: T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2116737#M5244</link>
      <description>&lt;P&gt;we do not know how to &lt;SPAN&gt;modify&amp;nbsp;QCVS DDR DQ maping,QCVS DDR other arguments use ddr4 datesheet&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 16 Jun 2025 08:03:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2116737#M5244</guid>
      <dc:creator>JohnieSi</dc:creator>
      <dc:date>2025-06-16T08:03:24Z</dc:date>
    </item>
    <item>
      <title>Re: T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2117601#M5245</link>
      <description>&lt;P&gt;If &lt;STRONG&gt;DQ&lt;/STRONG&gt; signals are swapped within nibbles, this should be properly set in the DDR_DQ_MAPx registers.&lt;/P&gt;
&lt;P&gt;For details, please refer to section "14.4.49 DQ mapping register 0 (DDR_DDR_DQ_MAP0)" in "QorIQ T1040 Reference Manual".&lt;/P&gt;</description>
      <pubDate>Tue, 17 Jun 2025 09:03:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2117601#M5245</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2025-06-17T09:03:59Z</dc:date>
    </item>
    <item>
      <title>Re: T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2117623#M5246</link>
      <description>yes,my board ddr dqmap do not find argument&amp;nbsp;section "14.4.49 DQ mapping register 0 (DDR_DDR_DQ_MAP0)".&lt;BR /&gt;please check my board schematic diagram，we dqmap not DQ signals0-3 or DQ signals4-7 swapped,we setup schematic diagram，please tell me how to solve</description>
      <pubDate>Tue, 17 Jun 2025 09:20:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2117623#M5246</guid>
      <dc:creator>JohnieSi</dc:creator>
      <dc:date>2025-06-17T09:20:06Z</dc:date>
    </item>
    <item>
      <title>Re: T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2117632#M5247</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dqmap.jpg" style="width: 857px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/343286i4ADDC1212092C59E/image-size/large?v=v2&amp;amp;px=999" role="button" title="dqmap.jpg" alt="dqmap.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 17 Jun 2025 09:23:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2117632#M5247</guid>
      <dc:creator>JohnieSi</dc:creator>
      <dc:date>2025-06-17T09:23:16Z</dc:date>
    </item>
    <item>
      <title>Re: T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2118141#M5248</link>
      <description>&lt;P&gt;&lt;SPAN&gt;DDR_DQ_MAPx registers is half-world&amp;nbsp;swapped do not world swapped,my board hardware DDR design most word swapped.such as DQ 7-2-0-5 and DQ 6-3-1-4 right？&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jun 2025 01:34:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2118141#M5248</guid>
      <dc:creator>JohnieSi</dc:creator>
      <dc:date>2025-06-18T01:34:09Z</dc:date>
    </item>
    <item>
      <title>Re: T1022 DDR4 DQmaping setup</title>
      <link>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2123604#M5255</link>
      <description>&lt;P&gt;Please use the value addressed in "Table 14-7. Bitfield settings for each byte lane" in T1040RM.&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jun 2025 04:20:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T1022-DDR4-DQmaping-setup/m-p/2123604#M5255</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2025-06-26T04:20:04Z</dc:date>
    </item>
  </channel>
</rss>

