I am trying to get the eTSEC running on a LS1020A processor. I am using u-boot as a reference along with the LS1020A user manual. In u-boot the buffer descriptors are handled as big-endian which makes sense since the eTSEC is big-endian. However when I mimic u-boot, I receive and transmit nothing. In fact I see my RMON counter called RDRP increase. The IEVENTG0 register reports this is due to a busy condition. So out of desperation, I removed the 16 bit endian swap. I started to receive and transmit. In addition, I needed to remove the 32 bit endian swap for the bufPtr in the buffer descriptors. When I look at the data being received by the eTSEC, the data looks 64 bit endian swapped. Very strange.
I looked at the u-boot code and the user manual. I cannot find any initialization that would fix this. Does anyone have any suggestions.
Thanks
Ray Haas
Solved! Go to Solution.
You can control endienness through SCFG_ETSECDMAMCR register. You can try changing this register and check!
You can control endienness through SCFG_ETSECDMAMCR register. You can try changing this register and check!