diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2009-10-30 12:26:22 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2009-10-30 12:26:22 +0000 |
commit | 21fc9ffe63136cc43199d887a928bcf76b82fae4 (patch) | |
tree | 57b588d76029f423bcf0919d3cb52c2403c70e33 /target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c | |
parent | f336f8748c1b0a8b494a4e524ed6cbcf01e62185 (diff) | |
download | upstream-21fc9ffe63136cc43199d887a928bcf76b82fae4.tar.gz upstream-21fc9ffe63136cc43199d887a928bcf76b82fae4.tar.bz2 upstream-21fc9ffe63136cc43199d887a928bcf76b82fae4.zip |
ar71xx: use soc specific divider for mdio clock
SVN-Revision: 18225
Diffstat (limited to 'target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c')
-rw-r--r-- | target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c index d3cbacedb2..b6fccbbcd6 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c @@ -106,7 +106,10 @@ static int ag71xx_mdio_reset(struct mii_bus *bus) struct ag71xx_mdio *am = bus->priv; u32 t; - t = MII_CFG_CLK_DIV_28; + if (am->pdata->is_ar7240) + t = MII_CFG_CLK_DIV_6; + else + t = MII_CFG_CLK_DIV_28; ag71xx_mdio_wr(am, AG71XX_REG_MII_CFG, t | MII_CFG_RESET); udelay(100); @@ -143,12 +146,20 @@ static int __init ag71xx_mdio_probe(struct platform_device *pdev) if (ag71xx_mdio_bus) return -EBUSY; + pdata = pdev->dev.platform_data; + if (!pdata) { + dev_err(&pdev->dev, "no platform data specified\n"); + return -EINVAL; + } + am = kzalloc(sizeof(*am), GFP_KERNEL); if (!am) { err = -ENOMEM; goto err_out; } + am->pdata = pdata; + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(&pdev->dev, "no iomem resource found\n"); @@ -177,10 +188,7 @@ static int __init ag71xx_mdio_probe(struct platform_device *pdev) am->mii_bus->priv = am; am->mii_bus->parent = &pdev->dev; snprintf(am->mii_bus->id, MII_BUS_ID_SIZE, "%x", 0); - - pdata = pdev->dev.platform_data; - if (pdata) - am->mii_bus->phy_mask = pdata->phy_mask; + am->mii_bus->phy_mask = pdata->phy_mask; for (i = 0; i < PHY_MAX_ADDR; i++) am->mii_irq[i] = PHY_POLL; |