<?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>i.MX Processors中的主题 Re: How to modify Bootloader and kernel to support LPDDR2?</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278917#M31746</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hi Yamil,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have you been able to get this to work?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If so may you share your flash_hease.S file?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 02 Jul 2013 19:24:55 GMT</pubDate>
    <dc:creator>rp123</dc:creator>
    <dc:date>2013-07-02T19:24:55Z</dc:date>
    <item>
      <title>How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278915#M31744</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Currently I'm working with a mx6q_sabrelite platform. I would like to modify the bootloader and kernel to&lt;/P&gt;&lt;P&gt;support LPDDR2 instead of DDR3 already used by this platform. &lt;/P&gt;&lt;P&gt;Can someone give me a hint on this matter?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Apr 2013 15:55:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278915#M31744</guid>
      <dc:creator>YamilGarcia</dc:creator>
      <dc:date>2013-04-22T15:55:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278916#M31745</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,Yamil,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I just tell you the way on how to do that ! you should adjust it according to your board. for setting your memory , you need to refer to 2 files:&lt;/P&gt;&lt;P&gt;(1) u-boot/board/freescale/mx6q_sabresd/flash_header.S(I assume you are refering to mx6q-sabresd board)&lt;BR /&gt;All configurations of memory controller are in this file. According to note in it, you can know what we should do.&lt;/P&gt;&lt;P&gt;(2)Registers for memory controller&lt;/P&gt;&lt;P&gt;you should look up the meaning of every register bit that is used in flash_header.S in reference manual(IMX6DQRM.pdf), Then adjust the value of corresponding registers. Normally, the following contents should be modified:&lt;/P&gt;&lt;P&gt;** Row address lines&lt;/P&gt;&lt;P&gt;** Column address lines&lt;/P&gt;&lt;P&gt;** data lines&lt;/P&gt;&lt;P&gt;** Resistence&lt;/P&gt;&lt;P&gt;** the type of DDR (DDR2,DDR3 or LPDDR2 etc)&lt;/P&gt;&lt;P&gt;.....&lt;/P&gt;&lt;P&gt;If you take some time on it, you can do it well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Weidong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Apr 2013 06:27:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278916#M31745</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2013-04-24T06:27:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278917#M31746</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hi Yamil,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have you been able to get this to work?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If so may you share your flash_hease.S file?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Jul 2013 19:24:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278917#M31746</guid>
      <dc:creator>rp123</dc:creator>
      <dc:date>2013-07-02T19:24:55Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278918#M31747</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Yamil&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I have made LPDDR2 400MHz work on i.MX6Q ARM2 board before, please refer to below flash_header.S, search for LPDDR2, but you may need to adjust the parameter according to your LPDDR2's freq and size.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;config.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;asm/arch/mx6.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_FLASH_HEADER&lt;/P&gt;&lt;P&gt;#ifndef CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;# error "Must define the offset of flash header"&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#ifndef CONFIG_FLASH_PLUG_IN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/********************DCD mode***********************/&lt;/P&gt;&lt;P&gt;#define CPU_2_BE_32(l) \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((((l) &amp;amp; 0x000000FF) &amp;lt;&amp;lt; 24) | \&lt;/P&gt;&lt;P&gt;&amp;nbsp; (((l) &amp;amp; 0x0000FF00) &amp;lt;&amp;lt; 8)&amp;nbsp; | \&lt;/P&gt;&lt;P&gt;&amp;nbsp; (((l) &amp;amp; 0x00FF0000) &amp;gt;&amp;gt; 8)&amp;nbsp; | \&lt;/P&gt;&lt;P&gt;&amp;nbsp; (((l) &amp;amp; 0xFF000000) &amp;gt;&amp;gt; 24))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MXC_DCD_ITEM(i, addr, val)&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;dcd_node_##i:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word CPU_2_BE_32(addr) ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word CPU_2_BE_32(val)&amp;nbsp; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.section ".text.flasheader", "x"&lt;/P&gt;&lt;P&gt;&amp;nbsp; b _start&lt;/P&gt;&lt;P&gt;&amp;nbsp; .org CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ivt_header:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x402000D1 /* Tag=0xD1, Len=0x0020, Ver=0x40 */&lt;/P&gt;&lt;P&gt;app_code_jump_v:&amp;nbsp; .word _start&lt;/P&gt;&lt;P&gt;reserv1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x0&lt;/P&gt;&lt;P&gt;dcd_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word dcd_hdr&lt;/P&gt;&lt;P&gt;boot_data_ptr:&amp;nbsp; .word boot_data&lt;/P&gt;&lt;P&gt;self_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word ivt_header&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_SECURE_BOOT&lt;/P&gt;&lt;P&gt;app_code_csf:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word __hab_data&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;app_code_csf:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x0&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;reserv2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;boot_data:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word TEXT_BASE&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_SECURE_BOOT&lt;/P&gt;&lt;P&gt;image_len:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word __hab_data_end - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;image_len:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;plugin:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if defined CONFIG_MX6DL_DDR3&lt;/P&gt;&lt;P&gt;dcd_hdr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x40E002D2 /* Tag=0xD2, Len=91*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x04DC02CC /* Tag=0xCC, Len=91*8 + 4, Param=0x04 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# IOMUXC_BASE_ADDR&amp;nbsp; = 0x20e0000&lt;/P&gt;&lt;P&gt;# DDR IO TYPE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x798, 0x000c0000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;# Clock&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x588, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x594, 0x00000030)&lt;/P&gt;&lt;P&gt;# Address&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x56c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x578, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x74c, 0x00000030)&lt;/P&gt;&lt;P&gt;# Control&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x57c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x590, 0x00003000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x598, 0x00003000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x59c, 0x00003030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x5a0, 0x00003030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x78c, 0x00000030)&lt;/P&gt;&lt;P&gt;# Data Strobe&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x5a8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x5b0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x524, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x51c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x518, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x50c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x5b8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x5c0, 0x00000030)&lt;/P&gt;&lt;P&gt;# DATA&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x784, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x788, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x794, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x79c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x7a0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x7a4, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x7a8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x748, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x5ac, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x5b4, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x528, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x520, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x514, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x510, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x5bc, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x5c4, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# MMDC_P0_BASE_ADDR = 0x021b0000&lt;/P&gt;&lt;P&gt;# MMDC_P1_BASE_ADDR = 0x021b4000&lt;/P&gt;&lt;P&gt;# Calibrations&lt;/P&gt;&lt;P&gt;# ZQ&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;# write leveling&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, MMDC_P0_BASE_ADDR + 0x80c, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, MMDC_P0_BASE_ADDR + 0x810, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, MMDC_P1_BASE_ADDR + 0x80c, 0x00370037)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P1_BASE_ADDR + 0x810, 0x00370037)&lt;/P&gt;&lt;P&gt;# DQS gating, read delay, write delay calibration values&lt;/P&gt;&lt;P&gt;# based on calibration compare of 0x00ffff00&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, MMDC_P0_BASE_ADDR + 0x83c, 0x422f0220)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, MMDC_P0_BASE_ADDR + 0x840, 0x021f0219)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P1_BASE_ADDR + 0x83C, 0x422f0220)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x840, 0x022d022f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x848, 0x47494b49)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P1_BASE_ADDR + 0x848, 0x48484c47)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x850, 0x39382b2f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P1_BASE_ADDR + 0x850, 0x2f35312c)&lt;/P&gt;&lt;P&gt;# read data bit delay&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(55, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(56, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(57, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(58, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(59, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(60, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(61, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;# Complete calibration by forced measurment&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;# MMDC init:&lt;/P&gt;&lt;P&gt;# in DDR3, 64-bit mode, only MMDC0 is initiated:&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x004, 0x0002002d)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P0_BASE_ADDR + 0x008, 0x00333030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x00c, 0x40445323)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x010, 0xb66e8c63)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x014, 0x01ff00db)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x018, 0x00081740)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x02c, 0x000026d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x030, 0x00440e21)&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_DDR_32BIT&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x040, 0x00000017)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x000, 0xc3190000)&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x040, 0x00000027)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x000, 0xc31a0000)&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# Initialize 2GB DDR3 - Micron MT41J128M&lt;/P&gt;&lt;P&gt;# MR2&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P0_BASE_ADDR + 0x01c, 0x04008032)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x01c, 0x0400803a)&lt;/P&gt;&lt;P&gt;# MR3&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P0_BASE_ADDR + 0x01c, 0x00008033)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x01c, 0x0000803b)&lt;/P&gt;&lt;P&gt;# MR1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P0_BASE_ADDR + 0x01c, 0x00428031)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x01c, 0x00428039)&lt;/P&gt;&lt;P&gt;# MR0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x01c, 0x07208030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x01c, 0x07208038)&lt;/P&gt;&lt;P&gt;# ZQ calibration&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x01c, 0x04008040)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P0_BASE_ADDR + 0x01c, 0x04008048)&lt;/P&gt;&lt;P&gt;# final DDR setup&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P0_BASE_ADDR + 0x020, 0x00005800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x818, 0x00000007)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P1_BASE_ADDR + 0x818, 0x00000007)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P0_BASE_ADDR + 0x004, 0x0002556d)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(90, MMDC_P1_BASE_ADDR + 0x004, 0x00011006)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(91, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#elif defined CONFIG_MX6DL_LPDDR2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dcd_hdr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x408803D2 /* Tag=0xD2, Len=112*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x048403CC /* Tag=0xCC, Len=112*8 + 4, Param=0x04 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# IOMUX SETTINGS&lt;/P&gt;&lt;P&gt;# IOMUXC_BASE_ADDR = 0x020e0000&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x4bc, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x4c0, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x4c4, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x4c8, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS4 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x4cc, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS5 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x4d0, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS6 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x4d4, 0x00003028)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS7 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x4d8, 0x00003028)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x470, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x474, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x478, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x47c, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM4 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x480, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM5 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x484, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM6 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x488, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM7 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x48c, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x464, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x490, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x4ac, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x4b0, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x494, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x4a4, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x4a8, 0x00000038)&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2&lt;/P&gt;&lt;P&gt; * DSE can be configured using Group Control Register:&lt;/P&gt;&lt;P&gt; * IOMUXC_SW_PAD_CTL_GRP_CTLDS&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x4a0, 0x00000000)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x4b4, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x4b8, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B0DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x764, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B1DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x770, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B2DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x778, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B3DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x77c, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B4DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x780, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B5DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x784, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B6DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x78c, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B7DS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x748, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_ADDDS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x74c, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_CTLDS */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x76c, 0x00000038)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDRPKE */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x754, 0x00000000)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDRMODE */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x760, 0x00020000)&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x774, 0x00080000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * DDR Controller Registers&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * Manufacturer: Mocron&lt;/P&gt;&lt;P&gt; * Device Part Number: MT42L64M64D2KH-18&lt;/P&gt;&lt;P&gt; * Clock Freq.: 528MHz&lt;/P&gt;&lt;P&gt; * MMDC channels: Both MMDC0, MMDC1&lt;/P&gt;&lt;P&gt; *Density per CS in Gb: 256M&lt;/P&gt;&lt;P&gt; * Chip Selects used: 2&lt;/P&gt;&lt;P&gt; * Number of Banks: 8&lt;/P&gt;&lt;P&gt; * Row address:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&lt;/P&gt;&lt;P&gt; * Column address: 9&lt;/P&gt;&lt;P&gt; * Data bus width 32&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# MMDC_P0_BASE_ADDR = 0x021b0000&lt;/P&gt;&lt;P&gt;# MMDC_P1_BASE_ADDR = 0x021b4000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDSCR, set the Configuration request bit during MMDC set up */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDSCR, set the Configuration request bit during MMDC set up */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, MMDC_P1_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*LPDDR2 ZQ params */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, MMDC_P0_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, MMDC_P1_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# Calibration setup.&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPZQHWCTRL, enable on time ZQ calibration */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*ca bus abs delay */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x890, 0x00400000)&lt;/P&gt;&lt;P&gt;/*ca bus abs delay */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x890, 0x00400000)&lt;/P&gt;&lt;P&gt;/* values of 20,40,50,60,7f tried. no difference seen */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPWRCADL */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, MMDC_P1_BASE_ADDR + 0x8bc, 0x00055555)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*frc_msr.*/&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;/*frc_msr.*/&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY0DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY1DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY2DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY3DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY0DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(55, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY1DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(56, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY2DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(57, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY3DL3 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(58, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Read and write data delay, per byte.&lt;/P&gt;&lt;P&gt; * For optimized DDR operation it is recommended to run mmdc_calibration&lt;/P&gt;&lt;P&gt; * on your board, and replace 4 delay register assigns with resulted values&lt;/P&gt;&lt;P&gt; * Note:&lt;/P&gt;&lt;P&gt; * a. DQS gating is not relevant for LPDDR2. DSQ gating calibration section&lt;/P&gt;&lt;P&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp; should be skipped, or the write/read calibration comming after that&lt;/P&gt;&lt;P&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp; will stall&lt;/P&gt;&lt;P&gt; * b. The calibration code that runs for both MMDC0 &amp;amp; MMDC1 should be used.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(59, MMDC_P0_BASE_ADDR + 0x848, 0x4b4b524f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(60, MMDC_P1_BASE_ADDR + 0x848, 0x494f4c44)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(61, MMDC_P0_BASE_ADDR + 0x850, 0x3c3d303c)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P1_BASE_ADDR + 0x850, 0x3c343d38)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*dqs gating dis */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x840, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P1_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P1_BASE_ADDR + 0x840, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*clk delay */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x858, 0xa00)&lt;/P&gt;&lt;P&gt;/*clk delay */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P1_BASE_ADDR + 0x858, 0xa00)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*frc_msr */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;/*frc_msr */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;# Calibration setup end&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel0 - startng address 0x80000000 */&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P0_BASE_ADDR + 0x00c, 0x34386145)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDPDC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x004, 0x00020036)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x010, 0x00100c83)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG2 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x014, 0x000000Dc)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDMISC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x018, 0x0000174C)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDRWD;*/&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P0_BASE_ADDR + 0x02c, 0x0f9f26d2)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDOR */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x030, 0x0000020e)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG3LP */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P0_BASE_ADDR + 0x038, 0x00190778)&lt;/P&gt;&lt;P&gt;/* MMDC0_MDOTC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x008, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* CS0_END */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P0_BASE_ADDR + 0x040, 0x0000005f)&lt;/P&gt;&lt;P&gt;/* ROC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x404, 0x0000000f)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCTL */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x000, 0xc3010000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel1 - starting address 0x10000000 */&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P1_BASE_ADDR + 0x00c, 0x34386145)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC1_MDPDC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P1_BASE_ADDR + 0x004, 0x00020036)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG1 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P1_BASE_ADDR + 0x010, 0x00100c83)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG2 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P1_BASE_ADDR + 0x014, 0x000000Dc)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDMISC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P1_BASE_ADDR + 0x018, 0x0000174C)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDRWD;*/&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P1_BASE_ADDR + 0x02c, 0x0f9f26d2)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDOR */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P1_BASE_ADDR + 0x030, 0x0000020e)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG3LP */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(90, MMDC_P1_BASE_ADDR + 0x038, 0x00190778)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDOTC */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(91, MMDC_P1_BASE_ADDR + 0x008, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* CS0_END */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(92, MMDC_P1_BASE_ADDR + 0x040, 0x0000003f)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCTL */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(93, MMDC_P1_BASE_ADDR + 0x000, 0xc3010000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel0 : Configure DDR device:*/&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=63 MR_OP=0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(94, MMDC_P0_BASE_ADDR + 0x01c, 0x003f8030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=10 MR_OP=ff */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(95, MMDC_P0_BASE_ADDR + 0x01c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=1&amp;nbsp; MR_OP=a2 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(96, MMDC_P0_BASE_ADDR + 0x01c, 0xa2018030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=2&amp;nbsp; MR_OP=6. tcl=8, tcwl=4 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(97, MMDC_P0_BASE_ADDR + 0x01c, 0x06028030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=3&amp;nbsp; MR_OP=2.drive=240/6 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(98, MMDC_P0_BASE_ADDR + 0x01c, 0x01038030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel1 : Configure DDR device:*/&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=63 MR_OP=0 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(99, MMDC_P1_BASE_ADDR + 0x01c, 0x003f8030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=10 MR_OP=ff */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(100, MMDC_P1_BASE_ADDR + 0x01c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=1&amp;nbsp; MR_OP=a2 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(101, MMDC_P1_BASE_ADDR + 0x01c, 0xa2018030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=2&amp;nbsp; MR_OP=6. tcl=8, tcwl=4 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(102, MMDC_P1_BASE_ADDR + 0x01c, 0x06028030)&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=3&amp;nbsp; MR_OP=2.drive=240/6 */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(103, MMDC_P1_BASE_ADDR + 0x01c, 0x01038030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDREF */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(104, MMDC_P0_BASE_ADDR + 0x020, 0x00005800)&lt;/P&gt;&lt;P&gt;/* MMDC1_MDREF */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(105, MMDC_P1_BASE_ADDR + 0x020, 0x00005800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPODTCTRL */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(106, MMDC_P0_BASE_ADDR + 0x818, 0x0)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPODTCTRL */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(107, MMDC_P1_BASE_ADDR + 0x818, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * calibration values based on calibration compare of 0x00ffff00:&lt;/P&gt;&lt;P&gt; * Note, these calibration values are based on Freescale's board&lt;/P&gt;&lt;P&gt; * May need to run calibration on target board to fine tune these&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPZQHWCTRL, enable automatic ZQ calibration */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(108, MMDC_P0_BASE_ADDR + 0x800, 0xa1310003)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPMUR0, frc_msr */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(109, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPMUR0, frc_msr */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(110, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * MMDC0_MDSCR, clear this register&lt;/P&gt;&lt;P&gt; * (especially the configuration bit as initialization is complete)&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(111, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * MMDC0_MDSCR, clear this register&lt;/P&gt;&lt;P&gt; * (especially the configuration bit as initialization is complete)&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(112, MMDC_P1_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#elif defined(CONFIG_LPDDR2)&lt;/P&gt;&lt;P&gt;dcd_hdr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x40F003D2 /* Tag=0xD2, Len=125*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x04EC03CC /* Tag=0xCC, Len=125*8 + 4, Param=0x04 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DCD */&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(1, CCM_BASE_ADDR + 0x18, 0x60324)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x5a8, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x5b0, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x524, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x51c, 0x00003038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x518, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x50c, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x5b8, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x5c0, 0x00003038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x5ac, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x5b4, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x528, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x520, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x514, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x510, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x5bc, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x5c4, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x56c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x578, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x588, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x594, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x57c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x590, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x598, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x59c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x5a0, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x784, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x788, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x794, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x79c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x7a0, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x7a4, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x7a8, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x748, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x74c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x78c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, IOMUXC_BASE_ADDR + 0x798, 0x00080000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, MMDC_P1_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, MMDC_P0_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, MMDC_P1_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, MMDC_P0_BASE_ADDR + 0x890, 0x00400000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P1_BASE_ADDR + 0x890, 0x00400000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x8bc, 0x00055555)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(55, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(56, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(57, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(58, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(59, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(60, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(61, MMDC_P0_BASE_ADDR + 0x82c, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P0_BASE_ADDR + 0x830, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x834, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x838, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P1_BASE_ADDR + 0x82c, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P1_BASE_ADDR + 0x830, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P1_BASE_ADDR + 0x834, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P1_BASE_ADDR + 0x838, 0xf3333333)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x848, 0x49383b39)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x850, 0x30364738)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P1_BASE_ADDR + 0x848, 0x3e3c3846)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P1_BASE_ADDR + 0x850, 0x4c294b35)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x840, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P1_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P1_BASE_ADDR + 0x840, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x858, 0xf00)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P1_BASE_ADDR + 0x858, 0xf00)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P1_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0xc, 0x555a61a5)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x4, 0x20036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x10, 0x160e83)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x14, 0xdd)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P0_BASE_ADDR + 0x18, 0x8174c)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P0_BASE_ADDR + 0x2c, 0xf9f26d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x30, 0x20e)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P0_BASE_ADDR + 0x38, 0x200aac)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P0_BASE_ADDR + 0x8, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(90, MMDC_P0_BASE_ADDR + 0x40, 0x5f)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(91, MMDC_P0_BASE_ADDR + 0x0, 0xc3010000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(92, MMDC_P1_BASE_ADDR + 0xc, 0x555a61a5)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(93, MMDC_P1_BASE_ADDR + 0x4, 0x20036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(94, MMDC_P1_BASE_ADDR + 0x10, 0x160e83)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(95, MMDC_P1_BASE_ADDR + 0x14, 0xdd)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(96, MMDC_P1_BASE_ADDR + 0x18, 0x8174c)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(97, MMDC_P1_BASE_ADDR + 0x2c, 0xf9f26d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(98, MMDC_P1_BASE_ADDR + 0x30, 0x20e)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(99, MMDC_P1_BASE_ADDR + 0x38, 0x200aac)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(100, MMDC_P1_BASE_ADDR + 0x8, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(101, MMDC_P1_BASE_ADDR + 0x40, 0x3f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(102, MMDC_P1_BASE_ADDR + 0x0, 0xc3010000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(103, MMDC_P0_BASE_ADDR + 0x1c, 0x3f8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(104, MMDC_P0_BASE_ADDR + 0x1c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(105, MMDC_P0_BASE_ADDR + 0x1c, 0xc2018030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(106, MMDC_P0_BASE_ADDR + 0x1c, 0x6028030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(107, MMDC_P0_BASE_ADDR + 0x1c, 0x2038030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(108, MMDC_P1_BASE_ADDR + 0x1c, 0x3f8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(109, MMDC_P1_BASE_ADDR + 0x1c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(110, MMDC_P1_BASE_ADDR + 0x1c, 0xc2018030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(111, MMDC_P1_BASE_ADDR + 0x1c, 0x6028030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(112, MMDC_P1_BASE_ADDR + 0x1c, 0x2038030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(113, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(114, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(115, MMDC_P0_BASE_ADDR + 0x20, 0x7800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(116, MMDC_P1_BASE_ADDR + 0x20, 0x7800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(117, MMDC_P0_BASE_ADDR + 0x818, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(118, MMDC_P1_BASE_ADDR + 0x818, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(119, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(120, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(121, MMDC_P0_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(122, MMDC_P1_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(123, MMDC_P0_BASE_ADDR + 0x1c, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(124, MMDC_P1_BASE_ADDR + 0x1c, 0x0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(125, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#elif defined CONFIG_LPDDR2POP&lt;/P&gt;&lt;P&gt;dcd_hdr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x40F003D2 /* Tag=0xD2, Len=125*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x04E403CC /* Tag=0xCC, Len=125*8 + 4, Param=0x04 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# CCM_BASE_ADDR = 0x020c4000&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(1, CCM_BASE_ADDR + 0x068, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, CCM_BASE_ADDR + 0x06c, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, CCM_BASE_ADDR + 0x070, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, CCM_BASE_ADDR + 0x074, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, CCM_BASE_ADDR + 0x078, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, CCM_BASE_ADDR + 0x07c, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, CCM_BASE_ADDR + 0x080, 0xffffffff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, CCM_BASE_ADDR + 0x084, 0xffffffff)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#Switch PL301_FAST2 to DDR Dual-channel mapping&lt;/P&gt;&lt;P&gt;#However, it is not accessable by DCD, consider put it later in "dram_init"&lt;/P&gt;&lt;P&gt;# GPV0_BASE_ADDR = 0x00B00000&lt;/P&gt;&lt;P&gt;/*MXC_DCD_ITEM(9, GPV0_BASE_ADDR, 0x00000001)*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# IOMUXC_BASE_ADDR&amp;nbsp; = 0x20e0000&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x588, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x594, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x56c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x578, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x57c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x590, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x598, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x59c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x5a0, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x74c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x78c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x5a8, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x5b0, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x524, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x51c, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x518, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x50c, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x5b8, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x5c0, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x798, 0x00080000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x784, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x788, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x794, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x79c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x7a0, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x7a4, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x7a8, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x748, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, IOMUXC_BASE_ADDR + 0x5ac, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, IOMUXC_BASE_ADDR + 0x5b4, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, IOMUXC_BASE_ADDR + 0x528, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, IOMUXC_BASE_ADDR + 0x520, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, IOMUXC_BASE_ADDR + 0x514, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, IOMUXC_BASE_ADDR + 0x510, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, IOMUXC_BASE_ADDR + 0x5bc, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, IOMUXC_BASE_ADDR + 0x5c4, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# MMDC_P0_BASE_ADDR = 0x021b0000&lt;/P&gt;&lt;P&gt;# MMDC_P1_BASE_ADDR = 0x021b4000&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P1_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P1_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(55, MMDC_P1_BASE_ADDR + 0x8bc, 0x00055555)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(56, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(57, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(58, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(59, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(60, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(61, MMDC_P1_BASE_ADDR + 0x828, 0x33333303)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P0_BASE_ADDR + 0x82c, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x830, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x834, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x838, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P1_BASE_ADDR + 0x82c, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P1_BASE_ADDR + 0x830, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P1_BASE_ADDR + 0x834, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P1_BASE_ADDR + 0x838, 0xf3333303)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x848, 0x39313035)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P1_BASE_ADDR + 0x848, 0x39313c42)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x850, 0x2e424a44)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P1_BASE_ADDR + 0x850, 0x4c374640)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x840, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P1_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P1_BASE_ADDR + 0x840, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P0_BASE_ADDR + 0x00c, 0x555A61A5)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x004, 0x00020036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x010, 0x00160E83)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x014, 0x000000DD)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x018, 0x0000174C)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P0_BASE_ADDR + 0x02c, 0x0f9f26d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P0_BASE_ADDR + 0x030, 0x0000020e)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x038, 0x00220aac)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P0_BASE_ADDR + 0x008, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P0_BASE_ADDR + 0x040, 0x0000005f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(90, MMDC_P0_BASE_ADDR + 0x000, 0xc3010000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(91, MMDC_P1_BASE_ADDR + 0x00c, 0x555A61A5)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(92, MMDC_P1_BASE_ADDR + 0x004, 0x00020036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(93, MMDC_P1_BASE_ADDR + 0x010, 0x00160E83)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(94, MMDC_P1_BASE_ADDR + 0x014, 0x000000DD)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(95, MMDC_P1_BASE_ADDR + 0x018, 0x0000174C)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(96, MMDC_P1_BASE_ADDR + 0x02c, 0x0f9f26d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(97, MMDC_P1_BASE_ADDR + 0x030, 0x0000020e)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(98, MMDC_P1_BASE_ADDR + 0x038, 0x00220aac)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(99, MMDC_P1_BASE_ADDR + 0x008, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(100, MMDC_P1_BASE_ADDR + 0x040, 0x0000003f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(101, MMDC_P1_BASE_ADDR + 0x000, 0xc3010000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(102, MMDC_P0_BASE_ADDR + 0x01c, 0x003f8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(103, MMDC_P0_BASE_ADDR + 0x01c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(104, MMDC_P0_BASE_ADDR + 0x01c, 0xc2018030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(105, MMDC_P0_BASE_ADDR + 0x01c, 0x06028030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(106, MMDC_P0_BASE_ADDR + 0x01c, 0x01038030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(107, MMDC_P1_BASE_ADDR + 0x01c, 0x003f8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(108, MMDC_P1_BASE_ADDR + 0x01c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(109, MMDC_P1_BASE_ADDR + 0x01c, 0xc2018030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(110, MMDC_P1_BASE_ADDR + 0x01c, 0x06028030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(111, MMDC_P1_BASE_ADDR + 0x01c, 0x01038030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(112, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(113, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(114, MMDC_P0_BASE_ADDR + 0x020, 0x00007800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(115, MMDC_P1_BASE_ADDR + 0x020, 0x00007800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(116, MMDC_P0_BASE_ADDR + 0x818, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(117, MMDC_P1_BASE_ADDR + 0x818, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(118, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(119, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(120, MMDC_P0_BASE_ADDR + 0x004, 0x00025576)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(121, MMDC_P1_BASE_ADDR + 0x004, 0x00025576)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(122, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(123, MMDC_P1_BASE_ADDR + 0x404, 0x00011006)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(124, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(125, MMDC_P1_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;dcd_hdr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x40D802D2 /* Tag=0xD2, Len=90*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x04D402CC /* Tag=0xCC, Len=90*8 + 4, Param=0x04 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DCD */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x5a8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x5b0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x524, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x51c, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x518, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x50c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x5b8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x5c0, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x5ac, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x5b4, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x528, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x520, 0x00020030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x514, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x510, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x5bc, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x5c4, 0x00020030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x56c, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x578, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x588, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x594, 0x00020030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x57c, 0x00020030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x590, 0x00003000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x598, 0x00003000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x59c, 0x00003030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x5a0, 0x00003030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x784, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x788, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x794, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x79c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x7a0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x7a4, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x7a8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x748, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x74c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x78c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x798, 0x000C0000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P0_BASE_ADDR + 0x018, 0x00081740)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x00c, 0x555A7975)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P0_BASE_ADDR + 0x010, 0xFF538E64)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x014, 0x01FF00DB)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P0_BASE_ADDR + 0x02c, 0x000026D2)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(55, MMDC_P0_BASE_ADDR + 0x030, 0x005B0E21)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(56, MMDC_P0_BASE_ADDR + 0x008, 0x09444040)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(57, MMDC_P0_BASE_ADDR + 0x004, 0x00025576)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(58, MMDC_P0_BASE_ADDR + 0x040, 0x00000027)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(59, MMDC_P0_BASE_ADDR + 0x000, 0xC31A0000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(60, MMDC_P0_BASE_ADDR + 0x01c, 0x04088032)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(61, MMDC_P0_BASE_ADDR + 0x01c, 0x0408803A)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P0_BASE_ADDR + 0x01c, 0x00008033)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x01c, 0x0000803B)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x01c, 0x00428031)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x01c, 0x00428039)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P0_BASE_ADDR + 0x01c, 0x09408030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x01c, 0x09408038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x01c, 0x04008040)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x01c, 0x04008048)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x800, 0xA1380003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P1_BASE_ADDR + 0x800, 0xA1380003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x020, 0x00005800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x818, 0x00000007)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P1_BASE_ADDR + 0x818, 0x00000007)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x83c, 0x434B0350)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P0_BASE_ADDR + 0x840, 0x034C0359)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P1_BASE_ADDR + 0x83c, 0x434B0350)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P1_BASE_ADDR + 0x840, 0x03650348)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x848, 0x4436383B)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P1_BASE_ADDR + 0x848, 0x39393341)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x850, 0x35373933)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P1_BASE_ADDR + 0x850, 0x48254A36)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x80c, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x810, 0x001F001F)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P1_BASE_ADDR + 0x80c, 0x00440044)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P1_BASE_ADDR + 0x810, 0x00440044)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(90, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define ROM_API_TABLE_BASE_ADDR (0x000000C0)&lt;/P&gt;&lt;P&gt;#define ROM_API_HWCNFG_SETUP_OFFSET (0x08)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*****************PLUGIN IN mode********************/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_MX6DL_LPDDR2&lt;/P&gt;&lt;P&gt;.section ".text.flasheader", "x"&lt;/P&gt;&lt;P&gt;origin:&lt;/P&gt;&lt;P&gt;&amp;nbsp; b _start&lt;/P&gt;&lt;P&gt;&amp;nbsp; .org CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* First IVT to copy the plugin that initializes the system into OCRAM */&lt;/P&gt;&lt;P&gt;ivt_header:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x402000D1&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Tag=0xD1, Len=0x0020, Ver=0x40 */&lt;/P&gt;&lt;P&gt;app_code_jump_v:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long IRAM_FREE_START + (plugin_start - origin)&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Plugin entry point, address after the second IVT table */&lt;/P&gt;&lt;P&gt;reserv1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;dcd_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;boot_data_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long IRAM_FREE_START + (boot_data - origin) /*0x00907420*/&lt;/P&gt;&lt;P&gt;self_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long IRAM_FREE_START + (ivt_header - origin)&lt;/P&gt;&lt;P&gt;app_code_csf:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;reserv2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;boot_data:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long IRAM_FREE_START&lt;/P&gt;&lt;P&gt;image_len:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 16*1024&amp;nbsp; /* plugin can be upto 16KB in size */&lt;/P&gt;&lt;P&gt;plugin:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x1&amp;nbsp; /* Enable plugin flag */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Second IVT to give entry point into the bootloader copied to DDR */&lt;/P&gt;&lt;P&gt;ivt2_header:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x402000D1&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Tag=0xD1, Len=0x0020, Ver=0x40 */&lt;/P&gt;&lt;P&gt;app2_code_jump_v:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long _start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Entry point for uboot */&lt;/P&gt;&lt;P&gt;reserv3:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;dcd2_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;boot_data2_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long boot_data2&lt;/P&gt;&lt;P&gt;self_ptr2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long ivt2_header&lt;/P&gt;&lt;P&gt;app_code_csf2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;reserv4:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;boot_data2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long TEXT_BASE&lt;/P&gt;&lt;P&gt;image_len2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;plugin2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Here starts the plugin code */&lt;/P&gt;&lt;P&gt;plugin_start:&lt;/P&gt;&lt;P&gt;/* Save the return address and the function arguments */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; {r0-r4, lr}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * The following is following MX6DL LPDDR2 init script&lt;/P&gt;&lt;P&gt; * "MX6DL_init_LPDDR2_400MHz_1.0.inc"&lt;/P&gt;&lt;P&gt; * With the change of Switch PL301_FAST2 to DDR Dual-channel&lt;/P&gt;&lt;P&gt; * mapping on&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/*init script for i.MX6DL LPDDR2*/&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* Revision History*/&lt;/P&gt;&lt;P&gt;/* v1.00 : Init version for Micron MT42L64M64D2KH-18 on CPU LPDDR2 board.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; It's currently soldered, not PoPed.*/&lt;/P&gt;&lt;P&gt;/* Seen passing with overclocking DDR stress test up to 475MHz.*/&lt;/P&gt;&lt;P&gt;/* If someone is playing this init on different DDR device, or on PoPed&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; board, please feedback me with result.*/&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:boaz.perlman@freescale.com"&gt;boaz.perlman@freescale.com&lt;/A&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* CCM_BASE_ADDR = 0x020C4000 */&lt;/P&gt;&lt;P&gt;/*DDR clk to 400MHz*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =CCM_BASE_ADDR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00060324&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x018]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*IPU2_IPU_CLOCK and IPU1_IPU_CLOCK is necessary for setting&lt;/P&gt;&lt;P&gt;&amp;nbsp; the Dual-Channel Mode*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0xFFFFFFC3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x074]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* GPV0_BASE_ADDR = 0x00B00000*/&lt;/P&gt;&lt;P&gt;/* Switch PL301_FAST2 to DDR Dual-channel mapping*/&lt;/P&gt;&lt;P&gt;/* Setting This bit to 0x1 will Cause 0x80000000 mapping to Channel 0 and&lt;/P&gt;&lt;P&gt; * 0x10000000 mapping to Channel 1, setting it to 0x0 will only map&lt;/P&gt;&lt;P&gt; * Channel 0 to 0x10000000*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =GPV0_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000001&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x000]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* IOMUX*/&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* IOMUXC_BASE_ADDR = 0x020E0000*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =IOMUXC_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4bc]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4c0]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4c4]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4c8]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS4*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4cc]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS5*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4d0]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS6*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4d4]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS7*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4d8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x470]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x474]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x478]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x47c]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM4*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x480]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM5*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x484]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM6*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x488]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM7*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x48c]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x464]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x490]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4ac]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4b0]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00080038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x494]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4a4]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCKE1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4a8]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be configured using Group Control&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4a0]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4b4]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x4b8]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B0DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x764]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B1DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x770]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B2DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x778]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B3DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x77c]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B4DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x780]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B5DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x784]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B6DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x78c]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_B7DS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x748]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_ADDDS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x74c]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_CTLDS*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x76c]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00020000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x750]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDRPKE*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x754]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDRMODE*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00020000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x760]&lt;/P&gt;&lt;P&gt;/* IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00080000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0, #0x774]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* DDR Controller Registers*/&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* Manufacturer: Mocron*/&lt;/P&gt;&lt;P&gt;/* Device Part Number: MT42L64M64D2KH-18*/&lt;/P&gt;&lt;P&gt;/* Clock Freq.: 528MHz*/&lt;/P&gt;&lt;P&gt;/* MMDC channels: Both MMDC0, MMDC1*/&lt;/P&gt;&lt;P&gt;/*Density per CS in Gb: 256M*/&lt;/P&gt;&lt;P&gt;/* Chip Selects used: 2*/&lt;/P&gt;&lt;P&gt;/* Number of Banks: 8*/&lt;/P&gt;&lt;P&gt;/* Row address:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14*/&lt;/P&gt;&lt;P&gt;/* Column address: 9*/&lt;/P&gt;&lt;P&gt;/* Data bus width 32*/&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* MMDC_P0_BASE_ADDR = 0x021b0000 */&lt;/P&gt;&lt;P&gt;/* MMDC_P1_BASE_ADDR = 0x021b4000 */&lt;/P&gt;&lt;P&gt;/* MMDC0_MDSCR, set the Configuration request bit during MMDC set up*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =MMDC_P0_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =MMDC_P1_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00008000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDSCR, set the Configuration request bit during MMDC set up*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00008000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*LPDDR2 ZQ params*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x1b5f01ff&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x85c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x1b5f01ff&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x85c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* Calibration setup.*/&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPZQHWCTRL, enable on time ZQ calibration*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xa1390003&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x800]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*ca bus abs delay*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00400000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x890]&lt;/P&gt;&lt;P&gt;/*ca bus abs delay*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00400000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x890]&lt;/P&gt;&lt;P&gt;/* values of 20,40,50,60,7f tried. no difference seen*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*frc_msr.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x8b8]&lt;/P&gt;&lt;P&gt;/*frc_msr.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x8b8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY0DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x81c]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY1DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x820]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY2DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x824]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPREDQBY3DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x828]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY0DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x81c]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY1DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x820]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY2DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x824]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPREDQBY3DL3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x828]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*write delayes:*/&lt;/P&gt;&lt;P&gt;/*setmem /32 0x021b082c = 0xf3333333 all byte 0 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;/*all byte 1 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x830]&lt;/P&gt;&lt;P&gt;/*all byte 2 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x834]&lt;/P&gt;&lt;P&gt;/*all byte 3 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x838]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*all byte 0 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x82c]&lt;/P&gt;&lt;P&gt;/*all byte 1 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x830]&lt;/P&gt;&lt;P&gt;/*all byte 2 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x834]&lt;/P&gt;&lt;P&gt;/*all byte 3 data &amp;amp; dm delayed by 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xf3333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x838]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Read and write data delay, per byte.*/&lt;/P&gt;&lt;P&gt;/* For optimized DDR operation it is recommended to run mmdc_calibration on&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; your board, and replace 4 delay register assigns with resulted values*/&lt;/P&gt;&lt;P&gt;/* Note:*/&lt;/P&gt;&lt;P&gt;/* a. DQS gating is not relevant for LPDDR2. DSQ gating calibration section&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; should be skipped, or the write/read calibration comming after that&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; will stall*/&lt;/P&gt;&lt;P&gt;/* b. The calibration code that runs for both MMDC0 &amp;amp; MMDC1 should be used.*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*it is strongly recommended to run calibration on your board, and replace&lt;/P&gt;&lt;P&gt;&amp;nbsp; bellow values:*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Read calibration*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x444A4F4D&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x848]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x4B4E4042&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x848]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Write calibration*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x312E272E&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x850]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x28302E2B&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x850]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*dqs gating dis*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x20000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x83c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x840]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x20000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x83c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x840]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*setmem /32 0x021b0858 = 0xa00 clk delay*/&lt;/P&gt;&lt;P&gt;/*setmem /32 0x021b4858 = 0xa00 clk delay*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*frc_msr*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x8b8]&lt;/P&gt;&lt;P&gt;/*frc_msr*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x8b8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* Calibration setup end*/&lt;/P&gt;&lt;P&gt;/*========================================================================*/&lt;/P&gt;&lt;P&gt;/* Channel0 - startng address 0x80000000*/&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x3f436133&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x00c]&lt;/P&gt;&lt;P&gt;/* MMDC0_MDPDC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00020024&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x004]&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00100A82&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x010]&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000093&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x014]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDMISC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000174C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x018]&lt;/P&gt;&lt;P&gt;/* MMDC0_MDRWD;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0f9f26d2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x02c]&lt;/P&gt;&lt;P&gt;/* MMDC0_MDOR*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000020e&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x030]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCFG3LP*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x001a099a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x038]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDOTC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x008]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* CS0_END*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000005f&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x040]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ROC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000000f&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x404]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDCTL*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xc3010000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x000]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel1 - starting address 0x10000000*/&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x3f436133&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x00c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC1_MDPDC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00020024&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x004]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG1*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00100A82&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x010]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000093&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x014]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDMISC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000174C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x018]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDRWD;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0f9f26d2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x02c]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDOR*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000020e&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x030]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCFG3LP*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x001a099a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x038]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDOTC*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x008]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* CS0_END*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x0000003f&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x040]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC1_MDCTL*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xc3010000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x000]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel0 : Configure DDR device:*/&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=63 MR_OP=0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x003f8030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=10 MR_OP=ff*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xff0a8030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=1&amp;nbsp; MR_OP=c2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xc2018030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=2&amp;nbsp; MR_OP=4. tcl=6, tcwl=3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x04028030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=3&amp;nbsp; MR_OP=2.drive=240/6*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x02038030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Channel1 : Configure DDR device:*/&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=63 MR_OP=0*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x003f8030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=10 MR_OP=ff*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xff0a8030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=1&amp;nbsp; MR_OP=c2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xc2018030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=2&amp;nbsp; MR_OP=4. tcl=6, tcwl=3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x04028030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;/* MRW: BA=0 CS=0 MR_ADDR=3&amp;nbsp; MR_OP=2.drive=240/6*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x02038030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDREF*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00005800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x020]&lt;/P&gt;&lt;P&gt;/* MMDC1_MDREF*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00005800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x020]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPODTCTRL*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x818]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPODTCTRL*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x818]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*######################################################*/&lt;/P&gt;&lt;P&gt;/*calibration values based on calibration compare of 0x00ffff00:*/&lt;/P&gt;&lt;P&gt;/*Note, these calibration values are based on Freescale's board*/&lt;/P&gt;&lt;P&gt;/*May need to run calibration on target board to fine tune these*/&lt;/P&gt;&lt;P&gt;/*######################################################*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPZQHWCTRL, enable automatic ZQ calibration*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0xa1310003&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x800]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPMUR0, frc_msr*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x8b8]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPMUR0, frc_msr*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x8b8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* MMDC0_MDSCR, clear this register (especially the configuration&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bit as initialization is complete)*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x01c]&lt;/P&gt;&lt;P&gt;/* MMDC0_MDSCR, clear this register (especially the configuration&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; bit as initialization is complete)*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x01c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P0_MPMUR0, frc_msr*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r0, #0x8b8]&lt;/P&gt;&lt;P&gt;/* DDR_PHY_P1_MPMUR0, frc_msr*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r2, [r1, #0x8b8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * End of LPDDR init script&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The following is to fill in those arguments for this ROM function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pu_irom_hwcnfg_setup(void **start, size_t *bytes, const void *boot_data)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This function is used to copy data from the storage media into DDR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start - Initial (possibly partial) image load address on entry.&amp;nbsp; Final&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; image load address on exit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes - Initial (possibly partial) image size on entry.&amp;nbsp; Final image size&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on exit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_data - Initial @ref ivt Boot Data load address.&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr r0, DDR_DEST_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr r1, COPY_SIZE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr r2, BOOT_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * check the _pu_irom_api_table for the address&lt;/P&gt;&lt;P&gt; * pu_irom_hwcnfg_setup is in 0x1fb5&amp;nbsp; ERIC : &amp;lt; what is the address in Rigel &amp;gt;&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;before_calling_rom___pu_irom_hwcnfg_setup:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r3, =ROM_API_TABLE_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r4, [r3, #ROM_API_HWCNFG_SETUP_OFFSET]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blx r4&lt;/P&gt;&lt;P&gt;after_calling_rom___pu_irom_hwcnfg_setup:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* To return to ROM from plugin, we need to fill in these argument.&lt;/P&gt;&lt;P&gt; * Here is what need to do:&lt;/P&gt;&lt;P&gt; * Need to construct the paramters for this function before return to ROM:&lt;/P&gt;&lt;P&gt; * plugin_download(void **start, size_t *bytes, UINT32 *ivt_offset)&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pop {r0-r4, lr}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r5, DDR_DEST_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r5, [r0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r5, COPY_SIZE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r5, [r1]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r5, #0x400&amp;nbsp; /* Point to the second IVT table at offset 0x42C */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add r5, r5, #0x2C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r5, [r2]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r0, #1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bx lr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* return back to ROM code */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DDR_DEST_ADDR:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; TEXT_BASE&lt;/P&gt;&lt;P&gt;COPY_SIZE:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;BOOT_DATA:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; TEXT_BASE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*DDR clock:480MHz, ipg clock:40MHz, AHB clock:80MHz*/&lt;/P&gt;&lt;P&gt;#define CONFIG_IPG_40M_FR_PLL3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.section ".text.flasheader", "x"&lt;/P&gt;&lt;P&gt;&amp;nbsp; b _start&lt;/P&gt;&lt;P&gt;&amp;nbsp; .org CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* First IVT to copy the plugin that initializes the system into OCRAM */&lt;/P&gt;&lt;P&gt;ivt_header:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x402000D1&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Tag=0xD1, Len=0x0020, Ver=0x40 */&lt;/P&gt;&lt;P&gt;app_code_jump_v:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x00907458&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Plugin entry point, address after the second IVT table */&lt;/P&gt;&lt;P&gt;reserv1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;dcd_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;boot_data_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x00907420&lt;/P&gt;&lt;P&gt;self_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x00907400&lt;/P&gt;&lt;P&gt;app_code_csf:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;reserv2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;boot_data:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x00907000&lt;/P&gt;&lt;P&gt;image_len:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 16*1024&amp;nbsp; /* plugin can be upto 16KB in size */&lt;/P&gt;&lt;P&gt;plugin:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x1&amp;nbsp; /* Enable plugin flag */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Second IVT to give entry point into the bootloader copied to DDR */&lt;/P&gt;&lt;P&gt;ivt2_header:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x402000D1&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Tag=0xD1, Len=0x0020, Ver=0x40 */&lt;/P&gt;&lt;P&gt;app2_code_jump_v:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long _start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Entry point for uboot */&lt;/P&gt;&lt;P&gt;reserv3:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;dcd2_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;boot_data2_ptr:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long boot_data2&lt;/P&gt;&lt;P&gt;self_ptr2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long ivt2_header&lt;/P&gt;&lt;P&gt;app_code_csf2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;reserv4:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;boot_data2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long TEXT_BASE&lt;/P&gt;&lt;P&gt;image_len2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;plugin2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .long 0x0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Here starts the plugin code */&lt;/P&gt;&lt;P&gt;plugin_start:&lt;/P&gt;&lt;P&gt;/* Save the return address and the function arguments */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; {r0-r4, lr}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * Note: The DDR settings provided below are specific to Freescale development boards and are the latest settings at the time of release.&lt;/P&gt;&lt;P&gt; * However, it is recommended to contact your Freescale representative in case there are any improvements to these settings.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;#ifdef CONFIG_IPG_40M_FR_PLL3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*select pll3 for ipg clk 40M */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =CCM_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, [r0,#0x14]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x2000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; orr r1, r1, r2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x1c00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bic r1, r2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =0x1400&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; orr r1, r1, r2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x14]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*enable pll3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =ANATOP_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x10000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x28]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x3040&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x24]&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Init the DDR according the init script */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =CCM_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* select 528MHz for pre_periph_clk_sel */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00020324&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x18]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* IOMUX setting */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =IOMUXC_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5a8]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5b0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x524]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x51c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x518]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x50c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5b8]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5c0]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00020030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5ac]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5b4]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x528]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x520]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x514]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x510]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5bc]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5c4]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x56c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x578]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x588]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x594]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x57c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x590]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x598]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x58c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00003030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x59c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x5a0]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x784]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x788]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x794]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x79c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x7a0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x7a4]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x7a8]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x748]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x74c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x00020000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x750]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x758]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x00020000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x774]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x78c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r1, #0x000c0000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x798]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize 2GB DDR3 - Micron MT41J128M */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =MMDC_P0_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r2, =MMDC_P1_BASE_ADDR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x33333333&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x81c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x820]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x824]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x828]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x81c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x820]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x824]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x828]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00081740&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x18]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00008000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x555a7975&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x0c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0xff538e64&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x10]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x01ff00db&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x14]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x000026d2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x2c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x005b0e21&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x30]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x94444040&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x08]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00020036&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x04]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000027&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x40]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0xc31a0000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x00]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x04088032&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x0408803a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00008033&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x0000803b&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00428031&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00428039&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x09408030&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x09408038&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x04008040&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x04008048&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0xa5380003&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x800]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0xa5380003&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x800]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00005800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x20]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000007&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x818]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000007&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x818]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x433f033f&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x83c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x033f033f&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x840]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x433f033f&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x83c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x0344033b&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x840]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x4337373e&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x848]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x3634303d&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x848]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x35374640&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x850]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x4a294b35&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x850]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x001F001F&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x80c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x001F001F&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x810]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00440044&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x80c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00440044&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x810]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x8b8]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x8b8]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00000000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x1c]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The following is to fill in those arguments for this ROM function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pu_irom_hwcnfg_setup(void **start, size_t *bytes, const void *boot_data)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This function is used to copy data from the storage media into DDR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start - Initial (possibly partial) image load address on entry.&amp;nbsp; Final image load address on exit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bytes - Initial (possibly partial) image size on entry.&amp;nbsp; Final image size on exit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_data - Initial @ref ivt Boot Data load address.&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr r0, DDR_DEST_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr r1, COPY_SIZE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adr r2, BOOT_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * check the _pu_irom_api_table for the address&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;before_calling_rom___pu_irom_hwcnfg_setup:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r3, =ROM_API_TABLE_BASE_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r4, [r3, #ROM_API_HWCNFG_SETUP_OFFSET]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blx r4&lt;/P&gt;&lt;P&gt;after_calling_rom___pu_irom_hwcnfg_setup:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* To return to ROM from plugin, we need to fill in these argument.&lt;/P&gt;&lt;P&gt; * Here is what need to do:&lt;/P&gt;&lt;P&gt; * Need to construct the paramters for this function before return to ROM:&lt;/P&gt;&lt;P&gt; * plugin_download(void **start, size_t *bytes, UINT32 *ivt_offset)&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pop {r0-r4, lr}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r5, DDR_DEST_ADDR&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r5, [r0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r5, COPY_SIZE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r5, [r1]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r5, #0x400&amp;nbsp; /* Point to the second IVT table at offset 0x42C */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add r5, r5, #0x2C&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r5, [r2]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov r0, #1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bx lr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* return back to ROM code */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DDR_DEST_ADDR:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; TEXT_BASE&lt;/P&gt;&lt;P&gt;COPY_SIZE:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;BOOT_DATA:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; TEXT_BASE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; _end_of_copy&amp;nbsp; - TEXT_BASE + CONFIG_FLASH_HEADER_OFFSET&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .word&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;/*********************************************************************/&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Jul 2013 02:47:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278918#M31747</guid>
      <dc:creator>AnsonHuang</dc:creator>
      <dc:date>2013-07-03T02:47:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278919#M31748</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #8b8b8b; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12.800000190734863px;"&gt;Hi &lt;/SPAN&gt;&lt;A _jive_internal="true" data-avatarid="1035" data-content-finding="Community" data-externalid="" data-online="false" data-presence="null" data-userid="203063" data-username="AnsonHuang" href="https://community.nxp.com/people/AnsonHuang" style="font-size: 12.800000190734863px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #8ca9cd;"&gt;Yongcai,&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Have you (or anyone else) managed to make LPDDR2 to work with 528MHz on the ARM2 (or similar)?&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 May 2014 06:14:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278919#M31748</guid>
      <dc:creator>oferfederovsky</dc:creator>
      <dc:date>2014-05-29T06:14:22Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278920#M31749</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;No, I guess you only need to config the MMDC clock and apply 528M LPDDR2 script to make it work at 528MHz.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 May 2014 07:30:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278920#M31749</guid>
      <dc:creator>AnsonHuang</dc:creator>
      <dc:date>2014-05-29T07:30:59Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278921#M31750</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the reply.&lt;/P&gt;&lt;P&gt;We didn't manage to use the script to make it work (I guess you are talking about this excel tool: &lt;A href="https://community.nxp.com/docs/DOC-95089"&gt;i.Mx6DQSDL LPDDR2 Script Aid&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;However, we &lt;STRONG&gt;do&lt;/STRONG&gt; have a fully working setup for our custom board, with 400MHz.&lt;/P&gt;&lt;P&gt;This is our setup:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;i.mx6q AC (MCIMX6Q5EYM10AC)&lt;/LI&gt;&lt;LI&gt;LPDDR2: SAMSUNG &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;4Gb(128M x32) LPDDR2-S4 SDRAM + 4Gb(128M x32) LPDDR2-S4 SDRAM &lt;/SPAN&gt;216FBGA, 12x12 (K3PE7E70QM-BGC2)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;From the calibration tool:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDR Stress Test (1.0.2) for MX6DQ&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Build: Dec 10 2013, 12:31:54&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Freescale Semiconductor, Inc&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;******************************&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;=======&lt;/SPAN&gt;DDR configuration&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;==========&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;BOOT_CFG3[5-4]: 0x00, Single DDR channel&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;DDR type is LPDDR2 in 1-channel mode&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Data width: 64, bank num: 8&lt;/P&gt;&lt;P&gt;Row size: 14, col size: 10&lt;/P&gt;&lt;P&gt;Chip select CSD0 is used&lt;/P&gt;&lt;P&gt;Density per chip select: 1024MB&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="HE" style="font-family: 'Arial','sans-serif';"&gt;==================================&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="text-decoration: underline;"&gt;Here is the working DCD values (for 400MHz):&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* DCD */&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;/* 400MHz */&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;MXC_DCD_ITEM(1, CCM_BASE_ADDR + 0x18, 0x60324)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// SDQS0..7&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x5a8, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x5b0, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x524, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x51c, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x518, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x50c, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x5b8, 0x00003038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x5c0, 0x00003038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// DQM0..7&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x5ac, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x5b4, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x528, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x520, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x514, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x510, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x5bc, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x5c4, 0x00000038)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// CAS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x56c, 0x00000038)&lt;/P&gt;&lt;P&gt;// RAS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x578, 0x00000038)&lt;/P&gt;&lt;P&gt;// SDCLK_0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x588, 0x00000038)&lt;/P&gt;&lt;P&gt;// SDCLK_1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x594, 0x00000038)&lt;/P&gt;&lt;P&gt;// RESET&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x57c, 0x00000038)&lt;/P&gt;&lt;P&gt;// SDCKE0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x590, 0x00000038)&lt;/P&gt;&lt;P&gt;// SDCKE1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x598, 0x00000038)&lt;/P&gt;&lt;P&gt;// SDBA2&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;// SDODT0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x59c, 0x00000038)&lt;/P&gt;&lt;P&gt;// SDODT1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x5a0, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_B0..7DS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x784, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x788, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x794, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x79c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x7a0, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x7a4, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x7a8, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x748, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_ADDDS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x74c, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_DDRMODE_CTL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;// GRP_DDRPKE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;// GRP_DDRMODE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;// GRP_CTLDS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x78c, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_DDR_TYPE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, IOMUXC_BASE_ADDR + 0x798, 0x00080000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;// MMDC/DDR read delay calibration&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;// MXC_DCD_ITEM(126, MMDC_P0_BASE_ADDR + 0x860, 0x10)&lt;/P&gt;&lt;P&gt;// MMDC/DDR Write delay calibration&lt;/P&gt;&lt;P&gt;// MXC_DCD_ITEM(127, MMDC_P0_BASE_ADDR + 0x864, 0x10)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;// MDSCR&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, MMDC_P1_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;// MPZQLP2CTL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, MMDC_P0_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, MMDC_P1_BASE_ADDR + 0x85c, 0x1b5f01ff)&lt;/P&gt;&lt;P&gt;// MPZQHWCTRL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;// MPPDCMPR2&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, MMDC_P0_BASE_ADDR + 0x890, 0x00400000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P1_BASE_ADDR + 0x890, 0x00400000)&lt;/P&gt;&lt;P&gt;// MPWRCADL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x8bc, 0x00055555)&lt;/P&gt;&lt;P&gt;// MPMUR0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;// MPRDDQBY0..3DL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(55, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(56, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(57, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(58, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(59, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(60, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;// MPWRDQBY0..3DL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(61, MMDC_P0_BASE_ADDR + 0x82c, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P0_BASE_ADDR + 0x830, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x834, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x838, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P1_BASE_ADDR + 0x82c, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P1_BASE_ADDR + 0x830, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P1_BASE_ADDR + 0x834, 0xf3333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P1_BASE_ADDR + 0x838, 0xf3333333)&lt;/P&gt;&lt;P&gt;// MPRDDLCTL, MPWRDLCTL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x848, 0x3e36383c)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x850, 0x32363432)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P1_BASE_ADDR + 0x848, 0x3c3c3a42)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P1_BASE_ADDR + 0x850, 0x3a2e3c36)&lt;/P&gt;&lt;P&gt;// MPDGCTL0..1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x840, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P1_BASE_ADDR + 0x83c, 0x20000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P1_BASE_ADDR + 0x840, 0x0)&lt;/P&gt;&lt;P&gt;// MPSDCTRL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x858, 0xf00)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P1_BASE_ADDR + 0x858, 0xf00)&lt;/P&gt;&lt;P&gt;// MPMUR0 (second time?)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P1_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;// MDCFG0, MDPDC, MDCFG1, MDCFG2, MDMISC, MDRWD, MDOR, MDCFG3LP, MDOTC, MDASP, MDCTL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0xc, 0x555a61a5)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x4, 0x20036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x10, 0x160e83)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x14, 0xdd)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P0_BASE_ADDR + 0x18, 0x8174c)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P0_BASE_ADDR + 0x2c, 0xf9f26d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x30, 0x20e)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P0_BASE_ADDR + 0x38, 0x200aac)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P0_BASE_ADDR + 0x8, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(90, MMDC_P0_BASE_ADDR + 0x40, 0x27) // was 0x5f&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(91, MMDC_P0_BASE_ADDR + 0x0, 0x83120000)&lt;/P&gt;&lt;P&gt;// MDCFG0, MDPDC, MDCFG1, MDCFG2, MDMISC, MDRWD, MDOR, MDCFG3LP, MDOTC, MDASP, MDCTL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(92, MMDC_P1_BASE_ADDR + 0xc, 0x555a61a5)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(93, MMDC_P1_BASE_ADDR + 0x4, 0x20036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(94, MMDC_P1_BASE_ADDR + 0x10, 0x160e83)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(95, MMDC_P1_BASE_ADDR + 0x14, 0xdd)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(96, MMDC_P1_BASE_ADDR + 0x18, 0x8174c)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(97, MMDC_P1_BASE_ADDR + 0x2c, 0xf9f26d2)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(98, MMDC_P1_BASE_ADDR + 0x30, 0x20e)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(99, MMDC_P1_BASE_ADDR + 0x38, 0x200aac)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(100, MMDC_P1_BASE_ADDR + 0x8, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(101, MMDC_P1_BASE_ADDR + 0x40, 0x17) // was 0x3f&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(102, MMDC_P1_BASE_ADDR + 0x0, 0x83120000)&lt;/P&gt;&lt;P&gt;// MDSCR*5&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(103, MMDC_P0_BASE_ADDR + 0x1c, 0x3f8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(104, MMDC_P0_BASE_ADDR + 0x1c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(105, MMDC_P0_BASE_ADDR + 0x1c, 0xc2018030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(106, MMDC_P0_BASE_ADDR + 0x1c, 0x6028030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(107, MMDC_P0_BASE_ADDR + 0x1c, 0x2038030)&lt;/P&gt;&lt;P&gt;// MDSCR*5&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(108, MMDC_P1_BASE_ADDR + 0x1c, 0x3f8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(109, MMDC_P1_BASE_ADDR + 0x1c, 0xff0a8030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(110, MMDC_P1_BASE_ADDR + 0x1c, 0xc2018030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(111, MMDC_P1_BASE_ADDR + 0x1c, 0x6028030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(112, MMDC_P1_BASE_ADDR + 0x1c, 0x2038030)&lt;/P&gt;&lt;P&gt;// MPZQHWCTRL (second time?)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(113, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(114, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;// MDREF&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(115, MMDC_P0_BASE_ADDR + 0x20, 0x7800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(116, MMDC_P1_BASE_ADDR + 0x20, 0x7800)&lt;/P&gt;&lt;P&gt;// MDODTCTRL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(117, MMDC_P0_BASE_ADDR + 0x818, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(118, MMDC_P1_BASE_ADDR + 0x818, 0x0)&lt;/P&gt;&lt;P&gt;// MPZQHWCTRL (third time?)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(119, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(120, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;// MPMUR0 (second time?)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(121, MMDC_P0_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(122, MMDC_P1_BASE_ADDR + 0x8b8, 0x800)&lt;/P&gt;&lt;P&gt;// MDSCR (again)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(123, MMDC_P0_BASE_ADDR + 0x1c, 0x0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(124, MMDC_P1_BASE_ADDR + 0x1c, 0x0)&lt;/P&gt;&lt;P&gt;// MAPSR&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(125, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are trying to switch to 528MHz, but keep failing.&lt;/P&gt;&lt;P&gt;Can you tell us which values to modify?&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Ofer&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 May 2014 15:30:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278921#M31750</guid>
      <dc:creator>oferfederovsky</dc:creator>
      <dc:date>2014-05-29T15:30:05Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278922#M31751</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Ofer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sorry that I am not MMDC expert, I do NOT have any idea of adjusting these MMDC settings, you may need to involve MMDC expert to help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 May 2014 02:26:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278922#M31751</guid>
      <dc:creator>AnsonHuang</dc:creator>
      <dc:date>2014-05-30T02:26:53Z</dc:date>
    </item>
    <item>
      <title>Re: Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278923#M31752</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The enclosed may be helpful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 May 2014 08:46:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278923#M31752</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-05-30T08:46:11Z</dc:date>
    </item>
    <item>
      <title>Re: Re: Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278924#M31753</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the reply, but we are still struggling with the LPDDR2 in 528MHz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We did manage to complete boot-up in 528MHz, but the system is unstable:&lt;/P&gt;&lt;P&gt;&amp;nbsp; * We have some failures when running memory tests.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * According to the test results, the failures are in 1 or 2 single bits of the data.&lt;/P&gt;&lt;P&gt;&amp;nbsp; * We have some random segmentation faults in user processes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What we did to get us this far:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* We started with our 400MHz setup (listed above).&lt;/P&gt;&lt;P&gt;* We changed the freq to 528MHz by: MXC_DCD_ITEM(1, CCM_BASE_ADDR + 0x18, 0x20324)&lt;/P&gt;&lt;P&gt;* Calibration (using freescale tool)&lt;/P&gt;&lt;P&gt;&amp;nbsp; * The tool failed to complete the calibration.&lt;/P&gt;&lt;P&gt;&amp;nbsp; * We played with register MMDC Duty Cycle Control Register (MMDC1_MPDCCR):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x8c0, 0x24911492)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * MXC_DCD_ITEM(65, MMDC_P1_BASE_ADDR + 0x8c0, 0x24911492)&lt;/P&gt;&lt;P&gt;&amp;nbsp; * Now, the calibration tool ran successfully, and we used the calibration results in our u-boot.&lt;/P&gt;&lt;P&gt;* At this point we noticed that suspend/resume stopped working for us.&lt;/P&gt;&lt;P&gt;&amp;nbsp; * Once going into suspend, we got hang.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;* To overcome this, we played with register MMDC PHY ZQ HW control register (MMDCx_MPZQHWCTRL),&lt;/P&gt;&lt;P&gt;&amp;nbsp; which for some reason we had it written 3 times (per channel):&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1) MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x800, 0xa1390000)&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2) MXC_DCD_ITEM(115, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MXC_DCD_ITEM(116, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003)&lt;/P&gt;&lt;P&gt;&amp;nbsp; 3) MXC_DCD_ITEM(121, MMDC_P0_BASE_ADDR + 0x800, 0xa1390003) // Causes problems - suspend / resume&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MXC_DCD_ITEM(122, MMDC_P1_BASE_ADDR + 0x800, 0xa1390003) // Causes problems - suspend / resume&lt;/P&gt;&lt;P&gt;&amp;nbsp; * Removing the (redundant?) 3'rd write, for some reason, fixed this suspend/resume issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, now we still need to overcome the stability issue.&lt;/P&gt;&lt;P&gt;We noticed, that we have more failures when the temperature changes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We tried to play with the IOMUX OTD values and the termination values of the pads, but we didn't see any influence.&lt;/P&gt;&lt;P&gt;We tried to boot from both sd-card and NOR, but we didn't notice any difference.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Attached is our current configuration.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is most appreciated.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Ofer&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Jun 2014 07:26:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278924#M31753</guid>
      <dc:creator>oferfederovsky</dc:creator>
      <dc:date>2014-06-12T07:26:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278925#M31754</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Yuri,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you know by fact that what you sent us actually works?&lt;/P&gt;&lt;P&gt;Can you tell us on which hardware? was it on evaluation board?&lt;/P&gt;&lt;P&gt;And please, in which mode does it work (&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12.800000190734863px;"&gt;BOOT_CFG[5:4])?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Ofer&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Jun 2014 07:20:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278925#M31754</guid>
      <dc:creator>oferfederovsky</dc:creator>
      <dc:date>2014-06-16T07:20:31Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278926#M31755</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1.&lt;/P&gt;&lt;P&gt;Is it possible to try DDR_INPUT bit of IOMUXC_SW_PAD_CTL_PAD_DRAM_xxx registers as “1”.&lt;/P&gt;&lt;P&gt;(Differential input mode)&amp;nbsp; ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" class="moz-txt-link-rfc2396E" href="https://community.nxp.com/message/409137#409137"&gt;https://community.freescale.com/message/409137#409137 &lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2.&lt;/P&gt;&lt;P&gt;DSE filed of DRAM signals (0x38) is set for maximum driving strength – is this reasonable ?&lt;/P&gt;&lt;P&gt;Did the customer use different DSE options ?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jun 2014 06:04:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278926#M31755</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-06-20T06:04:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278927#M31756</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Following your reply, I tried to use differential input mode, but the results were worse.&lt;/P&gt;&lt;P&gt;2. We tried several values for drive-strength and on-die-termination&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; We didn't notice any change when using different on-die termination values.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; We didn't notice any difference when using 34Ohm or 40Ohm in drive-strength field.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The results with other values were worse.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are there any other ideas?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;Here is the IOMUX configuration I used (DDR_INPUT = 1 == differential)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;// SDQS0..7&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x5a8, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x5b0, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x524, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x51c, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x518, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x50c, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x5b8, 0x00023038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x5c0, 0x00023038)&lt;/P&gt;&lt;P&gt;// DQM0..7&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x5ac, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x5b4, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x528, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x520, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x514, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x510, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x5bc, 0x00020038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x5c4, 0x00020038)&lt;/P&gt;&lt;P&gt;// CAS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x56c, 0x00020038)&lt;/P&gt;&lt;P&gt;// RAS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x578, 0x00020038)&lt;/P&gt;&lt;P&gt;// SDCLK_0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x588, 0x00020038)&lt;/P&gt;&lt;P&gt;// SDCLK_1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x594, 0x00020038)&lt;/P&gt;&lt;P&gt;// RESET&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x57c, 0x00020038)&lt;/P&gt;&lt;P&gt;// SDCKE0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x590, 0x00020038)&lt;/P&gt;&lt;P&gt;// SDCKE1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x598, 0x00020038)&lt;/P&gt;&lt;P&gt;// SDBA2&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;// SDODT0&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x59c, 0x00020038)&lt;/P&gt;&lt;P&gt;// SDODT1&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x5a0, 0x00020038)&lt;/P&gt;&lt;P&gt;// GRP_B0..7DS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x784, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x788, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x794, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x79c, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x7a0, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x7a4, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x7a8, 0x00000038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x748, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_ADDDS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x74c, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_DDRMODE_CTL&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;// GRP_DDRPKE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;// GRP_DDRMODE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;// GRP_CTLDS&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, IOMUXC_BASE_ADDR + 0x78c, 0x00000038)&lt;/P&gt;&lt;P&gt;// GRP_DDR_TYPE&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, IOMUXC_BASE_ADDR + 0x798, 0x00080000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Ofer&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jun 2014 06:59:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278927#M31756</guid>
      <dc:creator>oferfederovsky</dc:creator>
      <dc:date>2014-06-24T06:59:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to modify Bootloader and kernel to support LPDDR2?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278928#M31757</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Also one can vary DDR_SEL options. Basically DDR_SEL (say, in IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE&lt;/P&gt;&lt;P&gt;register) is intended to adjust drive strength, which is mainly configured via DSE field.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Jul 2014 05:01:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-modify-Bootloader-and-kernel-to-support-LPDDR2/m-p/278928#M31757</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-07-04T05:01:54Z</dc:date>
    </item>
  </channel>
</rss>

