This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM365 PHY Problem - LXT971

We are having problems bringing up the Ethernet connection on our DM365 design. We are using a LXT971 PHY, as we used on a previous DM6446 design. There is nothing else on the EMAC bus.

Our board designed is closely based on the DM365 EVM and we are using the U-Boot code based on this EMV board (make davinci_dm365_evm_config). The main difference is the LXT971 PHY, where the EVM uses a KS8001L, which uboot recognizes as a Generic PHY.

UBoot recognizes the LXT971 PHY and we are able to get link at 100M.

Connecting to a network, Ping works sporadically. However, we are never able to get a TCP/IP connection, such as TFTP or DHCP.

We then started running PHY loopback tests, both internal (phy register 0x0: 0x6100) and external (loop back plug). On small packet sizes, it mostly works. However, it will eventually fail. When testing 10MB loopback ( phy register 0x0: 0x4100) it won’t even create an active link.

We wrote a test that allows us to change the number of bytes in the packets. It will consistently work, up to 720 bytes. It will fail at 721.

We have tried this on four different boards and get "almost" the exact same results.

We saw a note about increasing the MII drive strength on the LXT971, but this had no impact.

 

HELP!

  • Doug,

    There's one more level of loopback that you can try, which is within the EMAC module itself using the MACCONTROL[LOOPBACK] setting.

    Are you able to determine anything through the MACSTATUS or statistics registers about how these packets are being screened out?  It may indicate if the failure is in Tx or Rx.  If the failure is in Rx, it may be useful to enable the promiscuous receive feature to do a byte-for-byte comparison of Tx-Rx packets.

    Is the internal EMAC reference clock (SYSCLK4) configured for the default divide-down?  If the EMAC reference clock is too slow, it may have internal buffering problems.  You can also try to change the FIFOCONTROL settings to see if this helps.

    -Tommy

  • It turns out that the problem was UBOOT was writing to Register 22 in the LXT971 PHY. This register is defined as Reserved.

    When we took that write out, the PHY works great!

    We found the problem while trying to setup the EMAC loopback, as you suggested.

    Thanks!

    Doug