diff options
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy/ar8216.c')
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/ar8216.c | 70 |
1 files changed, 27 insertions, 43 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index 27b062b..f3c953b 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -177,7 +177,7 @@ ar8xxx_phy_check_aneg(struct phy_device *phydev) if (ret & BMCR_ANENABLE) return 0; - dev_info(&phydev->dev, "ANEG disabled, re-enabling ...\n"); + dev_info(&phydev->mdio.dev, "ANEG disabled, re-enabling ...\n"); ret |= BMCR_ANENABLE | BMCR_ANRESTART; return phy_write(phydev, MII_BMCR, ret); } @@ -1996,7 +1996,7 @@ ar8xxx_phy_config_init(struct phy_device *phydev) priv->phy = phydev; - if (phydev->addr != 0) { + if (phydev->mdio.addr != 0) { if (chip_is_ar8316(priv)) { /* switch device has been initialized, reinit */ priv->dev.ports = (AR8216_NUM_PORTS - 1); @@ -2044,7 +2044,7 @@ ar8xxx_check_link_states(struct ar8xxx_priv *priv) /* flush ARL entries for this port if it went down*/ if (!link_new) priv->chip->atu_flush_port(priv, i); - dev_info(&priv->phy->dev, "Port %d is %s\n", + dev_info(&priv->phy->mdio.dev, "Port %d is %s\n", i, link_new ? "up" : "down"); } @@ -2063,10 +2063,10 @@ ar8xxx_phy_read_status(struct phy_device *phydev) if (phydev->state == PHY_CHANGELINK) ar8xxx_check_link_states(priv); - if (phydev->addr != 0) + if (phydev->mdio.addr != 0) return genphy_read_status(phydev); - ar8216_read_port_link(priv, phydev->addr, &link); + ar8216_read_port_link(priv, phydev->mdio.addr, &link); phydev->link = !!link.link; if (!phydev->link) return 0; @@ -2096,7 +2096,7 @@ ar8xxx_phy_read_status(struct phy_device *phydev) static int ar8xxx_phy_config_aneg(struct phy_device *phydev) { - if (phydev->addr == 0) + if (phydev->mdio.addr == 0) return 0; return genphy_config_aneg(phydev); @@ -2151,15 +2151,15 @@ ar8xxx_phy_probe(struct phy_device *phydev) int ret; /* skip PHYs at unused adresses */ - if (phydev->addr != 0 && phydev->addr != 4) + if (phydev->mdio.addr != 0 && phydev->mdio.addr != 4) return -ENODEV; - if (!ar8xxx_is_possible(phydev->bus)) + if (!ar8xxx_is_possible(phydev->mdio.bus)) return -ENODEV; mutex_lock(&ar8xxx_dev_list_lock); list_for_each_entry(priv, &ar8xxx_dev_list, list) - if (priv->mii_bus == phydev->bus) + if (priv->mii_bus == phydev->mdio.bus) goto found; priv = ar8xxx_create(); @@ -2168,7 +2168,7 @@ ar8xxx_phy_probe(struct phy_device *phydev) goto unlock; } - priv->mii_bus = phydev->bus; + priv->mii_bus = phydev->mdio.bus; ret = ar8xxx_probe_switch(priv); if (ret) @@ -2189,7 +2189,7 @@ ar8xxx_phy_probe(struct phy_device *phydev) found: priv->use_count++; - if (phydev->addr == 0) { + if (phydev->mdio.addr == 0) { if (ar8xxx_has_gige(priv)) { phydev->supported = SUPPORTED_1000baseT_Full; phydev->advertising = ADVERTISED_1000baseT_Full; @@ -2270,44 +2270,28 @@ ar8xxx_phy_remove(struct phy_device *phydev) ar8xxx_free(priv); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0) static int ar8xxx_phy_soft_reset(struct phy_device *phydev) { /* we don't need an extra reset */ return 0; } -#endif - -static struct phy_driver ar8xxx_phy_driver = { - .phy_id = 0x004d0000, - .name = "Atheros AR8216/AR8236/AR8316", - .phy_id_mask = 0xffff0000, - .features = PHY_BASIC_FEATURES, - .probe = ar8xxx_phy_probe, - .remove = ar8xxx_phy_remove, - .detach = ar8xxx_phy_detach, - .config_init = ar8xxx_phy_config_init, - .config_aneg = ar8xxx_phy_config_aneg, - .read_status = ar8xxx_phy_read_status, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0) - .soft_reset = ar8xxx_phy_soft_reset, -#endif - .driver = { .owner = THIS_MODULE }, -}; -int __init -ar8xxx_init(void) -{ - return phy_driver_register(&ar8xxx_phy_driver); -} - -void __exit -ar8xxx_exit(void) -{ - phy_driver_unregister(&ar8xxx_phy_driver); -} +static struct phy_driver ar8xxx_phy_driver[] = { + { + .phy_id = 0x004d0000, + .name = "Atheros AR8216/AR8236/AR8316", + .phy_id_mask = 0xffff0000, + .features = PHY_BASIC_FEATURES, + .probe = ar8xxx_phy_probe, + .remove = ar8xxx_phy_remove, + .detach = ar8xxx_phy_detach, + .config_init = ar8xxx_phy_config_init, + .config_aneg = ar8xxx_phy_config_aneg, + .read_status = ar8xxx_phy_read_status, + .soft_reset = ar8xxx_phy_soft_reset, + } +}; -module_init(ar8xxx_init); -module_exit(ar8xxx_exit); +module_phy_driver(ar8xxx_phy_driver); MODULE_LICENSE("GPL"); |