I've been trying to get a TCP/IP driver up and running on the Spectrum Digital DM816x/C6a816x/AM389x EVM, but I'm encountering a problem that I can't figure out.
Here's a short rundown of what I'm doing:
Enable the clocks (both the CM_ETHERNET_CLKSTCTRL and ETHERNET_0/1_CLKCTRL clocks)
Configure pins (nothing done here since all the pins related to the EMAC are not muxed)
Software resets (EMAC and EMAC control)
Configure PHY
Initialize all 16 header pointers
Program the MACADDRLO for each MACINDEX, and MACADDRHI for the channel being used
Program MACSRCADDRLO and MACSRCADDRHI
Set unicast for channel used
Set mode (Full duplex, MII)
Set divider (SYSCLK5 = ~250MHZ, divider ~100 for 2.5MHz)
Configure interrupts
Initialize descriptors (include writing the first receive descriptor to the head pointer)
Enable DMA controllers
Enable Rx/Tx interrupts
Enable Rx/Tx
After doing this I try to ping the board with no success. Looking through the statistics registers I can see that I receive some CRC errors, some undersized frames, some network octet frames, some receive FIFO or DMA Start of Frame Overruns, and some Receive DMA Overruns. However, I never get any interrupts and my descriptors are untouched.
Any ideas on what I might be missing or doing wrong here?