Hello,
I am trying to figure out how to transmit a single byte of data to my PHY on a custom T2080 board. I can communicate with the PHY via MDIO and read it's identifier and set it's LEDs. Now I want to set the PHY to loop back mode (I know how to do this) so that when I transmit data via the RGMII TX interface it will just loop back into the RGMII RX interface. However, I can't seem to find any info on where to write my data to so that I can transmit via the RGMII interface. This is bare metal by the way so I can't use any Linux API's to do the heavy lifting, but I am not trying to implement a full TCP/IP stack either.
Thank you for your help!
Solved! Go to Solution.
There is no way to send a single byte of data over RGMII, the software
does not have direct access to it's transmit FIFO. What DPAA exchanges
with software, is essentially frames. Basically, all three DPAA components,
Bman, Qman and Fman have to be initialized to exchange network frames over an
external interface, regardless of it's type (this does not apply to MDIO,
but this is a PHY management interface). If you want to do a bare board,
simple network exchange test, the best solution is probably
FMan Independent mode, see T2080DPAARM, Section 5.13.15. This is still
a multi-step process, but much simpler, compared to the full DPAA
bring up sequence. u-Boot Fman driver uses this mode, btw:
http://git.freescale.com/git/cgit.cgi/ppc/sdk/u-boot.git/tree/drivers/net/fm/fm.c
http://git.freescale.com/git/cgit.cgi/ppc/sdk/u-boot.git/tree/drivers/net/fm/eth.c
http://git.freescale.com/git/cgit.cgi/ppc/sdk/u-boot.git/tree/drivers/net/fm/memac.c
Have a great day,
Platon
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
There is no way to send a single byte of data over RGMII, the software
does not have direct access to it's transmit FIFO. What DPAA exchanges
with software, is essentially frames. Basically, all three DPAA components,
Bman, Qman and Fman have to be initialized to exchange network frames over an
external interface, regardless of it's type (this does not apply to MDIO,
but this is a PHY management interface). If you want to do a bare board,
simple network exchange test, the best solution is probably
FMan Independent mode, see T2080DPAARM, Section 5.13.15. This is still
a multi-step process, but much simpler, compared to the full DPAA
bring up sequence. u-Boot Fman driver uses this mode, btw:
http://git.freescale.com/git/cgit.cgi/ppc/sdk/u-boot.git/tree/drivers/net/fm/fm.c
http://git.freescale.com/git/cgit.cgi/ppc/sdk/u-boot.git/tree/drivers/net/fm/eth.c
http://git.freescale.com/git/cgit.cgi/ppc/sdk/u-boot.git/tree/drivers/net/fm/memac.c
Have a great day,
Platon
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Thank you for the response bpe! This appears to be my best option. I have began reading the section mentioned to see how to initialize the FMAN for independent mode. The steps I found (on page 1244) are:
I have also seen mentioned in other topics FMAN microcode and have found the source code in U-boot for uploading this to the FMAN, is this necessary? Is there any other information I might have missed?
Thank you!