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.

OMAP L-138 and RMII

Other Parts Discussed in Thread: DA8XX, OMAPL138

Hello everyone!

I'm currently in  progress of booting Linux on a custom board created by my company. So far my work was going smoothly until I encountered a problem on the last step of booting Linux - ethernet interface on RMII doesn't work correctly.

I'm using the EVM board's reference u-boot code adjusting it to our needs. The only difference that I can't sort out is that our board is using RMII instead or MII for interfacing between the ethernet MAC and PHY. The sample code does include the use of RMII as the expander board for EVM did include a PHY working on that interface. I confronted it with the documentation and concludet that I did everything ok:

- set the PINMUX14 to 0x88888800 (for RMII_RXD[1]. RMII_TXD[0], RMII_TXEN, RMII_RXD[1], RMII_RXD[0], RMII_RXER)
- set the PINMUX15 to 0x00000088 (for RMII_MHZ_50, RMII_CRS_DV)
- set the PINMUX4 accordingly (e.g. 0x11222288 - for MDIO_CLK and MDIO_D)
- set the  CFGCHIP3 register to use RMII instead of MII (in u-boot code: REG(CFGCHIP3) |= (1 << 8) )
- set the RMIISPEED in MACCONTROL register to '1' (100 Mbps)

Currently the situation looks like this:
U-boot successfully locates the PHY and can write and read its registers through mii write, mii dump, mii read commands. Plugging the connector into the RJ45 jack lights up the LEDs and the one responsible for indicating that transmission occurskeeps blinking. The registers indicate that autonegotiation took place. What doesn't work is the whole rest...  U-boots enviromental varialbes like ethaddr, ipaddr, netmask are set accordingly but when I try to ping anyone in the network i get the message that the host is not alive.
I looked into the issue and concluded that u-boot doesn't indicate any error while performing the davinci_eth_send_packet function. It returns a positive value - the packet's length. Neverthanless the packet doesn't reach its destination. While sending the packets, all of the registers I mentioned above are set to correct values.
The dhcp command in u-boot fails as well. No error is indicated during davinci_eth_send_packet.
The PHY I'm using is IP101A LF from IC Plus Corp.

Am I missing something in the configuration or would you advise me to look into the issue with an oscilloscope and not kscope :)?

Regards.
Szymon