
Hi Felix,
On Fri, Jun 25, 2010 at 4:33 AM, Felix Radensky felix@embedded-sol.com wrote: Hi Ben,
Peter Tyser seems to be OOO until Monday, so maybe you can comment on this problem, as it's network related. Peter's patch comes to fix a problem with ethernet not working on XES 8572 board using BCM5482S PHY in SGMII mode. On the other hand it breaks eTSEC2 on P2020RDB board using VSC8211 PHY in SGMII mode. On P2020RDB not only u-boot, but also Linux cannot use eTSEC2. Do you have any suggestions how to make both boards happy ?
My company talked with a Freescale field application engineer about this issue quite a bit a while back, and the application note at http://www.freescale.com/files/32bit/doc/app_note/AN3869.pdf also provides some good info. I can forward relevant snippets of the discussion with the Freescale FAE when I get back into the office on Monday. For reference, we are using the BCM5482S PHY connected to a MPC8572 via SMGII, with both copper and fiber interfaces on the remote side of the PHY.
In any case, our testing and the Freescale FAE's input showed that in-band auto-negotiation on the SGMII interface didn't work, thus I submitted the change you referenced. If my memory is correct, empirically it looked like the MPC8572 did support 1000 base-X auto-negotiation, but not SGMII auto-negotiation. Can you validate you're using SGMII and not 1000 base-X to connect the P2020 to the VSC8211 PHY? A simple way to test this should be to connect the VSC8211 to a 100 mpbs switch - this should work fine via SGMII but not 1000 base-X (assuming you're using a copper interface).
Unfortunately our newer P2020 products don't use SGMII interfaces so I can't investigate the differences between the P2020 vs MPC8572.
I'm not familiar with how SGMII is configured on this controller, but it appears that Peter's patch turned of Autonegotiation. Why this would make a PHY work and a switch not work is curious... Maybe we should have a CONFIG option for SGMII parameters. Settings could default to the ones Peter set (since he submitted it in November and problems are surfacing now), but could be overriden. Does that sound reasonable? Something like:
#ifndef CONFIG TSEC_TBICR_SETTINGS #define TBICR_SETTINGS ( \ TBICR_PHY_RESET \ | TBICR_FULL_DUPLEX \ | TBICR_SPEED1_SET \ ) #else #define TBICR_SETTINGS CONFIG_TSEC_TBICR_SETTINGS #endif Thanks.
This solution is fine by me. I'd be curious if anyone at Freescale has a definitive answer about SGMII and auto-negotiation. I'm happy to try any patch on Monday
Best, Peter