<?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: Completion flag rarely NOT assert when i.MX53 FEC MII recieve completed in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Completion-flag-rarely-NOT-assert-when-i-MX53-FEC-MII-recieve/m-p/409120#M61113</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi torus1000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can try to check if this is caused by FEC FIFO overrun issue, &lt;/P&gt;&lt;P&gt;that is FEC DMA cannot access ddr in time:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1, Prioritize the master via M4IF.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Increase FEC priority:&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; 0x63fd_8044=0x33&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; 0x63fd_8048=0x1901a3&lt;/P&gt;&lt;P&gt;2, Increase FEC RX FIFO size.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RX FIFO size = 1.5*(orginal size) =&amp;gt; 0x63fe_c150=0x480&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RX FIFO size = 1.625*(orginal size) =&amp;gt; 0x63fe_c150=0x460&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The result as below table, and the patch as below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kernel Patch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--- a/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;@@ -1300,6 +1300,11 @@ fec_restart(struct net_device *dev, int duplex)&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; writel(0, fep-&amp;gt;hwp + FEC_HASH_TABLE_LOW);&lt;/P&gt;&lt;P&gt;#endif&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; /* Set RX FIFO */&lt;/P&gt;&lt;P&gt;+#ifdef CONFIG_ARCH_MX53&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; writel(0x480, fep-&amp;gt;hwp + FEC_R_FSTART);&lt;/P&gt;&lt;P&gt;+#endif&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; /* Set maximum receive buffer size. */&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; writel(PKT_MAXBLR_SIZE, fep-&amp;gt;hwp + FEC_R_BUFF_SIZE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Uboot patch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--- a/board/freescale/mx53_smd/lowlevel_init.S&lt;/P&gt;&lt;P&gt;+++ b/board/freescale/mx53_smd/lowlevel_init.S&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -81,6 +81,17 @@&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; beq 1b&lt;/P&gt;&lt;P&gt;.endm&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+/* M4IF setup */&lt;/P&gt;&lt;P&gt;+.macro init_m4if&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =M4IF_BASE_ADDR&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; ldr r1, =0x33&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x44]&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; ldr r1, =0x001901A3&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x48]&lt;/P&gt;&lt;P&gt;+.endm /* init_m4if */&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;.macro init_clock&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; ldr r0, =ROM_SI_REV&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; ldr r1, [r0]&lt;/P&gt;&lt;P&gt;@@ -218,6 +229,8 @@ lowlevel_init:&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; init_l2cc&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; init_aips&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; init_m4if&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; init_clock&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;igor&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Jun 2015 01:04:40 GMT</pubDate>
    <dc:creator>igorpadykov</dc:creator>
    <dc:date>2015-06-04T01:04:40Z</dc:date>
    <item>
      <title>Completion flag rarely NOT assert when i.MX53 FEC MII recieve completed</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Completion-flag-rarely-NOT-assert-when-i-MX53-FEC-MII-recieve/m-p/409119#M61112</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Expert-team,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FEC_EIR[23](MII interrupt) rarely NOT assert when i.MX53 FEC MII data recieve (or read reg of PHY) completed.&lt;BR /&gt;If this happend, communication force disconnected.&amp;nbsp; It was clearly not satisfied our product requirements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why didn't FEC_EIR[23] flag changed?&lt;/P&gt;&lt;P&gt;Is there any workaround for this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 May 2015 02:48:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Completion-flag-rarely-NOT-assert-when-i-MX53-FEC-MII-recieve/m-p/409119#M61112</guid>
      <dc:creator>torus1000</dc:creator>
      <dc:date>2015-05-29T02:48:11Z</dc:date>
    </item>
    <item>
      <title>Re: Completion flag rarely NOT assert when i.MX53 FEC MII recieve completed</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Completion-flag-rarely-NOT-assert-when-i-MX53-FEC-MII-recieve/m-p/409120#M61113</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi torus1000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can try to check if this is caused by FEC FIFO overrun issue, &lt;/P&gt;&lt;P&gt;that is FEC DMA cannot access ddr in time:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1, Prioritize the master via M4IF.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Increase FEC priority:&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; 0x63fd_8044=0x33&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; 0x63fd_8048=0x1901a3&lt;/P&gt;&lt;P&gt;2, Increase FEC RX FIFO size.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RX FIFO size = 1.5*(orginal size) =&amp;gt; 0x63fe_c150=0x480&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RX FIFO size = 1.625*(orginal size) =&amp;gt; 0x63fe_c150=0x460&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The result as below table, and the patch as below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kernel Patch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--- a/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;+++ b/drivers/net/fec.c&lt;/P&gt;&lt;P&gt;@@ -1300,6 +1300,11 @@ fec_restart(struct net_device *dev, int duplex)&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; writel(0, fep-&amp;gt;hwp + FEC_HASH_TABLE_LOW);&lt;/P&gt;&lt;P&gt;#endif&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; /* Set RX FIFO */&lt;/P&gt;&lt;P&gt;+#ifdef CONFIG_ARCH_MX53&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; writel(0x480, fep-&amp;gt;hwp + FEC_R_FSTART);&lt;/P&gt;&lt;P&gt;+#endif&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; /* Set maximum receive buffer size. */&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; writel(PKT_MAXBLR_SIZE, fep-&amp;gt;hwp + FEC_R_BUFF_SIZE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Uboot patch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--- a/board/freescale/mx53_smd/lowlevel_init.S&lt;/P&gt;&lt;P&gt;+++ b/board/freescale/mx53_smd/lowlevel_init.S&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@@ -81,6 +81,17 @@&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; beq 1b&lt;/P&gt;&lt;P&gt;.endm&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+/* M4IF setup */&lt;/P&gt;&lt;P&gt;+.macro init_m4if&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr r0, =M4IF_BASE_ADDR&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; ldr r1, =0x33&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x44]&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; ldr r1, =0x001901A3&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str r1, [r0, #0x48]&lt;/P&gt;&lt;P&gt;+.endm /* init_m4if */&lt;/P&gt;&lt;P&gt;+&lt;/P&gt;&lt;P&gt;.macro init_clock&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; ldr r0, =ROM_SI_REV&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; ldr r1, [r0]&lt;/P&gt;&lt;P&gt;@@ -218,6 +229,8 @@ lowlevel_init:&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; init_l2cc&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; init_aips&lt;/P&gt;&lt;P&gt;+&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; init_m4if&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; init_clock&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;igor&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Jun 2015 01:04:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Completion-flag-rarely-NOT-assert-when-i-MX53-FEC-MII-recieve/m-p/409120#M61113</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-06-04T01:04:40Z</dc:date>
    </item>
  </channel>
</rss>

