<?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 Changing uSDHC DLL in read path in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560898#M86936</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would like to manipulate the value of the read path DLL associated with uSDHC3 (eMMC) on an iMX6DL SoC in u-boot. The idea being that I would like to create a simple calibration routine that will vary the read delay to identify a passband of eMMC reads and then select the middle value of delay to use for maximum reliability and PVT immunity across different boards.&lt;/P&gt;&lt;P&gt;I am currently booting using SD card on uSDHC2 and trying to communicate using eMMC on&amp;nbsp; uSDHC3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It seems like there are two methods for adjusting the read DLL delay. Either setting DLL_CTRL_ENABLE (bit 0) of uSDHCx_DLL_CTRL and updating CLL_CTRL_SLV_DLY_TARGET0 and CLL_CTRL_SLV_DLY_TARGET1 with the desired delay value between 1/32th period and 4 periods&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set DLL_CTRL_SLV_OVERRIDE (bit 8) of uSDHCx_DLL_CTRL and manually define DLL_CTRL_SLV_OVERRIDE_VAL[6:0] (bits 15-9) of uSDHCx_DLL_CTRL to select one of 128 taps of the DLL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried both options but am unable set up a situation where an mmc read command over eMMC fails. With such a wide range of delays able to be selected, I would expect that when the clock to data delay is incorrect, the eMMC read should fail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I try option 1 above, uSDHCx_DLL_STATUS shows that DLL_STS_SLV_LOCK and DLL_STS_REF_LOCK are both set, DLL_STS_REF_SEL[6:0] is always 0000000 and DLL_STS_SLV_SEL[6:0] updates to reflect the desired target delay set in the CLL_CTRL_SLV_DLY_TARGET0 and CLL_CTRL_SLV_DLY_TARGET1 fields of uSDHCx_DLL_CTRL. But regardless of any values of CLL_CTRL_SLV_DLY_TARGET0&amp;nbsp; and CLL_CTRL_SLV_DLY_TARGET1 I select, I do not see any mmc read failures.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I try option 2, I set DLL_CTRL_SLV_OVERRIDE (bit 8) of uSDHCx_DLL_CTRL and manually define DLL_CTRL_SLV_OVERRIDE_VAL[6:0] (bits 15-9) of uSDHCx_DLL_CTRL but I do not see any change at all in uSDHCx_DLL_STATUS regardless of any value that I select. I would expect the DLL_STS_REF_SEL[6:0] field to reflect the currently selected reference tap but again, it is always zero.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My questions are:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Is my understanding of how to manipulate the read DLL register correct?&lt;/P&gt;&lt;P&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Is it possible that I am not actually changing the DLL settings like I think I am?&lt;/P&gt;&lt;P&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Are there set steps I need to follow to manipulate the read DLL when the eMMC interface is already running?&lt;/P&gt;&lt;P&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Why do I not see mmc read failures when I set the delay value to anything within the range of reference taps using either method in u-boot? I expect some values to pass and some to fail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is very much appreciated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 02 Aug 2016 08:47:24 GMT</pubDate>
    <dc:creator>jasongarrison</dc:creator>
    <dc:date>2016-08-02T08:47:24Z</dc:date>
    <item>
      <title>Changing uSDHC DLL in read path</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560898#M86936</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would like to manipulate the value of the read path DLL associated with uSDHC3 (eMMC) on an iMX6DL SoC in u-boot. The idea being that I would like to create a simple calibration routine that will vary the read delay to identify a passband of eMMC reads and then select the middle value of delay to use for maximum reliability and PVT immunity across different boards.&lt;/P&gt;&lt;P&gt;I am currently booting using SD card on uSDHC2 and trying to communicate using eMMC on&amp;nbsp; uSDHC3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It seems like there are two methods for adjusting the read DLL delay. Either setting DLL_CTRL_ENABLE (bit 0) of uSDHCx_DLL_CTRL and updating CLL_CTRL_SLV_DLY_TARGET0 and CLL_CTRL_SLV_DLY_TARGET1 with the desired delay value between 1/32th period and 4 periods&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set DLL_CTRL_SLV_OVERRIDE (bit 8) of uSDHCx_DLL_CTRL and manually define DLL_CTRL_SLV_OVERRIDE_VAL[6:0] (bits 15-9) of uSDHCx_DLL_CTRL to select one of 128 taps of the DLL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried both options but am unable set up a situation where an mmc read command over eMMC fails. With such a wide range of delays able to be selected, I would expect that when the clock to data delay is incorrect, the eMMC read should fail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I try option 1 above, uSDHCx_DLL_STATUS shows that DLL_STS_SLV_LOCK and DLL_STS_REF_LOCK are both set, DLL_STS_REF_SEL[6:0] is always 0000000 and DLL_STS_SLV_SEL[6:0] updates to reflect the desired target delay set in the CLL_CTRL_SLV_DLY_TARGET0 and CLL_CTRL_SLV_DLY_TARGET1 fields of uSDHCx_DLL_CTRL. But regardless of any values of CLL_CTRL_SLV_DLY_TARGET0&amp;nbsp; and CLL_CTRL_SLV_DLY_TARGET1 I select, I do not see any mmc read failures.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I try option 2, I set DLL_CTRL_SLV_OVERRIDE (bit 8) of uSDHCx_DLL_CTRL and manually define DLL_CTRL_SLV_OVERRIDE_VAL[6:0] (bits 15-9) of uSDHCx_DLL_CTRL but I do not see any change at all in uSDHCx_DLL_STATUS regardless of any value that I select. I would expect the DLL_STS_REF_SEL[6:0] field to reflect the currently selected reference tap but again, it is always zero.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My questions are:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Is my understanding of how to manipulate the read DLL register correct?&lt;/P&gt;&lt;P&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Is it possible that I am not actually changing the DLL settings like I think I am?&lt;/P&gt;&lt;P&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Are there set steps I need to follow to manipulate the read DLL when the eMMC interface is already running?&lt;/P&gt;&lt;P&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Why do I not see mmc read failures when I set the delay value to anything within the range of reference taps using either method in u-boot? I expect some values to pass and some to fail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is very much appreciated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Aug 2016 08:47:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560898#M86936</guid>
      <dc:creator>jasongarrison</dc:creator>
      <dc:date>2016-08-02T08:47:24Z</dc:date>
    </item>
    <item>
      <title>Re: Changing uSDHC DLL in read path</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560899#M86937</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&gt;&amp;nbsp; Please follow approach, described in section 67.5.3.2.4 [DLL (Delay Line) in Read Path]&lt;BR /&gt;of the i.MX6 S/ DL RM. Note, "In override mode, there is no need to set the DLL_enable."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Aug 2016 08:05:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560899#M86937</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2016-08-15T08:05:32Z</dc:date>
    </item>
    <item>
      <title>Re: Changing uSDHC DLL in read path</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560900#M86938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am seeing the same symptoms that Jason was seeing where in Override mode, the DLL_STATUS clock status bits never assert (REF_LOCK and SLV_LOCK)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am following the 7 step procedure documented in 67.5.3.2.4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any thoughts?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Ken Carlson&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 31 Jul 2019 18:04:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Changing-uSDHC-DLL-in-read-path/m-p/560900#M86938</guid>
      <dc:creator>ken_carlson</dc:creator>
      <dc:date>2019-07-31T18:04:21Z</dc:date>
    </item>
  </channel>
</rss>

