[U-Boot] [PATCH 5/6] net: Kirkwood_egiga: forced interface speed config support

Prafulla Wadaskar prafulla at marvell.com
Thu Jul 16 17:28:03 CEST 2009


By default Auto Negotiation is enabled for interface speed
but on some platforms like RD6281A it does not work.
If you want to forced program it to desired speed,
this patch helps-

Through this patch Auto negotiation can be disabled and
desired interface speed can be configured

This patch is tested on RD6281A Kirkwood board

Signed-off-by: Prafulla Wadaskar <prafulla at marvell.com>
---
 drivers/net/kirkwood_egiga.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/drivers/net/kirkwood_egiga.c b/drivers/net/kirkwood_egiga.c
index 3c5db19..1dfd567 100644
--- a/drivers/net/kirkwood_egiga.c
+++ b/drivers/net/kirkwood_egiga.c
@@ -415,7 +415,31 @@ static int kwgbe_init(struct eth_device *dev)
 	/* Assign port configuration and command. */
 	KWGBEREG_WR(regs->pxc, PRT_CFG_VAL);
 	KWGBEREG_WR(regs->pxcx, PORT_CFG_EXTEND_VALUE);
+	/*
+	 * Forced 10/100/1000BASE-T interface speed configuration
+	 * By default Auto Negotiation of interface speed is enabled
+	 * This can be forced disabled and desired speed can be configured
+	 */
+#ifdef CONFIG_DIS_AUTO_NEG_SPEED_GMII
+#if (!defined (CONFIG_PHY_SPEED) || (CONFIG_PHY_SPEED == _1000BASET))
+	KWGBEREG_WR(regs->psc0, PORT_SERIAL_CONTROL_VALUE
+		| KWGBE_DIS_AUTO_NEG_SPEED_GMII
+		| KWGBE_SET_GMII_SPEED_TO_1000);
+#elif (CONFIG_PHY_SPEED == _100BASET)
+	KWGBEREG_WR(regs->psc0, PORT_SERIAL_CONTROL_VALUE
+		| KWGBE_DIS_AUTO_NEG_SPEED_GMII
+		| KWGBE_SET_GMII_SPEED_TO_10_100
+		| KWGBE_SET_MII_SPEED_TO_100);
+#elif (CONFIG_PHY_SPEED == _10BASET)
+	KWGBEREG_WR(regs->psc0, PORT_SERIAL_CONTROL_VALUE
+		| KWGBE_DIS_AUTO_NEG_SPEED_GMII
+		| KWGBE_SET_GMII_SPEED_TO_10_100
+		| KWGBE_SET_MII_SPEED_TO_10);
+#endif /* CONFIG_PHY_SPEED == _10BASET */
+#else
 	KWGBEREG_WR(regs->psc0, PORT_SERIAL_CONTROL_VALUE);
+#endif /* CONFIG_DIS_AUTO_NEG_SPEED_GMII */
+
 	/* Disable port initially */
 	KWGBEREG_BITS_SET(regs->psc0, KWGBE_SERIAL_PORT_EN);
 
-- 
1.5.3.3



More information about the U-Boot mailing list