diff options
author | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-03-16 22:25:41 +0000 |
---|---|---|
committer | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-03-16 22:25:41 +0000 |
commit | 1be759708e3f4e4552d9185c2eb279a1c727e414 (patch) | |
tree | d00a4035c8a2b85aa33a87bde426e682515a6b68 /target/linux/mcs814x/files-3.3/drivers | |
parent | e998285ef107bb08f8551a1a5767db6d0cba9864 (diff) |
mcs814x: use the standard device tree binding to represent a PHY node
Signed-off-by: Florian Fainelli <florian@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36059 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/mcs814x/files-3.3/drivers')
-rw-r--r-- | target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c b/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c index 2dc2375159..511d261d0d 100644 --- a/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c +++ b/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c @@ -19,6 +19,8 @@ #include <linux/interrupt.h> #include <linux/platform_device.h> #include <linux/of.h> +#include <linux/of_mdio.h> +#include <linux/of_net.h> #include <linux/irq.h> #include <linux/err.h> #include <linux/phy.h> @@ -168,6 +170,8 @@ struct nuport_mac_priv { struct platform_device *pdev; struct mii_bus *mii_bus; struct phy_device *phydev; + struct device_node *phy_node; + phy_interface_t phy_interface; int old_link; int old_duplex; u32 msg_level; @@ -898,9 +902,9 @@ static int nuport_mac_mii_probe(struct net_device *dev) goto out; } - phydev = phy_connect(dev, dev_name(&phydev->dev), + phydev = of_phy_connect(dev, priv->phy_node, nuport_mac_adjust_link, 0, - PHY_INTERFACE_MODE_MII); + priv->phy_interface); if (IS_ERR(phydev)) { netdev_err(dev, "could not attach PHY\n"); ret = PTR_ERR(phydev); @@ -1082,6 +1086,20 @@ static int __init nuport_mac_probe(struct platform_device *pdev) netif_napi_add(dev, &priv->napi, nuport_mac_poll, 64); + priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy", 0); + if (!priv->phy_node) { + dev_err(&pdev->dev, "no associated PHY\n"); + ret = -ENODEV; + goto out; + } + + priv->phy_interface = of_get_phy_mode(pdev->dev.of_node); + if (priv->phy_interface < 0) { + dev_err(&pdev->dev, "invalid PHY mode\n"); + ret = -EINVAL; + goto out; + } + priv->mii_bus = mdiobus_alloc(); if (!priv->mii_bus) { dev_err(&pdev->dev, "mii bus allocation failed\n"); @@ -1106,7 +1124,7 @@ static int __init nuport_mac_probe(struct platform_device *pdev) for (i = 0; i < PHY_MAX_ADDR; i++) priv->mii_bus->irq[i] = PHY_IGNORE_INTERRUPT; - ret = mdiobus_register(priv->mii_bus); + ret = of_mdiobus_register(priv->mii_bus, pdev->dev.of_node); if (ret) { dev_err(&pdev->dev, "failed to register mii_bus\n"); goto out_mdio_irq; |