<?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: iMX6SX : FECs stop working with PCIe external clock in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/iMX6SX-FECs-stop-working-with-PCIe-external-clock/m-p/1087004#M159330</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;&amp;nbsp; I've sent You directly some comments.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Yuri.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 17 Jun 2020 08:09:33 GMT</pubDate>
    <dc:creator>Yuri</dc:creator>
    <dc:date>2020-06-17T08:09:33Z</dc:date>
    <item>
      <title>iMX6SX : FECs stop working with PCIe external clock</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/iMX6SX-FECs-stop-working-with-PCIe-external-clock/m-p/1087003#M159329</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;Dear all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; our board has got an iMX6SX connected to a x86 module by PCIe.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN style="color: #000000;"&gt;iMX6SX is a PCIe EP&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #000000;"&gt;x86 module is a PCIe RC&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt; We have patched uboot-imx6-imx_v2017.03_4.9.88_2.0.0_ga to setup the PCIe EP and this is OK.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; We had the PCIe working by getting the PCIe reference clock from the external 100MHz PCIexpress clock.&lt;BR /&gt; See also the AN5158 - "PCI Express Certification Guide for the i.MX 6SoloX".&lt;BR /&gt; But in this way the &lt;STRONG&gt;FECs stop working&lt;/STRONG&gt; because PCIe and FEC clocks are common and FECs clock now is wrong.&lt;BR /&gt; Then we searched the forum and the reference manual: we decided to try to clock the FECs from an external 125MHz.&lt;BR /&gt; It seems that we did all the necessary but it doesn't work out.&lt;BR /&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; In details:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; To have a good and stable PCIe link we have to &lt;SPAN&gt;use the PCIe 100MHz differential ref clock, coming from the PC:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; - bypass &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;PLL ENET&lt;/SPAN&gt; (set bit16 of &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;CCM_ANALOG_PLL_ENET&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; - select &lt;SPAN&gt;CLK1 as bypass&lt;/SPAN&gt; source (set bit14, clear bit15 of &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;CCM_ANALOG_PLL_ENET&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; - CLK1 becomes an input:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - clear &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;ANADIG_ANA_MISC1_LVDSCLK1_OBEN&lt;/SPAN&gt; (clear bit10 of &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;CCM_ANALOG_MISC1&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - set &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;ANADIG_ANA_MISC1_LVDSCLK1_IBEN&lt;/SPAN&gt; (set bit12 of &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;CCM_ANALOG_MISC1&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; This is the code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; reg = readl(&amp;amp;imx_ccm-&amp;gt;analog_pll_enet);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; reg |= (1&amp;lt;&amp;lt;16);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; writel(reg, &amp;amp;imx_ccm-&amp;gt;analog_pll_enet);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; reg |= (1&amp;lt;&amp;lt;14);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; reg &amp;amp;= ~(1&amp;lt;&amp;lt;15);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; writel(reg, &amp;amp;imx_ccm-&amp;gt;analog_pll_enet);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; clrsetbits_le32(&amp;amp;anatop_regs-&amp;gt;ana_misc1,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&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; ANADIG_ANA_MISC1_LVDSCLK1_OBEN |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&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; ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&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; ANADIG_ANA_MISC1_LVDSCLK1_IBEN | lvds1_clk_sel);&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; With these changes PCIe link is OK.&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; The problem is now that the FECs do not work because the clock is shared with PCIe.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; &lt;SPAN&gt;We use two&lt;/SPAN&gt; KSZ9031 PHYs, 1GBit.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; To solve this problem we try to clock the FECs from a 125MHz coming from the PHY.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; &lt;SPAN&gt;&lt;SPAN&gt;Of course, with respect to the evaluation board, the PHYs are not clocked by a 25MHz coming from the iMX: they use their internal oscillator, with a crystal.&lt;/SPAN&gt;&lt;BR /&gt; In details, the CLK125_NDO pin of the PHY is connected to &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;ENET1_TX_CLK&lt;/SPAN&gt; and &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;ENET2_TX_CLK&lt;/SPAN&gt;.&lt;BR /&gt; And these pads are muxed to &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;ALT1: ENET1_REF_CLK1&lt;/SPAN&gt; and &lt;SPAN style="font-family: terminal, monaco, monospace;"&gt;ENET2_REF_CLK2&lt;/SPAN&gt;.&lt;BR /&gt; &lt;/SPAN&gt;The code to get the 125MHz external clock is the following:&lt;/SPAN&gt;&lt;BR /&gt; &lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt;imx_iomux_v3_setup_pad(MX6_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&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; MUX_PAD_CTRL(ENET_CLK_PAD_CTRL));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; imx_iomux_v3_setup_pad(MX6_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&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; MUX_PAD_CTRL(ENET_CLK_PAD_CTRL));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; clrsetbits_le32(&amp;amp;iomuxc_regs-&amp;gt;gpr[1], (1&amp;lt;&amp;lt;17), (1&amp;lt;&amp;lt;13));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000; font-family: terminal, monaco, monospace; font-size: 13px;"&gt; clrsetbits_le32(&amp;amp;iomuxc_regs-&amp;gt;gpr[1], (1&amp;lt;&amp;lt;18), (1&amp;lt;&amp;lt;14));&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; Our questions are:&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; 1. Is it possibile to have &lt;STRONG&gt;both&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; - an external clock ref for PCIe&lt;SPAN&gt; (100MHz, CLK1p/n pads)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; - an external clock ref for FECs &lt;SPAN&gt;(125MHz) and thus the ethernet working&lt;/SPAN&gt;?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt; 2. &lt;SPAN&gt;So, how to provide the 125MHz external clock to the FECs?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN&gt;3. Internal clock is good for &lt;STRONG&gt;Gen1&lt;/STRONG&gt;? or we have to use external clock ? &lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN&gt;Stefano and Paolo&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Jun 2020 08:21:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/iMX6SX-FECs-stop-working-with-PCIe-external-clock/m-p/1087003#M159329</guid>
      <dc:creator>paolo_minazzi</dc:creator>
      <dc:date>2020-06-11T08:21:51Z</dc:date>
    </item>
    <item>
      <title>Re: iMX6SX : FECs stop working with PCIe external clock</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/iMX6SX-FECs-stop-working-with-PCIe-external-clock/m-p/1087004#M159330</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;&amp;nbsp; I've sent You directly some comments.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Yuri.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Jun 2020 08:09:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/iMX6SX-FECs-stop-working-with-PCIe-external-clock/m-p/1087004#M159330</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2020-06-17T08:09:33Z</dc:date>
    </item>
  </channel>
</rss>

