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

Dieter Kiermaier dk-arm-linux at gmx.de
Thu Jul 16 16:45:09 CEST 2009


Hi Prafulla, hi Marvell engineers,


> 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-

do you have some information why auto negotiation doesn't work on RD6281A?
I'm working on custom hardware and don't want to do the same mistake :)

Many thanks,
Dieter



> 
> 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);
>  




More information about the U-Boot mailing list