[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