diff options
author | Peter Tyser <ptyser@xes-inc.com> | 2009-11-03 23:52:07 (GMT) |
---|---|---|
committer | Ben Warren <biggerbadderben@gmail.com> | 2010-02-01 06:34:34 (GMT) |
commit | 46e91674fb4b6d06c6a4984c0b5ac7d9a16923f4 (patch) | |
tree | 1cf4646126982bfc501bffa3067d1c1241499226 | |
parent | 76771e595aa2640da8c7b5ea81bd9583ccdab8a1 (diff) | |
download | u-boot-46e91674fb4b6d06c6a4984c0b5ac7d9a16923f4.tar.xz |
tsec: Force TBI PHY to 1000Mbps full duplex in SGMII mode
In SGMII mode the link between a processor's internal TBI PHY and an
external PHY should always be 1000Mbps, full duplex. Also, the SGMII
interface between an internal TBI PHY and external PHY does not
support in-band auto-negotation.
Previously, when configured for SGMII mode a TBI PHY would attempt to
restart auto-negotation during initializtion. This auto-negotation
between a TBI PHY and external PHY would fail and result in unusable
ethernet operation.
Forcing the TBI PHY and and external PHY to link at 1000Mbps full duplex
in SGMII mode resolves this issue of auto-negotation failing.
Note that 10Mbps and 100Mbps operation is still possible on the external
side of the external PHY even when SGMII is operating at 1000Mbps.
The SGMII interface still operates at 1000Mbps, but each byte of data
is repeated 100 or 10 times for 10/100Mbps and the external PHY handles
converting this data stream into proper 10/100Mbps signalling.
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
-rw-r--r-- | drivers/net/tsec.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index d8b6619..67441d4 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -277,12 +277,13 @@ uint tsec_local_mdio_read(volatile tsec_mdio_t *phyregs, uint phyid, uint regnum | TBIANA_FULL_DUPLEX \ ) +/* Force the TBI PHY into 1000Mbps full duplex when in SGMII mode */ #define TBICR_SETTINGS ( \ TBICR_PHY_RESET \ - | TBICR_ANEG_ENABLE \ | TBICR_FULL_DUPLEX \ | TBICR_SPEED1_SET \ ) + /* Configure the TBI for SGMII operation */ static void tsec_configure_serdes(struct tsec_private *priv) { |