<?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: Problems with I210 and external PHYs in Embedded Connectivity</title>
    <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202431#M480</link>
    <description>&lt;P&gt;I think I have figured this out.  It declares an error if it&lt;/P&gt;&lt;P&gt;ever reads all ones, as happens when the MDIO target is&lt;/P&gt;&lt;P&gt;missing.  I assume you get this error if you read a register&lt;/P&gt;&lt;P&gt;that really is all ones!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, now I have the MDIO transfers working to&lt;/P&gt;&lt;P&gt;the 88E1111, I find I get a similar behaviour to that&lt;/P&gt;&lt;P&gt;I had with the 88E1512 parts.  After the code runs,&lt;/P&gt;&lt;P&gt;the RJ45 link between PHY and the external switch&lt;/P&gt;&lt;P&gt;goes down.  At power up, the link comes up.  Is it&lt;/P&gt;&lt;P&gt;possible that there is a problem with the code that&lt;/P&gt;&lt;P&gt;sets up these PHYs.  I realize that not many people&lt;/P&gt;&lt;P&gt;use the I210 with an external RJ45 PHY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, Paul.&lt;/P&gt;</description>
    <pubDate>Thu, 18 Feb 2016 21:59:56 GMT</pubDate>
    <dc:creator>PWilc1</dc:creator>
    <dc:date>2016-02-18T21:59:56Z</dc:date>
    <item>
      <title>Problems with I210 and external PHYs</title>
      <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202429#M478</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have a board with two I210 parts on it. &lt;/P&gt;&lt;P&gt;The I210 communicates with a PHY on a daughter card.&lt;/P&gt;&lt;P&gt;We have two different types of daughter card.  One has&lt;/P&gt;&lt;P&gt;a Marvell 88E1111 device and the other has a Marvell 88E1512&lt;/P&gt;&lt;P&gt;part on it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I turned on the debugging messages in the Intel driver software.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With the 88E1512 board, I see a lot of routines being called,&lt;/P&gt;&lt;P&gt;but the PHY doesn't get set up correctly.  On power up the&lt;/P&gt;&lt;P&gt;RJ45 side of the PHY gets linkup to a switch, but not after&lt;/P&gt;&lt;P&gt;the driver code runs.  So, my question is has this particular&lt;/P&gt;&lt;P&gt;combination of I210 and PHY been tested recently?  It&lt;/P&gt;&lt;P&gt;obviously requires a lot of work to test every release of&lt;/P&gt;&lt;P&gt;software with every possible hardware permutation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With the 88E1111 we have problems with getting occasional MDIO errors&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;when the I210 is doing MDIO reads.  On reading the code, the&lt;P&gt;&amp;nbsp;&lt;/P&gt;"MDI Error" message is triggered by the MDI_ERR bit being&lt;P&gt;&amp;nbsp;&lt;/P&gt;set in the I210's MDIC register (0x20).&lt;P&gt;&lt;/P&gt;&lt;P&gt;On page 377 of the I210 manual, there is the statement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This bit is set to 1b by hardware when it fails to complete an MDI read.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Software should make sure this bit is clear (0b) before issuing an MDI read&lt;P&gt;&amp;nbsp;&lt;/P&gt;or write command.&lt;P&gt;&lt;/P&gt;&lt;P&gt;My question is what triggers the setting of this bit?  The MDIO&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;protocol has no handshaking with the MDIO slave.  If there is&lt;P&gt;&amp;nbsp;&lt;/P&gt;no slave at all, the MDIO master will just drive the read pattern,&lt;P&gt;&amp;nbsp;&lt;/P&gt;followed by the PHY address and register address.  After that the&lt;P&gt;&amp;nbsp;&lt;/P&gt;pull-up will pull the MDIO data line high, and all ones will be read.&lt;P&gt;&amp;nbsp;&lt;/P&gt;How do you get an error?&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, Paul.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Feb 2016 01:57:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202429#M478</guid>
      <dc:creator>PWilc1</dc:creator>
      <dc:date>2016-02-18T01:57:08Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I210 and external PHYs</title>
      <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202430#M479</link>
      <description>&lt;P&gt;Hello PVWB,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for contacting the Intel Embedded Community.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We suggest you to follow the suggestions provided to you in the Forum Carlos_A.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Feb 2016 19:47:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202430#M479</guid>
      <dc:creator>CarlosAM_INTEL</dc:creator>
      <dc:date>2016-02-18T19:47:25Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I210 and external PHYs</title>
      <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202431#M480</link>
      <description>&lt;P&gt;I think I have figured this out.  It declares an error if it&lt;/P&gt;&lt;P&gt;ever reads all ones, as happens when the MDIO target is&lt;/P&gt;&lt;P&gt;missing.  I assume you get this error if you read a register&lt;/P&gt;&lt;P&gt;that really is all ones!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, now I have the MDIO transfers working to&lt;/P&gt;&lt;P&gt;the 88E1111, I find I get a similar behaviour to that&lt;/P&gt;&lt;P&gt;I had with the 88E1512 parts.  After the code runs,&lt;/P&gt;&lt;P&gt;the RJ45 link between PHY and the external switch&lt;/P&gt;&lt;P&gt;goes down.  At power up, the link comes up.  Is it&lt;/P&gt;&lt;P&gt;possible that there is a problem with the code that&lt;/P&gt;&lt;P&gt;sets up these PHYs.  I realize that not many people&lt;/P&gt;&lt;P&gt;use the I210 with an external RJ45 PHY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks, Paul.&lt;/P&gt;</description>
      <pubDate>Thu, 18 Feb 2016 21:59:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202431#M480</guid>
      <dc:creator>PWilc1</dc:creator>
      <dc:date>2016-02-18T21:59:56Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I210 and external PHYs</title>
      <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202432#M481</link>
      <description>&lt;P&gt;Hello PVWB,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In order to better understand this situation, we would like to address the following questions:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please tell us the Operating System (OS), driver version, NVM image use to talk to these external PHY?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please inform us know how long are the traces to the PHY?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please let us know the type of connection is being used?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please confirm if this design has been looked by Intel?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These questions have been addressed to have more information of the design and usage model, in order to have a better idea of the problem and give you the proper information.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is important to let you know that the 88E1111 is supported with our drivers, we have idea that the 88E1512 is unsupported. In case that you want to work with an unsupported device, you should build your own driver.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again for your collaboration.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Carlos_A.&lt;/P&gt;</description>
      <pubDate>Fri, 19 Feb 2016 13:38:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202432#M481</guid>
      <dc:creator>CarlosAM_INTEL</dc:creator>
      <dc:date>2016-02-19T13:38:23Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I210 and external PHYs</title>
      <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202433#M482</link>
      <description>&lt;P&gt;Dear Carlos,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The two I210 devices starting working on Friday.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a summary of what we had to do:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We changed the Initialization control word 3 (0x24) from 0x4220&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;to 0x4224.  This turns on the external MDIO mode.  My guess&lt;P&gt;&amp;nbsp;&lt;/P&gt;is the original used I2C with an SFP.  We also had to update&lt;P&gt;&amp;nbsp;&lt;/P&gt;the checksum.&lt;P&gt;&lt;/P&gt;&lt;P&gt;The correct PHY address has to be specified in Flash word 0x13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;(Initialization control word 4).  This is probably relevant to&lt;P&gt;&amp;nbsp;&lt;/P&gt;the other person having trouble with SGMII operation with an&lt;P&gt;&amp;nbsp;&lt;/P&gt;SFP. (P 187 of the I210 manual)&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is a bug somewhere in the code that powers down the&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;PHY.  This is the 0x800 bit in PHY word 0, for at least the&lt;P&gt;&amp;nbsp;&lt;/P&gt;88E1111.  We did the rude hack of adding the following to the&lt;P&gt;&amp;nbsp;&lt;/P&gt;e1000_write_phy_reg_mdic routine:&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (offset == 0 &amp;amp;&amp;amp; (data &amp;amp; 0x800)) data ^= 0x800; // Rude hack&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This solves the power down problem, if not very elegantly!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is another, probably mostly harmless bug around line 275&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;and 334 of e1000_phy.c.  This puts the PHY address in the register E1000_MDIC,&lt;P&gt;&amp;nbsp;&lt;/P&gt;(0x20) (p 376), reserved area.  For the I210, the PHY address&lt;P&gt;&amp;nbsp;&lt;/P&gt;is stored in I210 register E1000_MDICNFG, (0xE04) (p 377).&lt;P&gt;&amp;nbsp;&lt;/P&gt;The other effect of this is, if code elsewhere changes the value of&lt;P&gt;&amp;nbsp;&lt;/P&gt;phy-&amp;gt;addr, these changes will not get copied into E1000_MDICNFG,&lt;P&gt;&amp;nbsp;&lt;/P&gt;so the address loaded from the Flash will continue to be used&lt;P&gt;&amp;nbsp;&lt;/P&gt;for the MDIO transfers.&lt;P&gt;&lt;/P&gt;&lt;P&gt;Our starting image was &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Flash_images/I210/SGMII/Dev_Start_I210_Sgmii_NOMNG_16Mb_A2_3.25_0.03.bin</description>
      <pubDate>Tue, 23 Feb 2016 00:39:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202433#M482</guid>
      <dc:creator>PWilc1</dc:creator>
      <dc:date>2016-02-23T00:39:52Z</dc:date>
    </item>
    <item>
      <title>Re: Problems with I210 and external PHYs</title>
      <link>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202434#M483</link>
      <description>&lt;P&gt;Hello PVWB,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for share the way that you solve your problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are glad to hear that your problem has been solved.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please do not hesitate to contact us again if you have more questions related to Intel Embedded products.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Carlos_A.&lt;/P&gt;</description>
      <pubDate>Tue, 23 Feb 2016 15:47:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Embedded-Connectivity/Problems-with-I210-and-external-PHYs/m-p/202434#M483</guid>
      <dc:creator>CarlosAM_INTEL</dc:creator>
      <dc:date>2016-02-23T15:47:28Z</dc:date>
    </item>
  </channel>
</rss>

