<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: IOMUX/DCD DRAM configuration confusion... in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259178#M25537</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ed,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Actually the preferred value for register 0x020e057c is 0x00020030. This will set the input as differential. And yes, both values work fine, so the other setting is not exactly wrong, but just not preferred because of the threshold values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards.&lt;/P&gt;&lt;P&gt;Jorge.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 03 Dec 2013 21:52:37 GMT</pubDate>
    <dc:creator>JorgeRama_rezRi</dc:creator>
    <dc:date>2013-12-03T21:52:37Z</dc:date>
    <item>
      <title>IOMUX/DCD DRAM configuration confusion...</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259175#M25534</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm using a SABRESDB which has 64-bit DDR3 DRAM.&amp;nbsp; My custom hardware will have 32-bit DDR3 DRAM.&lt;/P&gt;&lt;P&gt;So, I'm working through creation of my custom DCD setup (in latest uboot, this is the file board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg).&lt;/P&gt;&lt;P&gt;I started with the very helpful spreadsheet from &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-93963"&gt;https://community.freescale.com/docs/DOC-93963&lt;/A&gt;, and I'm now just walking through this&lt;/P&gt;&lt;P&gt;to make sure I understand the settings.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I see at least one case where the DDR_SEL field is set as RESERVED when it appears to me that it should be set to DDR3.&lt;/P&gt;&lt;P&gt;I realize that in many cases, the PAD setting is taken from the corresponding GRP register, but according to the reference manual&lt;/P&gt;&lt;P&gt;this DDR_SEL field of IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET is not covered by the IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE register.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The line (taken from board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;DATA 4 0x020e057c 0x00020030&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is for the IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET, and leaves the DDR_SEL bitfield set to 00 (RESERVED0).&lt;/P&gt;&lt;P&gt;I cross-checked this with the older (LTIB) uboot which has the code in flash_header.S and it has this line:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x57c, 0x00000030)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;which not only doesn't set the DDR_SEL bits, but also has a different value for the DDR_INPUT field.&lt;/P&gt;&lt;P&gt;The spreadsheet tool appears to match the setting that was used in flash_header.S.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since the DRAM_RESET pin is not covered by the IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE setting, shouldn't its DDR_SEL bitfield be 11 (DDR3)?&lt;/P&gt;&lt;P&gt;Also, it seems to me that the DDR_INPUT should be 0 (CMOS)???&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've ran with both of these configurations and the system seems to work just fine; but I'd like to make sure I'm properly configuring these pins.&lt;/P&gt;&lt;P&gt;Can someone &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;clarify what settings are the correct ones here?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 Nov 2013 15:05:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259175#M25534</guid>
      <dc:creator>EdSutter</dc:creator>
      <dc:date>2013-11-05T15:05:17Z</dc:date>
    </item>
    <item>
      <title>Re: IOMUX/DCD DRAM configuration confusion...</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259176#M25535</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: black;"&gt;Hi Ed,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: black;"&gt;Yes, for IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET[DDR_SEL] you should use 00. Long story short, it affects other pins in the processor and 00 is the correct setting. You can use it since it doesn't affect the DDR speed. Our reference manual should be updated with this info soon. 00 will be the value to select and the rest will be reserved.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Calibri','sans-serif'; color: black; font-size: 11pt;"&gt;And about the DDR_INPUT bit, it should be &lt;SPAN style="text-decoration: line-through;"&gt;&lt;SPAN style="color: #c0c0c0; text-decoration: line-through;"&gt;0&lt;/SPAN&gt;&lt;/SPAN&gt; 1. You may notice later that we have this same setting on the DDR clock pins configurations (I've received this question before too), we also set them as CMOS instead of differential. This is why: Configuring DDR clock pins as CMOS inputs / Differential inputs is meaningless, because the DDR clock pins are never inputs. They are only outputs. What is CMOS input / Differential input? This configures the voltage level at which the pins senses a transition from logic low to logic high and from logic high to logic low. In differential mode, the pins transitions from logic low to logic high at 50% logic level going from low level to high level (for DDR3, 0.75V). The pin transitions from logic high to logic low at 50% logic level going from high level to low level. In CMOS input mode, the pins transitions from logic low to logic high at 80% logic level going from low level to high level (for DDR3, 1.2V). The pin transitions from logic high to logic low at 20% logic level going from high level to low level (for DDR3, 0.3V). While this is not technically part of the DDR standards, the pin design group decided to add this feature (CMOS mode) in case there were timing problems. Since differential mode works as expected, it is the preferred mode. If it would never used for DDR clock pins, why is it included? All DDR3 pads/pins are designed together as a group. They are identical, and have identical functionality.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Calibri','sans-serif'; color: black; font-size: 11pt;"&gt;Best regards.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Calibri','sans-serif'; color: black; font-size: 11pt;"&gt;Jorge.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Nov 2013 21:41:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259176#M25535</guid>
      <dc:creator>JorgeRama_rezRi</dc:creator>
      <dc:date>2013-11-21T21:41:15Z</dc:date>
    </item>
    <item>
      <title>Re: Re: IOMUX/DCD DRAM configuration confusion...</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259177#M25536</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Jorge,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Ok, thanks for responding.&amp;nbsp; I wanna be clear on this...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;You're saying that the setting in LTIB u-boot...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'courier new', courier;"&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x57c, 0x00000030)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial, helvetica, sans-serif;"&gt;is correct and the value in newer mainline uboot (which uses a totally different mechanism to build the DCD)...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'courier new', courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'courier new', courier;"&gt;DATA 4 0x020e057c 0x00020030&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial, helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial, helvetica, sans-serif;"&gt;is incorrect, right?&amp;nbsp; I wanna make sure I get this right because empirically both settings work,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial, helvetica, sans-serif;"&gt;and having this wrong could possibly cause long-term degradation of the device.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: arial, helvetica, sans-serif;"&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'courier new', courier;"&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Ed&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 20:50:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259177#M25536</guid>
      <dc:creator>EdSutter</dc:creator>
      <dc:date>2013-11-25T20:50:07Z</dc:date>
    </item>
    <item>
      <title>Re: IOMUX/DCD DRAM configuration confusion...</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259178#M25537</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ed,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Actually the preferred value for register 0x020e057c is 0x00020030. This will set the input as differential. And yes, both values work fine, so the other setting is not exactly wrong, but just not preferred because of the threshold values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards.&lt;/P&gt;&lt;P&gt;Jorge.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Dec 2013 21:52:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259178#M25537</guid>
      <dc:creator>JorgeRama_rezRi</dc:creator>
      <dc:date>2013-12-03T21:52:37Z</dc:date>
    </item>
    <item>
      <title>Re: IOMUX/DCD DRAM configuration confusion...</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259179#M25538</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jorge,&lt;/P&gt;&lt;P&gt;Ok, so if 0x00020030 is the correct setting for register 0x020e057c, this equates to DDR_INPUT bit being '1' (Differential).&amp;nbsp; &lt;/P&gt;&lt;P&gt;It would probably be a good idea to remove the bottom paragraph of your earlier post that says it should be '0', just to avoid confusion for future readers.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;Ed&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2013 13:11:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259179#M25538</guid>
      <dc:creator>EdSutter</dc:creator>
      <dc:date>2013-12-04T13:11:11Z</dc:date>
    </item>
    <item>
      <title>Re: IOMUX/DCD DRAM configuration confusion...</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259180#M25539</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jorge&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;About&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In&lt;/SPAN&gt;&lt;SPAN&gt; the below &lt;/SPAN&gt;&lt;SPAN&gt;attached&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;example set to the &lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Bit#19.18&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;DDR_SEL&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;00&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;But &lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;I think I&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;DDR3&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;"11" is &lt;/SPAN&gt;&lt;SPAN&gt;correct.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Debated&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Comunity&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;"00"&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;is&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;correct answer&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Also&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;same&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;register&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Bit&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;# 17&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;DDR_INPUT&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;is&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;example&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;configuration&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;but&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;in&lt;/SPAN&gt;&lt;SPAN&gt; the &lt;/SPAN&gt;&lt;SPAN&gt;Community&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Bit&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;# 17&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;SPAN&gt;1" &lt;/SPAN&gt;&lt;SPAN&gt;,Is this &lt;/SPAN&gt;&lt;SPAN&gt;correct&lt;/SPAN&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Arial, Helvetica, sans-serif; font-size: 10pt;"&gt;-------------------- Example settings-------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;/=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//init script for i.MX6DL DDR3&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Revision History&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// v01&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;wait = on&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Disable WDOG&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//setmem /16 0x020bc000 = 0x30 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Enable all clocks (they are disabled by ROM code)&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020c4068 = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c406c = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c4070 = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c4074 = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c4078 = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c407c = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c4080 = 0xffffffff &lt;/P&gt;&lt;P&gt;setmem /32 0x020c4084 = 0xffffffff &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// IOMUX&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//DDR IO TYPE:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0774 = 0x000C0000 // IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0754 = 0x00000000 // IOMUXC_SW_PAD_CTL_GRP_DDRPKE &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//CLOCK:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04ac = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0&lt;/P&gt;&lt;P&gt;setmem /32 0x020e04b0 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//ADDRESS:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0464 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS&lt;/P&gt;&lt;P&gt;setmem /32 0x020e0490 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS&lt;/P&gt;&lt;P&gt;setmem /32 0x020e074c = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_ADDDS &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//CONTROL:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0494 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04a0 = 0x00000000 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be configured using Group Control Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS&lt;/P&gt;&lt;P&gt;setmem /32 0x020e04b4 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0&lt;/P&gt;&lt;P&gt;setmem /32 0x020e04b8 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1&lt;/P&gt;&lt;P&gt;setmem /32 0x020e076c = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_CTLDS &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//DATA STROBE:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0750 = 0x00020000 // IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04bc = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04c0 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04c4 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04c8 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04cc = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS4 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04d0 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS5 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04d4 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS6 &lt;/P&gt;&lt;P&gt;setmem /32 0x020e04d8 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS7 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//DATA:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0760 = 0x00020000 // IOMUXC_SW_PAD_CTL_GRP_DDRMODE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0764 = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B0DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0770 = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B1DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0778 = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B2DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e077c = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B3DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0780 = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B4DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0784 = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B5DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e078c = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B6DS &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0748 = 0x00000030 // IOMUXC_SW_PAD_CTL_GRP_B7DS &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x020e0470 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0&lt;/P&gt;&lt;P&gt;setmem /32 0x020e0474 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1&lt;/P&gt;&lt;P&gt;setmem /32 0x020e0478 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2&lt;/P&gt;&lt;P&gt;setmem /32 0x020e047c = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3&lt;/P&gt;&lt;P&gt;setmem /32 0x020e0480 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM4&lt;/P&gt;&lt;P&gt;setmem /32 0x020e0484 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM5&lt;/P&gt;&lt;P&gt;setmem /32 0x020e0488 = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM6&lt;/P&gt;&lt;P&gt;setmem /32 0x020e048c = 0x00000030 // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM7&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// DDR Controller Registers&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Manufacturer: Micron&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Device Part Number: MT41J128M16HA-15E&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Clock Freq.:&amp;nbsp; 400MHz&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Density per CS in Gb:&amp;nbsp; 8&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Chip Selects used: 1&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Number of Banks: 8&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Row address:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Column address:&amp;nbsp; 10&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Data bus width 64&amp;nbsp; &lt;/P&gt;&lt;P&gt;//=============================================================================&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0800 = 0xa1390003&amp;nbsp; // DDR_PHY_P0_MPZQHWCTRL, enable both one-time &amp;amp; periodic HW ZQ calibration.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// write leveling, based on Freescale board layout and T topology&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// For target board, may need to run write leveling calibration&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// to fine tune these settings&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// If target board does not use T topology, then these registers&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// should either be cleared or write leveling calibration can be run&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b080c =&amp;nbsp; 0x001F001F &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0810 =&amp;nbsp; 0x001F001F &lt;/P&gt;&lt;P&gt;setmem /32 0x021b480c =&amp;nbsp; 0x001F001F &lt;/P&gt;&lt;P&gt;setmem /32 0x021b4810 =&amp;nbsp; 0x001F001F &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//######################################################&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//calibration values based on calibration compare of 0x00ffff00:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//Note, these calibration values are based on Freescale's board&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//May need to run calibration on target board to fine tune these&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//######################################################&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//Read DQS Gating calibration&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b083c = 0x4220021F // MPDGCTRL0 PHY0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0840 = 0x0207017E // MPDGCTRL1 PHY0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b483c = 0x4201020C // MPDGCTRL0 PHY1&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4840 = 0x01660172 // MPDGCTRL1 PHY1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//Read calibration&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0848 = 0x4A4D4E4D // MPRDDLCTL PHY0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4848 = 0x4A4F5049 // MPRDDLCTL PHY1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//Write calibration&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0850 = 0x3F3C3D31 // MPWRDLCTL PHY0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4850 = 0x3238372B // MPWRDLCTL PHY1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//read data bit delay: (3 is the reccommended default value, although out of reset value is 0):&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b081c = 0x33333333 // DDR_PHY_P0_MPREDQBY0DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0820 = 0x33333333 // DDR_PHY_P0_MPREDQBY1DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0824 = 0x33333333 // DDR_PHY_P0_MPREDQBY2DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0828 = 0x33333333 // DDR_PHY_P0_MPREDQBY3DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b481c = 0x33333333 // DDR_PHY_P1_MPREDQBY0DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4820 = 0x33333333 // DDR_PHY_P1_MPREDQBY1DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4824 = 0x33333333 // DDR_PHY_P1_MPREDQBY2DL3&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4828 = 0x33333333 // DDR_PHY_P1_MPREDQBY3DL3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//For i.mx6qd parts of versions A &amp;amp; B (v1.0, v1.1), uncomment the following lines. For version C (v1.2), keep commented&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//setmem /32 0x021b08c0 = 0x24911492 // fine tune SDCLK duty cyc to low - seen to improve measured duty cycle of i.mx6&lt;/P&gt;&lt;P&gt;//setmem /32 0x021b48c0 = 0x24911492 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Complete calibration by forced measurement:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b08b8 = 0x00000800&amp;nbsp; // DDR_PHY_P0_MPMUR0, frc_msr&lt;/P&gt;&lt;P&gt;setmem /32 0x021b48b8 = 0x00000800&amp;nbsp; // DDR_PHY_P0_MPMUR0, frc_msr&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//MMDC init:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0004 = 0x0002002D // MMDC0_MDPDC &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0008 = 0x00333030 // MMDC0_MDOTC&lt;/P&gt;&lt;P&gt;setmem /32 0x021b000c = 0x3F435313 // MMDC0_MDCFG0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0010 = 0xB66E8B63 // MMDC0_MDCFG1&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0014 = 0x01FF00DB // MMDC0_MDCFG2&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0018 = 0x00001740 // MMDC0_MDMISC&lt;/P&gt;&lt;P&gt;//NOTE about MDMISC RALAT:&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//MDMISC: RALAT kept to the high level of 5 to ensure stable operation at 528MHz.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//MDMISC: consider reducing RALAT if your 528MHz board design allow that. Lower RALAT benefits:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//a. better operation at low frequency&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//b. Small performence improvment&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x00008000 // MMDC0_MDSCR, set the Configuration request bit during MMDC set up&lt;/P&gt;&lt;P&gt;setmem /32 0x021b002c = 0x000026d2 // MMDC0_MDRWD; recommend to maintain the default values&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0030 = 0x00431023 // MMDC0_MDOR&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0040 = 0x00000027 // CS0_END &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0000 = 0x831A0000 // MMDC0_MDCTL&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Mode register writes&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x04008032 // MMDC0_MDSCR, MR2 write, CS0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x00008033 // MMDC0_MDSCR, MR3 write, CS0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x00048031 // MMDC0_MDSCR, MR1 write, CS0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x05208030 // MMDC0_MDSCR, MR0 write, CS0&lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x04008040 // MMDC0_MDSCR, ZQ calibration command sent to device on CS0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;//setmem /32 0x021b001c = 0x0400803A // MMDC0_MDSCR, MR2 write, CS1&lt;/P&gt;&lt;P&gt;//setmem /32 0x021b001c = 0x0000803B // MMDC0_MDSCR, MR3 write, CS1&lt;/P&gt;&lt;P&gt;//setmem /32 0x021b001c = 0x00048039 // MMDC0_MDSCR, MR1 write, CS1&lt;/P&gt;&lt;P&gt;//setmem /32 0x021b001c = 0x05208038 // MMDC0_MDSCR, MR0 write, CS1&lt;/P&gt;&lt;P&gt;//setmem /32 0x021b001c = 0x04008048 // MMDC0_MDSCR, ZQ calibration command sent to device on CS1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0020 = 0x00005800 // MMDC0_MDREF&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0818 = 0x00011117 // DDR_PHY_P0_MPODTCTRL&lt;/P&gt;&lt;P&gt;setmem /32 0x021b4818 = 0x00011117 // DDR_PHY_P1_MPODTCTRL&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b0004 = 0x0002556D // MMDC0_MDPDC with PWDT bits set&lt;/P&gt;&lt;P&gt;setmem /32 0x021b0404 =&amp;nbsp; 0x00011006 // MMDC0_MAPSR ADOPT power down enabled, MMDC will enter automatically to self-refresh while the number of idle cycle reached.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;setmem /32 0x021b001c = 0x00000000 // MMDC0_MDSCR, clear this register (especially the configuration bit as initialization is complete)&lt;/P&gt;&lt;P&gt;------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thnak you,&lt;/P&gt;&lt;P&gt;Best Regards.&lt;/P&gt;&lt;P&gt;T.Takahashi&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Jun 2014 02:14:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IOMUX-DCD-DRAM-configuration-confusion/m-p/259180#M25539</guid>
      <dc:creator>takashitakahash</dc:creator>
      <dc:date>2014-06-06T02:14:24Z</dc:date>
    </item>
  </channel>
</rss>

