[PATCH 1/2] netdev/fec: fix phy_speed caculating
Andy Whitcroft
apw at canonical.com
Tue Apr 13 19:02:34 UTC 2010
On Thu, Apr 08, 2010 at 02:44:58PM +0800, Bryan Wu wrote:
> BugLink: http://bugs.launchpad.net/bugs/546649
> BugLink: http://bugs.launchpad.net/bugs/457878
>
> - remove duplicated phy_speed caculation
> - fix the phy_speed caculation according to the DataSheet
>
> Signed-off-by: Bryan Wu <bryan.wu at canonical.com>
> ---
> drivers/net/fec.c | 9 ++-------
> 1 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/fec.c b/drivers/net/fec.c
> index 9d99359..53240d3 100644
> --- a/drivers/net/fec.c
> +++ b/drivers/net/fec.c
> @@ -737,10 +737,9 @@ static int fec_enet_mii_init(struct platform_device *pdev)
> fep->mii_timeout = 0;
>
> /*
> - * Set MII speed to 2.5 MHz
> + * Set MII speed to 2.5 MHz (= clk_get_rate() / 2 * phy_speed)
> */
> - fep->phy_speed = ((((clk_get_rate(fep->clk) / 2 + 4999999)
> - / 2500000) / 2) & 0x3F) << 1;
> + fep->phy_speed = DIV_ROUND_UP(clk_get_rate(fep->clk), 5000000) << 1;
> writel(fep->phy_speed, fep->hwp + FEC_MII_SPEED);
>
> fep->mii_bus = mdiobus_alloc();
> @@ -1121,10 +1120,6 @@ int __init fec_enet_init(struct net_device *dev, int index)
> dev->netdev_ops = &fec_netdev_ops;
> dev->ethtool_ops = &fec_enet_ethtool_ops;
>
> - /* Set MII speed to 2.5 MHz */
> - fep->phy_speed = ((((clk_get_rate(fep->clk) / 2 + 4999999)
> - / 2500000) / 2) & 0x3F) << 1;
> -
> /* Initialize the receive buffer descriptors. */
> bdp = fep->rx_bd_base;
> for (i = 0; i < RX_RING_SIZE; i++) {
Looks ok. Seems to do what is claimed.
Acked-by: Andy Whitcroft <apw at canonical.com>
-apw
More information about the kernel-team
mailing list