<?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: Slowing DDR3 clock for i.MX6Q in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282537#M32790</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sounds like at least some people have having issue with DDR3 tracking constraints. I am currently laying out IMX6Q DDR3 4GB, There seems to be inconsistencies between the Hardware development guide and the Sabre reference board (LAY-27392_C.brd) and &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;(IMX6DQ6SDLHDG Rev 1 06/2013).&lt;/SPAN&gt;&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;The hardware development guides says (Table 3-3) that the address lines cannot be longer than SD_CLK.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;The layout for the reference design has the address lines 0.09 inches longer than the ddr clock SD_CLK.&lt;/SPAN&gt;&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;Anyone think I am wrong? If I am not wrong which is correct, the HRG, or reference design?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 06 Mar 2014 11:06:32 GMT</pubDate>
    <dc:creator>wonderwizard</dc:creator>
    <dc:date>2014-03-06T11:06:32Z</dc:date>
    <item>
      <title>Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282517#M32770</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We're having some trouble with a custom i.MX6Q board (based on sabreSD reference).&amp;nbsp; It appears that our DDR3 is close to timing margins.&amp;nbsp; I'd like to slow the DDR3 clock rate down to 396MHz.&amp;nbsp; I tried plugging that value into the DDR3 programming spreadsheet and replacing the values in flash_header.S with the updated spreadsheet values.&amp;nbsp; However, when u-boot comes up, its still showing 528MHz for the ddr clock.&amp;nbsp; I also noticed that mx6q pll2 is set to 528MHz.&amp;nbsp; Is there something else I need to do, like change pll2 somehow?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jul 2013 16:19:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282517#M32770</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-19T16:19:09Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282518#M32771</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Frank&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I think the mmdc_axi_ch0 is sourced from periph_clk, and periph_clk is from pll2 which is 528M, so to get 396MHz for DDR3, you may need to switch clock source of periph_clk from pll2 to pfd396M, you need to check the CCM for clock tree, and switch this clock before DCD table of configuring MMDC. Also, I think the DDR script for 528M an 396M is different, if it still not work, you may need to check the script. But first of all, just make the clock freq right, it must be 396M.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Jul 2013 04:17:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282518#M32771</guid>
      <dc:creator>AnsonHuang</dc:creator>
      <dc:date>2013-07-20T04:17:21Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282519#M32772</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Huang,&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;I've already adjusted the script in flash_header.S and that did not change the clock.&amp;nbsp; That's why I'm asking the question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The real problem we're having is as follows.&amp;nbsp; We have 25 boards that are using an i.MX6Q @ 1.2 GHz.&amp;nbsp; Only a couple of them boot up reliably.&amp;nbsp; We had built 6 boards previously using a 1 GHz i.MX6D that ran fine.&amp;nbsp; Both processors are TO1.2 lots.&amp;nbsp; We upgraded to the 4.0.0 release as well.&amp;nbsp; We ran DDR3 stress tests on some of the boards and have discovered that there seem to be failures as the DDR3 testing gets to 528 MHz.&amp;nbsp; This behavior feels like there is some issue with timing margins or something between the processor and the DDR3 memory but we have not been able to isolate it as yet.&amp;nbsp; We were going to try slowing the memory down on the 25 boards to see if we get better results.&amp;nbsp; Do you have any other advice?&amp;nbsp; I noticed another message thread on these boards where someone else was having similar problems:&amp;nbsp; &lt;A href="https://community.nxp.com/thread/309814"&gt;Tuning DDR3 configurations on iMX6Q board&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This other thread was marked as "assumed answered" but it was not clear from that thread what the solution was.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Jul 2013 04:38:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282519#M32772</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-20T04:38:52Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282520#M32773</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Frank&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I think we need to try 396M first. For some boards that can boot up reliably, did they run @528MHz DDR freq or 396MHz? You said that you have adjust the script to 396M, but the script did not change the clock, that is why I need you to try adding the clock change first, Setting pre_periph_clk select to from pfd396M, you may need to add one DCD item in flash_header.S, DCD(0x20c4018, 0x60324) in front of the MMDC and IOMUX settng. Then you also need to add this length to DCD length parameter. See below:&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;&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;[Anson] Change this to DCD(0x20c4018, 0x60324), please check RM to see whether this 0x60324 is right to select PFD396 as pre_periph_clk's parent.&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;[Anson]As the DCD number is increased, so upper value need to changed to be 126*8 + 4 + 4 and 126*8 + 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Please try it first to see whether we can make more boards boot up reliably @396M, if it helps, then we can focus on the DDR timing adjustment.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Jul 2013 08:49:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282520#M32773</guid>
      <dc:creator>AnsonHuang</dc:creator>
      <dc:date>2013-07-20T08:49:15Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282521#M32774</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK, I tried to add this DCD (per the Anson comment to the beginning of my flash_header.S script.&amp;nbsp; The board does not boot at all now.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regarding the 0x60324 value, I checked the RM and the the 0x6 prefix does appear to set the pre_periph_clk to 396 MHz as you suggested.&amp;nbsp; I did note however that the default value for this register is 0x22324 so your 0x60 prefix is setting different values for pre_periph_clk_sel as well as gpu2d_clk_sel, vpu_axi_clk_sel, and periph_clk2_sel?&amp;nbsp; Also, the default value for this register means that 00 (528 MHz clk) is chosen for pre_periph_clk, but the explanation for bits 18-19 state that 01 should be the default value, which yields a 396 MHz clock default.&amp;nbsp; Very confusing.&amp;nbsp; Maybe there's something going on in the ROM here?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Couple things to note here about my flash_header.S script.&amp;nbsp; We are using 4 GB of DDR3 64-bit in 8 256MB Micron devices.&amp;nbsp; I had created a script for our dual core boards and things were working fine.&amp;nbsp; So in this script where you see the // 396 MHz comments are the places I had to change to switch to the 396 MHz speed according to the spreadsheet.&amp;nbsp; I added the line you recommended at DCD item 1.&amp;nbsp; This caused me to have to renumber all the other DCD items.&amp;nbsp; I also bumped up the Len part of the dcd_hdr and write_dcd_cmd labels as directed.&lt;/P&gt;&lt;P&gt;Here is what my flash_header.S script looks like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#else&amp;nbsp; /* i.MX6Q */&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 0x40a002D2 /* Tag=0xD2, Len=83*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;//write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x049c02CC /* Tag=0xCC, Len=83*8 + 4, Param=0x04 */&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 0x40c802d2 /* Tag=0xD2, Len=88*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;//write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x04c402cc /* Tag=0xCC, Len=88*8 + 4, Param=0x04 */&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 0x40d002d2 /* Tag=0xD2, Len=89*8 + 4 + 4, Ver=0x40 */&lt;/P&gt;&lt;P&gt;write_dcd_cmd:&amp;nbsp;&amp;nbsp;&amp;nbsp; .word 0x04cc02cc /* Tag=0xCC, Len=89*8 + 4, Param=0x04 */&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;// &amp;lt;added&amp;gt;&lt;/P&gt;&lt;P&gt;// Change pre_periph_clk to pfd396M&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(1, 0x020c4018, 0x00060324)&lt;/P&gt;&lt;P&gt;// &amp;lt;/added&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x798, 0x000C0000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x758, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x588, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x594, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x56c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x578, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x74c, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x57c, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x59c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x5a0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x78c, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x750, 0x00020000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x5a8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x5b0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x524, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x51c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x518, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x50c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x5b8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x5c0, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x774, 0x00020000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x784, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x788, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x794, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x79c, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x7a0, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x7a4, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x7a8, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x748, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x5ac, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x5b4, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x528, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x520, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x514, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x510, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x5bc, 0x00000030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(39, IOMUXC_BASE_ADDR + 0x5c4, 0x00000030)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(40, MMDC_P0_BASE_ADDR + 0x800, 0xA1390003)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(41, MMDC_P0_BASE_ADDR + 0x80c, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(42, MMDC_P0_BASE_ADDR + 0x810, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(43, MMDC_P1_BASE_ADDR + 0x80c, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(44, MMDC_P1_BASE_ADDR + 0x810, 0x001F001F)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(45, MMDC_P0_BASE_ADDR + 0x83c, 0x4333033F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(45, MMDC_P0_BASE_ADDR + 0x83c, 0x43270338)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x840, 0x032C031D)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x840, 0x03200314)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x83c, 0x43200332)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x83c, 0x431a032f)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(48, MMDC_P1_BASE_ADDR + 0x840, 0x031A026A)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(48, MMDC_P1_BASE_ADDR + 0x840, 0x03200263)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(49, MMDC_P0_BASE_ADDR + 0x848, 0x4D464746)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(49, MMDC_P0_BASE_ADDR + 0x848, 0x4b434748)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x848, 0x47453F4D)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(50, MMDC_P1_BASE_ADDR + 0x848, 0x4445404c)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x850, 0x3E434440)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(51, MMDC_P0_BASE_ADDR + 0x850, 0x38444542)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(52, MMDC_P1_BASE_ADDR + 0x850, 0x47384839)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(52, MMDC_P1_BASE_ADDR + 0x850, 0x4935493a)&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;MXC_DCD_ITEM(61, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x004, 0x00020036)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x004, 0x00020024) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x008, 0x09444040)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x008, 0x00444040) // 396 MHz&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x00c, 0x555A7975)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x00c, 0x3f435313) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(66, MMDC_P0_BASE_ADDR + 0x010, 0xFF538F64)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(66, MMDC_P0_BASE_ADDR + 0x010, 0xb66e8b64) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x014, 0x01FF00DB)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x014, 0x01ff0092) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x018, 0x00001740)&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x018, 0x000f11c0)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x018, 0x00001740) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x02c, 0x000026D2)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(71, MMDC_P0_BASE_ADDR + 0x030, 0x005A1023)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(71, MMDC_P0_BASE_ADDR + 0x030, 0x00431023) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x040, 0x00000027)&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x040, 0x0000003f)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x040, 0x00000047) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x000, 0x831A0000)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x000, 0xc41a0000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x01c, 0x04088032)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x01c, 0x00008033)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(76, MMDC_P0_BASE_ADDR + 0x01c, 0x00048031)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x01c, 0x09408030)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x01c, 0x05208030) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(78, MMDC_P0_BASE_ADDR + 0x01c, 0x04008040)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// &amp;lt;added&amp;gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x01c, 0x0408803a)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P0_BASE_ADDR + 0x01c, 0x0000803b)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x01c, 0x00048039)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x01c, 0x09408038)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x01c, 0x05208038) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x01c, 0x04008048)&lt;/P&gt;&lt;P&gt;// &amp;lt;/added&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x020, 0x00005800)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(85, MMDC_P0_BASE_ADDR + 0x818, 0x00011117)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(86, MMDC_P1_BASE_ADDR + 0x818, 0x00011117)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x004, 0x00025576)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(87, MMDC_P0_BASE_ADDR + 0x004, 0x00025564) // 396 MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(88, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(89, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Jul 2013 23:01:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282521#M32774</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-20T23:01:23Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282522#M32775</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Frank&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; below(sorry I do NOT know how to attach a file) is the flash_header.S of 400MHz DDR using plugin mode, this is a debug version when I was trying 400MHz for DDR3, you can have a reference, but I am not sure whether it works on your platform.&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;#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;.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;&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 400MHz for pre_periph_clk_sel */&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,#0x18]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* 64-bit DDR3 */&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, #0x00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x02020207&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x83c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x02020201&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x840]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x02020207&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x83c]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x02150203&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, =0x3E35353B&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, =0x3A393541&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, =0x41424744&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, =0x4937483B&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, =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, =0x555b99a4&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, =0xfe730e64&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;&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, =0x1b334000&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, =0x0003002d&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;&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, =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;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x09308030&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, =0x09308038&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;&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, =0x00005800&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0,#0x20]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r1, =0x00022221&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, =0x00022221&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r2,#0x818]&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;&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; mov r4, #0x2000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; add r4, r4, #0xed&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blx r4 /* This address might change in future ROM versions */&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;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Jul 2013 10:35:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282522#M32775</guid>
      <dc:creator>AnsonHuang</dc:creator>
      <dc:date>2013-07-22T10:35:48Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282523#M32776</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Huang,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm confused.&amp;nbsp; The only difference between this code and what you posted before is the expanded headers.&amp;nbsp; I don't think those are the problem.&amp;nbsp; You are still using the same code to redirect the periph clk which I alread told you doesn't work.&amp;nbsp; Can you comment on the items I discussed about the use of 0x60324 to accomplish that?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Jul 2013 17:33:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282523#M32776</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-22T17:33:54Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282524#M32777</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Also, I was trying to same ploblems.&lt;/P&gt;&lt;P&gt;Results are 480Mhz operations good, but 400Mhz was failed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;u-boot&amp;gt;&lt;/P&gt;&lt;P&gt;528Mhz --&amp;gt; 480Mhz --&amp;gt; 400Mhz step operation is success, using the clk command in the u-boot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's not working problems(400Mhz) is thought &lt;SPAN class="hps"&gt;to be caused by &lt;/SPAN&gt;something happens in the BOOTROM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;DCD Values for 480Mhz Clock&amp;gt;&lt;/P&gt;&lt;P&gt;# 480MHZ &lt;/P&gt;&lt;P&gt;#CBCDR, 480MHz&lt;BR /&gt;MXC_DCD_ITEM(39, CCM_BASE_ADDR + 0x14, 0x02018d00)&lt;BR /&gt;#CBCMR, 480MHz&lt;BR /&gt;MXC_DCD_ITEM(40, CCM_BASE_ADDR + 0x18, 0x00020324)&lt;/P&gt;&lt;P&gt;&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_P0_BASE_ADDR + 0x80c, 0x001F001F)&lt;BR /&gt;MXC_DCD_ITEM(43, MMDC_P0_BASE_ADDR + 0x810, 0x001F001F)&lt;BR /&gt;MXC_DCD_ITEM(44, MMDC_P1_BASE_ADDR + 0x80c, 0x001F001F)&lt;BR /&gt;MXC_DCD_ITEM(45, MMDC_P1_BASE_ADDR + 0x810, 0x001F001F)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(46, MMDC_P0_BASE_ADDR + 0x83c, 0x4333033F)&lt;BR /&gt;MXC_DCD_ITEM(47, MMDC_P0_BASE_ADDR + 0x840, 0x032C031D)&lt;BR /&gt;MXC_DCD_ITEM(48, MMDC_P1_BASE_ADDR + 0x83c, 0x43200332)&lt;BR /&gt;MXC_DCD_ITEM(49, MMDC_P1_BASE_ADDR + 0x840, 0x031A026A)&lt;BR /&gt;MXC_DCD_ITEM(50, MMDC_P0_BASE_ADDR + 0x848, 0x4D464746)&lt;BR /&gt;MXC_DCD_ITEM(51, MMDC_P1_BASE_ADDR + 0x848, 0x47453F4D)&lt;BR /&gt;MXC_DCD_ITEM(52, MMDC_P0_BASE_ADDR + 0x850, 0x3E434440)&lt;BR /&gt;MXC_DCD_ITEM(53, MMDC_P1_BASE_ADDR + 0x850, 0x47384839)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(54, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(55, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(56, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(57, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(58, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(59, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(60, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)&lt;BR /&gt;MXC_DCD_ITEM(61, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(62, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)&lt;BR /&gt;MXC_DCD_ITEM(63, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)&lt;/P&gt;&lt;P&gt;#MMDC init&lt;BR /&gt;MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x004, 0x0002002D)&lt;BR /&gt;MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x008, 0x00333040)&lt;BR /&gt;MXC_DCD_ITEM(66, MMDC_P0_BASE_ADDR + 0x00c, 0x3F4352F3)&lt;BR /&gt;MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x010, 0xB66D8B63)&lt;BR /&gt;MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x014, 0x01FF00DB)&lt;/P&gt;&lt;P&gt;#MDMISC&lt;BR /&gt;MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x018, 0x00001740)&lt;BR /&gt;MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)&lt;BR /&gt;MXC_DCD_ITEM(71, MMDC_P0_BASE_ADDR + 0x02c, 0x000026D2)&lt;BR /&gt;MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x030, 0x00431023)&lt;BR /&gt;MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x040, 0x00000027)&lt;BR /&gt;MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x000, 0x831A0000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# Initialize 2GB DDR3 - Micron MT41J128M&lt;BR /&gt;MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x01c, 0x02008032)&lt;BR /&gt;MXC_DCD_ITEM(76, MMDC_P0_BASE_ADDR + 0x01c, 0x00008033)&lt;BR /&gt;MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x01c, 0x00048031)&lt;BR /&gt;MXC_DCD_ITEM(78, MMDC_P0_BASE_ADDR + 0x01c, 0x05208030)&lt;BR /&gt;MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x01c, 0x04008040)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(80, MMDC_P0_BASE_ADDR + 0x020, 0x00007800)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x818, 0x00022227)&lt;BR /&gt;MXC_DCD_ITEM(82, MMDC_P1_BASE_ADDR + 0x818, 0x00022227)&lt;/P&gt;&lt;P&gt;MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x004, 0x0002556D)&lt;BR /&gt;MXC_DCD_ITEM(84, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)&lt;BR /&gt;MXC_DCD_ITEM(85, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jul 2013 02:15:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282524#M32777</guid>
      <dc:creator>byungchul</dc:creator>
      <dc:date>2013-07-23T02:15:59Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282525#M32778</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since I've had no luck with these solutions, let me ask a different question.&amp;nbsp; How low can I set the DDR speed with the 528 MHz sourced periph_clk?&amp;nbsp; Can I drop the DDR clk to 500? or 475? or 452? somehow without changing the input to periph_clk?&amp;nbsp; If so, how would I go about this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jul 2013 22:51:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282525#M32778</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-23T22:51:06Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282526#M32779</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How did you use the clk command?&amp;nbsp; I was under the impression that this was not implemented for mx6q u-boot?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jul 2013 22:52:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282526#M32779</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-23T22:52:20Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282527#M32780</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi FM,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I created the thread &lt;STRONG style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3d3d3d;"&gt;&lt;A _jive_internal="true" class="font-color-meta-light" href="https://community.nxp.com/message/341458#341458" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #8b8b8b; text-decoration: underline;"&gt;Tuning DDR3 configurations on iMX6Q board.&amp;nbsp; &lt;/A&gt;&lt;/STRONG&gt;&lt;A _jive_internal="true" class="font-color-meta-light" href="https://community.nxp.com/message/341458#341458" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #8b8b8b; text-decoration: underline;"&gt;The issue is&lt;/A&gt; not solved yet.&lt;A _jive_internal="true" class="font-color-meta-light" href="https://community.nxp.com/message/341458#341458" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #8b8b8b; text-decoration: underline;"&gt;Re: Tuning DDR3 configurations on iMX6Q board&lt;/A&gt;&lt;/P&gt;&lt;P&gt;I am thinking to reduce the DDR speed to 500MHz or lower as the stress test looks ok at lower speed (500MHz). Any luck on slowing the DDR speed in Android?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;PK&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jul 2013 02:38:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282527#M32780</guid>
      <dc:creator>PKZ</dc:creator>
      <dc:date>2013-07-24T02:38:43Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282528#M32781</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG&gt;Hi, FM&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;clk command usage.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*. step 1 --&amp;gt; 2 is ok, but direct to go down step2 failed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MX6Q U-Boot &amp;gt; help clk&lt;BR /&gt;clk - Clock sub system&lt;/P&gt;&lt;P&gt;Usage:&lt;BR /&gt;clk Setup/Display clock&lt;BR /&gt;clk - Display all clocks&lt;BR /&gt;clk core &amp;lt;core clock in MHz&amp;gt; - Setup/Display core clock&lt;BR /&gt;clk periph &amp;lt;peripheral clock in MHz&amp;gt; -Setup/Display peripheral clock&lt;BR /&gt;clk ddr &amp;lt;DDR clock in MHz&amp;gt; - Setup/Display DDR clock&lt;BR /&gt;clk nfc &amp;lt;NFC clk in MHz&amp;gt; - Setup/Display NFC clock&lt;BR /&gt;Example:&lt;BR /&gt;clk - Show various clocks&lt;BR /&gt;clk core 665 - Set core clock to 665MHz&lt;BR /&gt;clk periph 600 - Set peripheral clock to 600MHz&lt;BR /&gt;clk ddr 166 - Set DDR clock to 166MHz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1. Down 480Mhz.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;MX6Q U-Boot &amp;gt; clk periph 480&lt;BR /&gt;source=pll3&lt;/P&gt;&lt;P&gt;CBCMR=00020324&lt;BR /&gt;CBCDR=02018d00&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;MX6Q U-Boot &amp;gt; clk&lt;BR /&gt;cpu clock: 984MHz&lt;BR /&gt;mx6q pll1: 984MHz&lt;BR /&gt;mx6q pll2: 528MHz&lt;BR /&gt;mx6q pll3: 480MHz&lt;BR /&gt;mx6q pll8: 50MHz&lt;BR /&gt;ipg clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 60000000Hz&lt;BR /&gt;ipg per clock : 60000000Hz&lt;BR /&gt;uart clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 80000000Hz&lt;BR /&gt;cspi clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 60000000Hz&lt;BR /&gt;ahb clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 120000000Hz&lt;BR /&gt;axi clock&amp;nbsp;&amp;nbsp; : 240000000Hz&lt;BR /&gt;emi_slow clock: 120000000Hz&lt;BR /&gt;ddr clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 480000000Hz&lt;BR /&gt;usdhc1 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;usdhc2 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;usdhc3 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;usdhc4 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;nfc clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 11000000Hz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2. Down 400Mhz.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;MX6Q U-Boot &amp;gt; clk periph 400&lt;BR /&gt;source=pll2_pfd_400m&lt;/P&gt;&lt;P&gt;CBCMR=00060324&lt;BR /&gt;CBCDR=00018d00&lt;BR /&gt;MX6Q U-Boot &amp;gt; clk&lt;BR /&gt;cpu clock: 984MHz&lt;BR /&gt;mx6q pll1: 984MHz&lt;BR /&gt;mx6q pll2: 528MHz&lt;BR /&gt;mx6q pll3: 480MHz&lt;BR /&gt;mx6q pll8: 50MHz&lt;BR /&gt;ipg clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 49500000Hz&lt;BR /&gt;ipg per clock : 49500000Hz&lt;BR /&gt;uart clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 80000000Hz&lt;BR /&gt;cspi clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 60000000Hz&lt;BR /&gt;ahb clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 99000000Hz&lt;BR /&gt;axi clock&amp;nbsp;&amp;nbsp; : 198000000Hz&lt;BR /&gt;emi_slow clock: 99000000Hz&lt;BR /&gt;ddr clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 396000000Hz&lt;BR /&gt;usdhc1 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;usdhc2 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;usdhc3 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;usdhc4 clock&amp;nbsp; : 198000000Hz&lt;BR /&gt;nfc clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 11000000Hz&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jul 2013 08:21:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282528#M32781</guid>
      <dc:creator>byungchul</dc:creator>
      <dc:date>2013-07-24T08:21:27Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282529#M32782</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for this.&amp;nbsp; I was using 'clk ddr ...' and that did not change the ddr clk.&amp;nbsp; Interesting that 'clk periph ...' changes the ddr clk when there is a specific subcommand to set the ddr clk. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I do 'clk periph 480' it seems to take.&amp;nbsp; When I do 'clk periph 400' the board hangs.&amp;nbsp; I do not get the source, CBCMR and CBCDR output.&amp;nbsp; Did you modify your code to do that?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jul 2013 14:45:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282529#M32782</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-24T14:45:29Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282530#M32783</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes,&amp;nbsp; i modified source code, as bellows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;u-boot : u-boot-2009.08&lt;/P&gt;&lt;P&gt;file : cpu/arm_cortexa8/mx6/generic.c&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int config_periph_clk(u32 ref, u32 freq)&lt;BR /&gt;{&lt;BR /&gt; u32 cbcdr = readl(CCM_BASE_ADDR + CLKCTL_CBCDR);&lt;BR /&gt; u32 cbcmr = readl(CCM_BASE_ADDR + CLKCTL_CBCMR);&lt;BR /&gt; u32 pll2_freq = __decode_pll(BUS_PLL2, CONFIG_MX6_HCLK_FREQ);&lt;BR /&gt; u32 pll3_freq = __decode_pll(USBOTG_PLL3, CONFIG_MX6_HCLK_FREQ);&lt;/P&gt;&lt;P&gt; if (freq &amp;gt;=&amp;nbsp; pll2_freq) {&lt;BR /&gt;&amp;nbsp; printf("source=pll2\n");&lt;BR /&gt;&amp;nbsp; /* PLL2 */&lt;BR /&gt;&amp;nbsp; writel(cbcmr &amp;amp; ~MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCMR);&lt;BR /&gt;&amp;nbsp; writel(cbcdr &amp;amp; ~MXC_CCM_CBCDR_PERIPH_CLK_SEL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCDR);&lt;BR /&gt; } else if (freq &amp;lt; pll2_freq &amp;amp;&amp;amp; freq &amp;gt;= pll3_freq) {&lt;BR /&gt;&amp;nbsp; printf("source=pll3\n");&lt;BR /&gt;&amp;nbsp; /* PLL3 */&lt;BR /&gt;&amp;nbsp; writel(cbcmr &amp;amp; ~MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCMR);&lt;BR /&gt;&amp;nbsp; writel(cbcdr | MXC_CCM_CBCDR_PERIPH_CLK_SEL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCDR);&lt;BR /&gt; } else if (freq &amp;lt; pll3_freq &amp;amp;&amp;amp; freq &amp;gt;= PLL2_PFD2_FREQ) {&lt;BR /&gt;&amp;nbsp; printf("source=pll2_pfd_400m\n");&lt;BR /&gt;&amp;nbsp; /* 400M PLL2 PFD */&lt;BR /&gt;&amp;nbsp; cbcmr = (cbcmr &amp;amp; ~MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK) |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; (1 &amp;lt;&amp;lt; MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET);&lt;BR /&gt;&amp;nbsp; writel(cbcmr, CCM_BASE_ADDR + CLKCTL_CBCMR);&lt;BR /&gt;&amp;nbsp; writel(cbcdr &amp;amp; ~MXC_CCM_CBCDR_PERIPH_CLK_SEL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCDR);&lt;BR /&gt; } else if (freq &amp;lt; PLL2_PFD2_FREQ &amp;amp;&amp;amp; freq &amp;gt;= PLL2_PFD0_FREQ) {&lt;BR /&gt;&amp;nbsp; printf("source=pll2_pfd_325m\n");&lt;BR /&gt;&amp;nbsp; /* 352M PLL2 PFD */&lt;BR /&gt;&amp;nbsp; cbcmr = (cbcmr &amp;amp; ~MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK) |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; (2 &amp;lt;&amp;lt; MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET);&lt;BR /&gt;&amp;nbsp; writel(cbcmr, CCM_BASE_ADDR + CLKCTL_CBCMR);&lt;BR /&gt;&amp;nbsp; writel(cbcdr &amp;amp; ~MXC_CCM_CBCDR_PERIPH_CLK_SEL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCDR);&lt;BR /&gt; } else if (freq == PLL2_PFD2_DIV_FREQ) {&lt;BR /&gt;&amp;nbsp; printf("source=pll2_pfd_200m\n");&lt;BR /&gt;&amp;nbsp; /* 200M PLL2 PFD */&lt;BR /&gt;&amp;nbsp; cbcmr = (cbcmr &amp;amp; ~MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK) |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; (3 &amp;lt;&amp;lt; MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET);&lt;BR /&gt;&amp;nbsp; writel(cbcmr, CCM_BASE_ADDR + CLKCTL_CBCMR);&lt;BR /&gt;&amp;nbsp; writel(cbcdr &amp;amp; ~MXC_CCM_CBCDR_PERIPH_CLK_SEL,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CCM_BASE_ADDR + CLKCTL_CBCDR);&lt;BR /&gt; } else {&lt;BR /&gt;&amp;nbsp; printf("Frequency requested not within range [%d-%d] MHz\n",&lt;BR /&gt;&amp;nbsp;&amp;nbsp; PLL2_PFD2_DIV_FREQ / SZ_DEC_1M, pll2_freq / SZ_DEC_1M);&lt;BR /&gt;&amp;nbsp; return -1;&lt;BR /&gt; }&lt;BR /&gt; puts("\n");&lt;/P&gt;&lt;P&gt; // bcchae&lt;BR /&gt; printf("CBCMR=%08lx\n",readl(CCM_BASE_ADDR + CLKCTL_CBCMR));&lt;BR /&gt; printf("CBCDR=%08lx\n",readl(CCM_BASE_ADDR + CLKCTL_CBCDR));&lt;/P&gt;&lt;P&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jul 2013 04:06:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282530#M32783</guid>
      <dc:creator>byungchul</dc:creator>
      <dc:date>2013-07-25T04:06:32Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282531#M32784</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Wow, what a great piece of code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One question I have is this.&amp;nbsp; If you change the clk settings don't you also have to also change the calibration parameters associated with the DDR3?&amp;nbsp; If you set the clk to 400 MHz and don't change the calibrations, I would not expect things to work very well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jul 2013 04:20:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282531#M32784</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2013-07-25T04:20:53Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282532#M32785</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi byungchul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a couple of questions for you:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) What version of Android/Linux BSP are you running.&amp;nbsp; I see that your initial clock values are different than mine.&amp;nbsp; I'm using Android 4.2.2-1.1.0 ga on a SabreSD board.&amp;nbsp; We have different cpu, ipg, ahb, axi and emi clocks.&lt;/P&gt;&lt;P&gt;MX6Q SABRESD U-Boot &amp;gt; clk&lt;/P&gt;&lt;P&gt;cpu clock: 792MHz&lt;/P&gt;&lt;P&gt;mx6q pll1: 792MHz&lt;/P&gt;&lt;P&gt;mx6q pll2: 528MHz&lt;/P&gt;&lt;P&gt;mx6q pll3: 480MHz&lt;/P&gt;&lt;P&gt;mx6q pll8: 50MHz&lt;/P&gt;&lt;P&gt;ipg clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 66000000Hz&lt;/P&gt;&lt;P&gt;ipg per clock : 66000000Hz&lt;/P&gt;&lt;P&gt;uart clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 80000000Hz&lt;/P&gt;&lt;P&gt;cspi clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 60000000Hz&lt;/P&gt;&lt;P&gt;ahb clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 132000000Hz&lt;/P&gt;&lt;P&gt;axi clock&amp;nbsp;&amp;nbsp; : 264000000Hz&lt;/P&gt;&lt;P&gt;emi_slow clock: 132000000Hz&lt;/P&gt;&lt;P&gt;ddr clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 528000000Hz&lt;/P&gt;&lt;P&gt;usdhc1 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;usdhc2 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;usdhc3 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;usdhc4 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;nfc clock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 24000000Hz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) If I use your procedure of changing the periph clock down to 480 first and then down to 400 I am able to see the clock change without hanging.&amp;nbsp; But as soon as I type 'boot', it hangs when loading the kernel.&amp;nbsp; Do you see this as well?&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jul 2013 22:18:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282532#M32785</guid>
      <dc:creator>Chris1z</dc:creator>
      <dc:date>2013-07-25T22:18:02Z</dc:date>
    </item>
    <item>
      <title>Re: Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282533#M32786</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, FM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The answers are&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) What version of Android/Linux BSP are you running.&amp;nbsp; I see that your initial clock values are different than mine.&amp;nbsp; I'm using Android 4.2.2-1.1.0 ga on a SabreSD board.&amp;nbsp; We have different cpu, ipg, ahb, axi and emi clocks.&lt;/P&gt;&lt;P&gt;MX6Q SABRESD U-Boot &amp;gt; clk&lt;/P&gt;&lt;P&gt;cpu clock: 792MHz&lt;/P&gt;&lt;P&gt;mx6q pll1: 792MHz&lt;/P&gt;&lt;P&gt;mx6q pll2: 528MHz&lt;/P&gt;&lt;P&gt;mx6q pll3: 480MHz&lt;/P&gt;&lt;P&gt;mx6q pll8: 50MHz&lt;/P&gt;&lt;P&gt;ipg clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 66000000Hz&lt;/P&gt;&lt;P&gt;ipg per clock : 66000000Hz&lt;/P&gt;&lt;P&gt;uart clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 80000000Hz&lt;/P&gt;&lt;P&gt;cspi clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 60000000Hz&lt;/P&gt;&lt;P&gt;ahb clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 132000000Hz&lt;/P&gt;&lt;P&gt;axi clock&amp;nbsp; : 264000000Hz&lt;/P&gt;&lt;P&gt;emi_slow clock: 132000000Hz&lt;/P&gt;&lt;P&gt;ddr clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 528000000Hz&lt;/P&gt;&lt;P&gt;usdhc1 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;usdhc2 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;usdhc3 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;usdhc4 clock&amp;nbsp; : 198000000Hz&lt;/P&gt;&lt;P&gt;nfc clock&amp;nbsp;&amp;nbsp;&amp;nbsp; : 24000000Hz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OS : Linux 3.0.35, No android&lt;/P&gt;&lt;P&gt;Board : SabreSD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="text-decoration: underline;"&gt;As cpu clock &amp;amp; pll1 is differrent, don't mind this values.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="text-decoration: underline;"&gt;I was modified change the init cpu clock, for the fast booting.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) If I use your procedure of changing the periph clock down to 480 first and then down to 400 I am able to see the clock change without hanging.&amp;nbsp; But as soon as I type 'boot', it hangs when loading the kernel.&amp;nbsp; Do you see this as well? &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;OS booting failed at 400Mhz clock, but memory test is good in the u-boot. &lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Jul 2013 00:07:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282533#M32786</guid>
      <dc:creator>byungchul</dc:creator>
      <dc:date>2013-07-26T00:07:32Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282534#M32787</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Frank,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;although an old topic, it is still marked "not answered". Were you able to slow down the DDR3 clock? We are experiencing similar problems.&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;I believe the answer to your last question is minimum 400MHz. It is defined in DDR3 chip. It depends on the CAS latency setup. Freescale uses 8 CLK CAS latency in their script, which is valid from 2.5ns to 1.875ns (400MHz to 533MHz) for an 1600MHz DDR3 device.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Borut&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jan 2014 22:26:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282534#M32787</guid>
      <dc:creator>kladu</dc:creator>
      <dc:date>2014-01-09T22:26:20Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282535#M32788</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Borut,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I finally did get past this problem.&amp;nbsp; Ultimately what I was trying to do was calibrate the DDR3 RAM against the 1.2 GHz Quad core part.&amp;nbsp; I ended up having to go through this interesting procedure with the calibration tool.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First, I put the memory parameters into the DDR3 spreadsheet provided by Freescale.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I used the calibration values from this spreadsheet to seed the DDR3 calibration tool.&amp;nbsp; I then ran the tool and got new calibration values.&amp;nbsp; I took the output of this tool and fed the values back into the inputs of a second run of the tool.&amp;nbsp; I did this several times until I discovered that output values were converging.&amp;nbsp; I then took the converged output values and used them in the u-boot code for calibration and voila, the 4 GB of RAM has worked like a charm since.&amp;nbsp; I hope this helps you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jan 2014 22:55:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282535#M32788</guid>
      <dc:creator>frankmiller</dc:creator>
      <dc:date>2014-01-09T22:55:10Z</dc:date>
    </item>
    <item>
      <title>Re: Slowing DDR3 clock for i.MX6Q</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282536#M32789</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks! &lt;/P&gt;&lt;P&gt;I never thought that calibration values would converge... We'll try it out.&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Borut&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jan 2014 00:32:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Slowing-DDR3-clock-for-i-MX6Q/m-p/282536#M32789</guid>
      <dc:creator>kladu</dc:creator>
      <dc:date>2014-01-10T00:32:18Z</dc:date>
    </item>
  </channel>
</rss>

