<?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 force iMX6 PCIe into Gen 1 mode in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264958#M27388</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Alex, please click Correct Answer/Helpful Answer, if your question has been answered.&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yixing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 Oct 2013 03:33:24 GMT</pubDate>
    <dc:creator>YixingKong</dc:creator>
    <dc:date>2013-10-14T03:33:24Z</dc:date>
    <item>
      <title>How to force iMX6 PCIe into Gen 1 mode</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264956#M27386</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am evaluating the Sabre SD board with a PCIe switch, and I am having issues getting it to work in Gen 2 mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is using the Linux kernel 3.0.35-4.0.0 BSP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to force it into Gen 1 mode for testing, and this patch has worked to get it going for initial bring up.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;===========================================================================&lt;/P&gt;&lt;P&gt;--- patched-linux-3.0.35-imx/arch/arm/mach-mx6/pcie.c&amp;nbsp;&amp;nbsp; 2013-09-26 14:49:46.000000000 -0700&lt;/P&gt;&lt;P&gt;+++ linux-3.0.35-imx/arch/arm/mach-mx6/pcie.c&amp;nbsp;&amp;nbsp; 2013-09-26 15:37:49.720701981 -0700&lt;/P&gt;&lt;P&gt;@@ -1021,8 +1021,13 @@ static int __devinit imx_pcie_pltfm_prob&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!(pdata-&amp;gt;type_ep)) {&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; /*Only RC: togle the external card's reset */&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; card_reset(dev) ;&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; usleep_range(4000, 5000);&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imx_pcie_regions_setup(dev, dbi_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; usleep_range(4000, 5000);&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; /* Force GEN1 */&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; writel(((readl(dbi_base + LNK_CAP) &amp;amp; 0xfffffff0) | 0x1), dbi_base + LNK_CAP);&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; usleep_range(4000, 5000);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&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; pr_info("PCIE: %s start link up.\n", __func__);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;===========================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, now I am testing suspend to RAM, and I am having problems getting it working. Is there a recommended way I can force it to Gen1 that will survive a suspend/resume cycle? Note that I have applied the L2 reset patch and I am able to successfully suspend/resume using an e1000e based card. I have tried rewriting the LNK_CAP register after coming out of suspend but it does not seem to have any effect. I am thinking that I'm simply not setting it at the correct time, and hope that someone can suggest where it should go.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Oct 2013 17:40:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264956#M27386</guid>
      <dc:creator>AlexHarford</dc:creator>
      <dc:date>2013-10-04T17:40:36Z</dc:date>
    </item>
    <item>
      <title>Re: How to force iMX6 PCIe into Gen 1 mode</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264957#M27387</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi:&lt;BR /&gt;I used to reply this customer's question by "PCIe imx6 switch issue continuation of SR 1-1159433048" , here is details.&lt;/P&gt;&lt;P&gt;At my side, I used the codes listed below too.&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; /* Force GEN1 */&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; writel(((readl(dbi_base + LNK_CAP) &amp;amp; 0xfffffff0) | 0x1), dbi_base + LNK_CAP);&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; usleep_range(4000, 5000);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My tests:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;Because I don’t have PLX8603 switch, I just used the i.MX6Q SD + GEN2 PCIe EP device(usb3.0 xhci device)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;to do the suspend/resume tests&amp;nbsp; when the link_cap of PCIe RC(i.MX6Q SD) is limited to PCIe GEN1 speed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt; color: red;"&gt;Before suspend:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;&lt;BR /&gt; root@freescale ~$ lspci -vv&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;00:00.0 PCI bridge: Unknown device 16c3:abcd (rev 01) (prog-if 00 [Normal decode])&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&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; Device: MaxPayload 128 bytes, MaxReadReq 512 bytes&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&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;SPAN style="color: red;"&gt;Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 0&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&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; Link: Latency L0s &amp;lt;1us, L1 &amp;lt;8us&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt; color: red;"&gt;After resume back:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;root@freescale ~$ lspci -vv&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;00:00.0 PCI bridge: Unknown device 16c3:abcd (rev 01) (prog-if 00 [Normal decode])&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&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; Link: ASPM Disabled RCB 64 bytes CommClk- ExtSynch-&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&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;SPAN style="color: red;"&gt;Link: Speed 2.5Gb/s, Width x1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&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; Root: Correctable- Non-Fatal- Fatal- PME-&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt; color: red;"&gt;The ‘&lt;/SPAN&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'HelveticaLTStd-Roman','sans-serif'; color: red;"&gt;Max_Link_Speeds&lt;/SPAN&gt;&lt;SPAN style="font-size: 14.0pt; color: red;"&gt;’ of 0x7c LNK_CAP is always 1 after out of the suspend.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;root@freescale ~$ ./memtool -32 01ffc000 40 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;Reading 0x80 count starting at address 0x01FFC000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC000:&amp;nbsp; ABCD16C3 00100147 06040001 00010010&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC010:&amp;nbsp; 01000000 00000000 00010100 000000F0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC020:&amp;nbsp; 01100110 0000FFF0 00000000 00000000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC030:&amp;nbsp; 00000000 00000040 00000000 0001019B&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC040:&amp;nbsp; DBC35001 00000000 00000000 00000000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC050:&amp;nbsp; 01807005 00000000 00000000 00000000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC060:&amp;nbsp; 00000000 00000000 00000000 00000000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;0x01FFC070:&amp;nbsp; 00420010 00008000 00102010 &lt;SPAN style="color: red;"&gt;0011CC11&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: red; font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;Regarding to your description, it seems that the LNK_CAP is changed, right?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;So I suggest customer that&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;"can you debug into the code, and make a check when LNK_CAP is changed?"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;BTW, attached the email.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;Best Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 14.0pt;"&gt;Richard&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: red; font-size: 14.0pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 12 Oct 2013 04:49:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264957#M27387</guid>
      <dc:creator>richard_zhu</dc:creator>
      <dc:date>2013-10-12T04:49:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to force iMX6 PCIe into Gen 1 mode</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264958#M27388</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Alex, please click Correct Answer/Helpful Answer, if your question has been answered.&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yixing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Oct 2013 03:33:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-force-iMX6-PCIe-into-Gen-1-mode/m-p/264958#M27388</guid>
      <dc:creator>YixingKong</dc:creator>
      <dc:date>2013-10-14T03:33:24Z</dc:date>
    </item>
  </channel>
</rss>

