<?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: LS2088A TFA boot: atf  support for static ddr initialization for two controllers in Layerscape</title>
    <link>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019063#M5491</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You could modify _init_ddr in ./plat/nxp/soc-lx2160/lx2160ardb/ddr_init.c as the following to support two sets of different DDR parameters.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set two DDRC. Unused DDRC will be removed automatically. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.num_ctlrs = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.spd_addr = spd_addr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.ddr[0] = (void *)NXP_DDR_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.phy[0] = (void *)NXP_DDR_PHY1_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dram_size = dram_init(&amp;amp;info);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.ddr[0] = (void *)NXP_DDR2_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.phy[0] = (void *)NXP_DDR_PHY2_ADDR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dram_size = dram_init(&amp;amp;info);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please modify function board_static_ddr as the following&lt;/P&gt;&lt;P&gt;long long board_static_ddr(struct ddr_info *priv)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pri.ddr[0] == NXP_DDR_ADDR)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(&amp;amp;priv-&amp;gt;ddr_reg, &amp;amp;static_1600_ddr1, sizeof(static_1600_ddr1));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; memcpy(&amp;amp;priv-&amp;gt;ddr_reg, &amp;amp;static_1600_ddr2, sizeof(static_1600_ddr2));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(&amp;amp;priv-&amp;gt;dimm, &amp;amp;static_dimm, sizeof(static_dimm));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; priv-&amp;gt;conf.cs_on_dimm[0] = 0x3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ddr_board_options(priv);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compute_ddr_phy(priv);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ULL(0x400000000);&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 21 Jan 2020 05:56:18 GMT</pubDate>
    <dc:creator>yipingwang</dc:creator>
    <dc:date>2020-01-21T05:56:18Z</dc:date>
    <item>
      <title>LS2088A TFA boot: atf  support for static ddr initialization for two controllers</title>
      <link>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019060#M5488</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;We are implementing TF-A boot for our custom LS2088A/LS2044A hardware.&amp;nbsp;&lt;/P&gt;&lt;P&gt;We have static DDR on our custom board.&lt;/P&gt;&lt;P&gt;The atf implementations have examples for using one DDR controller for CONFIG_STATIC_DDR configuration using board_static_ddr(struct ddr_info *priv) function&amp;nbsp; where the DDR parameters for one controller can be passed to the ddr_info structure .&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do we pass the DDR controller parameters for two controllers simultaneously using &lt;SPAN&gt;board_static_ddr&lt;/SPAN&gt;?&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Ram&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jan 2020 09:44:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019060#M5488</guid>
      <dc:creator>rams</dc:creator>
      <dc:date>2020-01-16T09:44:16Z</dc:date>
    </item>
    <item>
      <title>Re: LS2088A TFA boot: atf  support for static ddr initialization for two controllers</title>
      <link>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019061#M5489</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello &lt;A _jive_internal="true" data-content-finding="Community" data-userid="323164" data-username="rams" href="https://community.nxp.com/people/rams"&gt;&lt;SPAN style="color: #0066cc; text-decoration: underline;"&gt;Ramasubramanian Subramanian&lt;/SPAN&gt;&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please refer to DDR controller initialization for LX2160ARDB, please refer to plat/nxp/soc-lx2160/lx2160ardb/ddr_init.c.&lt;/P&gt;&lt;P&gt;long long board_static_ddr(struct ddr_info *priv)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(&amp;amp;priv-&amp;gt;ddr_reg, &amp;amp;static_1600, sizeof(static_1600));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(&amp;amp;priv-&amp;gt;dimm, &amp;amp;static_dimm, sizeof(static_dimm));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; priv-&amp;gt;conf.cs_on_dimm[0] = 0x3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ddr_board_options(priv);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compute_ddr_phy(priv);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ULL(0x400000000);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;long long _init_ddr(void)&lt;/P&gt;&lt;P&gt;{...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set two DDRC. Unused DDRC will be removed automatically. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.num_ctlrs = 2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.spd_addr = spd_addr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.ddr[0] = (void *)NXP_DDR_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.ddr[1] = (void *)NXP_DDR2_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.phy[0] = (void *)NXP_DDR_PHY1_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.phy[1] = (void *)NXP_DDR_PHY2_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.clk = get_ddr_freq(&amp;amp;sys, 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!info.clk)&lt;BR /&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; info.clk = get_ddr_freq(&amp;amp;sys, 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.dimm_on_ctlr = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dram_size = dram_init(&amp;amp;info);&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The function board_static_ddr is invoked by dram_init in plat/nxp/drivers/ddr/nxp-ddr/ddr.c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please refer to write_ddrc_regs invoked by dram_init.&lt;/P&gt;&lt;P&gt;static int write_ddrc_regs(struct ddr_info *priv)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int ret;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; priv-&amp;gt;num_ctlrs; i++) {&lt;BR /&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; ret = ddrc_set_regs(priv-&amp;gt;clk, &amp;amp;priv-&amp;gt;ddr_reg, priv-&amp;gt;ddr[i], 0);&lt;BR /&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; if (ret) {&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERROR("Writing DDR register(s) failed\n");&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;BR /&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; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yiping&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 19 Jan 2020 04:06:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019061#M5489</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2020-01-19T04:06:13Z</dc:date>
    </item>
    <item>
      <title>Re: LS2088A TFA boot: atf  support for static ddr initialization for two controllers</title>
      <link>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019062#M5490</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;long long board_static_ddr(struct ddr_info *priv)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #0000ff;"&gt; &lt;STRONG&gt;memcpy(&amp;amp;priv-&amp;gt;ddr_reg, &amp;amp;static_1600, sizeof(static_1600));&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #ff0000;"&gt; &lt;STRONG&gt;memcpy(&amp;amp;priv-&amp;gt;dimm, &amp;amp;static_dimm, sizeof(static_dimm));&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; priv-&amp;gt;conf.cs_on_dimm[0] = 0x3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ddr_board_options(priv);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compute_ddr_phy(priv);&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ULL(0x400000000);&lt;BR /&gt;}&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;In the example which you have referred, one of the memory controllers, it uses static DDR and the othe other dimm.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;In our case, we have to pass two sets of different DDR parameters for static DDR.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Here you use static_1600 struct to copy the ddr parameters to the ddr_reg for one controller and for the second controller &amp;amp;static_dimm for the DIMM DDR.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jan 2020 11:51:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019062#M5490</guid>
      <dc:creator>rams</dc:creator>
      <dc:date>2020-01-20T11:51:23Z</dc:date>
    </item>
    <item>
      <title>Re: LS2088A TFA boot: atf  support for static ddr initialization for two controllers</title>
      <link>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019063#M5491</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You could modify _init_ddr in ./plat/nxp/soc-lx2160/lx2160ardb/ddr_init.c as the following to support two sets of different DDR parameters.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set two DDRC. Unused DDRC will be removed automatically. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.num_ctlrs = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.spd_addr = spd_addr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.ddr[0] = (void *)NXP_DDR_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.phy[0] = (void *)NXP_DDR_PHY1_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dram_size = dram_init(&amp;amp;info);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.ddr[0] = (void *)NXP_DDR2_ADDR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.phy[0] = (void *)NXP_DDR_PHY2_ADDR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dram_size = dram_init(&amp;amp;info);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please modify function board_static_ddr as the following&lt;/P&gt;&lt;P&gt;long long board_static_ddr(struct ddr_info *priv)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pri.ddr[0] == NXP_DDR_ADDR)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(&amp;amp;priv-&amp;gt;ddr_reg, &amp;amp;static_1600_ddr1, sizeof(static_1600_ddr1));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; memcpy(&amp;amp;priv-&amp;gt;ddr_reg, &amp;amp;static_1600_ddr2, sizeof(static_1600_ddr2));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(&amp;amp;priv-&amp;gt;dimm, &amp;amp;static_dimm, sizeof(static_dimm));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; priv-&amp;gt;conf.cs_on_dimm[0] = 0x3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ddr_board_options(priv);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compute_ddr_phy(priv);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ULL(0x400000000);&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Jan 2020 05:56:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS2088A-TFA-boot-atf-support-for-static-ddr-initialization-for/m-p/1019063#M5491</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2020-01-21T05:56:18Z</dc:date>
    </item>
  </channel>
</rss>

