<?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: How to initialize two DDRC in parallel with UDIMM(no dimm) in LX2160 in Layerscape</title>
    <link>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1945232#M14841</link>
    <description>&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;From the write_ddrc_regs, every controller is initialed independently.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;twopass=1/2 is only for RDIMM, not for the different controllers.&lt;/P&gt;</description>
    <pubDate>Mon, 02 Sep 2024 07:27:27 GMT</pubDate>
    <dc:creator>June_Lu</dc:creator>
    <dc:date>2024-09-02T07:27:27Z</dc:date>
    <item>
      <title>How to initialize two DDRC in parallel with UDIMM(no dimm) in LX2160</title>
      <link>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1938176#M14808</link>
      <description>&lt;P&gt;Hi NXP experts,&lt;/P&gt;&lt;P&gt;I am trying to optimize the ATF boot time, and it shows the DDRC&amp;nbsp;initialize will cost too much time; The&amp;nbsp;code annotation of&amp;nbsp;&lt;SPAN&gt;ddrc_set_regs shows that:&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;/*
 * If supported by the platform, writing to DDR controller takes two
 * passes to deassert DDR reset to comply with JEDEC specs for RDIMMs.
 */
int ddrc_set_regs(const unsigned long clk,
		  const struct ddr_cfg_regs *regs,
		  const struct ccsr_ddr *ddr,
		  int twopass)
{
        ... ...
	if (twopass == 2)
		goto after_reset;
        ... ...
	/*
	 * For RDIMMs, JEDEC spec requires clocks to be stable before reset is
	 * deasserted. Clocks start when any chip select is enabled and clock
	 * control register is set. Because all DDR components are connected to
	 * one reset signal, this needs to be done in two steps. Step 1 is to
	 * get the clocks started. Step 2 resumes after reset signal is
	 * deasserted.
	 */
	if (twopass == 1) {
		udelay(200);
		return 0;
	}

after_reset:
        ... ...
}

static int write_ddrc_regs(struct ddr_info *priv)
{
	int i;
	int ret;

	for (i = 0; i &amp;lt; priv-&amp;gt;num_ctlrs; i++) {
		ret = ddrc_set_regs(priv-&amp;gt;clk, &amp;amp;priv-&amp;gt;ddr_reg, priv-&amp;gt;ddr[i], 0);
		if (ret) {
			ERROR("Writing DDR register(s) failed\n");
			return ret;
		}
	}

	return 0;
}&lt;/LI-CODE&gt;&lt;P&gt;My board is using&amp;nbsp;UDIMM(no dimm) so it always use&amp;nbsp;&lt;SPAN&gt;twopass=0 and the initialize will be like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;START -&amp;gt; INIT DDRC1 -&amp;gt; WAIT DDRC1 -&amp;gt; INIT DDRC2 -&amp;gt; WAIT DDRC2 -&amp;gt; FINISH&lt;/P&gt;&lt;P&gt;So how to make the initialize sequence like below:&lt;/P&gt;&lt;P&gt;START -&amp;gt; INIT DDRC1 -&amp;gt; INIT DDRC2 -&amp;gt; WAIT DDRC1 -&amp;gt; WAIT DDRC2 -&amp;gt; FINISH&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;the twopass=1/2 is only for RDIMM, when force use&amp;nbsp;twopass=1/2, it always get stuck.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Anyone can help let me know how to deal it?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 22 Aug 2024 07:31:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1938176#M14808</guid>
      <dc:creator>Zburid</dc:creator>
      <dc:date>2024-08-22T07:31:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to initialize two DDRC in parallel with UDIMM(no dimm) in LX2160</title>
      <link>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1945232#M14841</link>
      <description>&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;From the write_ddrc_regs, every controller is initialed independently.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;twopass=1/2 is only for RDIMM, not for the different controllers.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Sep 2024 07:27:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1945232#M14841</guid>
      <dc:creator>June_Lu</dc:creator>
      <dc:date>2024-09-02T07:27:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to initialize two DDRC in parallel with UDIMM(no dimm) in LX2160</title>
      <link>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1945487#M14845</link>
      <description>Hi June, thanks for your reply. So there is no way for optimize the ATF in ddrc training stage?</description>
      <pubDate>Mon, 02 Sep 2024 12:00:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1945487#M14845</guid>
      <dc:creator>Zburid</dc:creator>
      <dc:date>2024-09-02T12:00:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to initialize two DDRC in parallel with UDIMM(no dimm) in LX2160</title>
      <link>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1946759#M14850</link>
      <description>&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;For the LSDK this is not support. And it's not validated.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;For the other feature that LSDK is not included, maybe customer could validate themselves.&lt;/P&gt;
&lt;P style="margin: 0in; font-family: Calibri; font-size: 11.0pt;" lang="en-US"&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Wed, 04 Sep 2024 02:18:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/How-to-initialize-two-DDRC-in-parallel-with-UDIMM-no-dimm-in/m-p/1946759#M14850</guid>
      <dc:creator>June_Lu</dc:creator>
      <dc:date>2024-09-04T02:18:16Z</dc:date>
    </item>
  </channel>
</rss>

