Now, to connect, just call this function:
  
-   phydev = phy_connect(dev, phy_name, &adjust_link, flags, interface);
+   phydev = phy_connect(dev, phy_name, &adjust_link, interface);
 
  phydev is a pointer to the phy_device structure which represents the PHY.  If
  phy_connect is successful, it will return the pointer.  dev, here, is the
  current state, though the PHY will not yet be truly operational at this
  point.
 
- flags is a u32 which can optionally contain phy-specific flags.
+ PHY-specific flags should be set in phydev->dev_flags prior to the call
+ to phy_connect() such that the underlying PHY driver can check for flags
+ and perform specific operations based on them.
  This is useful if the system has put hardware restrictions on
  the PHY/controller, of which the PHY needs to be aware.
 
    start, or disables then frees them for stop.
 
  struct phy_device * phy_attach(struct net_device *dev, const char *phy_id,
-                u32 flags, phy_interface_t interface);
+                phy_interface_t interface);
 
    Attaches a network device to a particular PHY, binding the PHY to a generic
-   driver if none was found during bus initialization.  Passes in
-   any phy-specific flags as needed.
+   driver if none was found during bus initialization.
 
  int phy_start_aneg(struct phy_device *phydev);
    
 
                return -ENODEV;
        }
 
-       ret = phy_connect_direct(dev, phy_dev, ax_handle_link_change, 0,
+       ret = phy_connect_direct(dev, phy_dev, ax_handle_link_change,
                                 PHY_INTERFACE_MODE_MII);
        if (ret) {
                netdev_err(dev, "Could not attach to PHY\n");
 
                return -EINVAL;
        }
 
-       phydev = phy_connect(dev, dev_name(&phydev->dev), &bfin_mac_adjust_link,
-                       0, phy_mode);
+       phydev = phy_connect(dev, dev_name(&phydev->dev),
+                            &bfin_mac_adjust_link, phy_mode);
 
        if (IS_ERR(phydev)) {
                netdev_err(dev, "could not attach PHY\n");
 
        }
 
        ret = phy_connect_direct(dev, phy, &greth_link_change,
-                       0, greth->gbit_mac ?
-                       PHY_INTERFACE_MODE_GMII :
-                       PHY_INTERFACE_MODE_MII);
+                                greth->gbit_mac ? PHY_INTERFACE_MODE_GMII : PHY_INTERFACE_MODE_MII);
        if (ret) {
                if (netif_msg_ifup(greth))
                        dev_err(&dev->dev, "could not attach to PHY\n");
 
        /* now we are supposed to have a proper phydev, to attach to... */
        BUG_ON(phydev->attached_dev);
 
-       phydev = phy_connect(dev, dev_name(&phydev->dev), &au1000_adjust_link,
-                       0, PHY_INTERFACE_MODE_MII);
+       phydev = phy_connect(dev, dev_name(&phydev->dev),
+                            &au1000_adjust_link, PHY_INTERFACE_MODE_MII);
 
        if (IS_ERR(phydev)) {
                netdev_err(dev, "Could not attach to PHY\n");
 
                snprintf(phy_id, sizeof(phy_id), PHY_ID_FMT,
                         priv->mii_bus->id, priv->phy_id);
 
-               phydev = phy_connect(dev, phy_id, bcm_enet_adjust_phy_link, 0,
+               phydev = phy_connect(dev, phy_id, bcm_enet_adjust_phy_link,
                                     PHY_INTERFACE_MODE_MII);
 
                if (IS_ERR(phydev)) {
 
                return -ENXIO;
        }
 
-       phy_dev = phy_connect(dev, dev_name(&phy_dev->dev), &sbmac_mii_poll, 0,
+       phy_dev = phy_connect(dev, dev_name(&phy_dev->dev), &sbmac_mii_poll,
                              PHY_INTERFACE_MODE_GMII);
        if (IS_ERR(phy_dev)) {
                printk(KERN_ERR "%s: could not attach to PHY\n", dev->name);
 
        phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR];
 
        /* Attach the MAC to the PHY. */
-       phydev = phy_connect(tp->dev, dev_name(&phydev->dev), tg3_adjust_link,
-                            phydev->dev_flags, phydev->interface);
+       phydev = phy_connect(tp->dev, dev_name(&phydev->dev),
+                            tg3_adjust_link, phydev->interface);
        if (IS_ERR(phydev)) {
                dev_err(&tp->pdev->dev, "Could not attach to PHY\n");
                return PTR_ERR(phydev);
 
        }
 
        /* attach the mac to the phy */
-       ret = phy_connect_direct(dev, phydev, &macb_handle_link_change, 0,
+       ret = phy_connect_direct(dev, phydev, &macb_handle_link_change,
                                 bp->phy_interface);
        if (ret) {
                netdev_err(dev, "Could not attach to PHY\n");
 
        /* attach the mac to the phy */
        if (bp->capabilities & DNET_HAS_RMII) {
                phydev = phy_connect(dev, dev_name(&phydev->dev),
-                                    &dnet_handle_link_change, 0,
+                                    &dnet_handle_link_change,
                                     PHY_INTERFACE_MODE_RMII);
        } else {
                phydev = phy_connect(dev, dev_name(&phydev->dev),
-                                    &dnet_handle_link_change, 0,
+                                    &dnet_handle_link_change,
                                     PHY_INTERFACE_MODE_MII);
        }
 
 
                return -ENXIO;
        }
 
-       err = phy_connect_direct(dev, phy, ethoc_mdio_poll, 0,
-                       PHY_INTERFACE_MODE_GMII);
+       err = phy_connect_direct(dev, phy, ethoc_mdio_poll,
+                                PHY_INTERFACE_MODE_GMII);
        if (err) {
                dev_err(&dev->dev, "could not attach to PHY\n");
                return err;
 
        }
 
        phydev = phy_connect(netdev, dev_name(&phydev->dev),
-                            &ftgmac100_adjust_link, 0,
-                            PHY_INTERFACE_MODE_GMII);
+                            &ftgmac100_adjust_link, PHY_INTERFACE_MODE_GMII);
 
        if (IS_ERR(phydev)) {
                netdev_err(netdev, "%s: Could not attach to PHY\n", netdev->name);
 
        }
 
        snprintf(phy_name, sizeof(phy_name), PHY_ID_FMT, mdio_bus_id, phy_id);
-       phy_dev = phy_connect(ndev, phy_name, &fec_enet_adjust_link, 0,
+       phy_dev = phy_connect(ndev, phy_name, &fec_enet_adjust_link,
                              fep->phy_interface);
        if (IS_ERR(phy_dev)) {
                printk(KERN_ERR "%s: could not attach to PHY\n", ndev->name);
 
                return -ENODEV;
        }
 
-       phydev = phy_connect(dev, dev_name(&phydev->dev), <q_etop_mdio_link,
-                       0, priv->pldata->mii_mode);
+       phydev = phy_connect(dev, dev_name(&phydev->dev),
+                            <q_etop_mdio_link, priv->pldata->mii_mode);
 
        if (IS_ERR(phydev)) {
                netdev_err(dev, "Could not attach to PHY\n");
 
 
        phy_reset(mp);
 
-       phy_attach(mp->dev, dev_name(&phy->dev), 0, PHY_INTERFACE_MODE_GMII);
+       phy_attach(mp->dev, dev_name(&phy->dev), PHY_INTERFACE_MODE_GMII);
 
        if (speed == 0) {
                phy->autoneg = AUTONEG_ENABLE;
 
        struct phy_device *phy = pep->phy;
        ethernet_phy_reset(pep);
 
-       phy_attach(pep->dev, dev_name(&phy->dev), 0, PHY_INTERFACE_MODE_MII);
+       phy_attach(pep->dev, dev_name(&phy->dev), PHY_INTERFACE_MODE_MII);
 
        if (speed == 0) {
                phy->autoneg = AUTONEG_ENABLE;
 
        else
                netdev_info(ndev, "using RMII interface\n");
        phydev = phy_connect(ndev, dev_name(&phydev->dev),
-                            &lpc_handle_link_change, 0,
+                            &lpc_handle_link_change,
                             lpc_phy_interface_mode(&pldat->pdev->dev));
 
        if (IS_ERR(phydev)) {
 
        }
 
        phydev = phy_connect(dev, dev_name(&phydev->dev), &r6040_adjust_link,
-                               0, PHY_INTERFACE_MODE_MII);
+                            PHY_INTERFACE_MODE_MII);
 
        if (IS_ERR(phydev)) {
                dev_err(&lp->pdev->dev, "could not attach to PHY\n");
 
 
        /* Try connect to PHY */
        phydev = phy_connect(ndev, phy_id, sh_eth_adjust_link,
-                               0, mdp->phy_interface);
+                            mdp->phy_interface);
        if (IS_ERR(phydev)) {
                dev_err(&ndev->dev, "phy_connect failed\n");
                return PTR_ERR(phydev);
 
        struct phy_device *p = NULL;
        while ((i < PHY_MAX_ADDR) && (!(p = pd->mii.bus->phy_map[i])))
                i++;
-       p = phy_connect(dev, dev_name(&p->dev), &s6gmac_adjust_link, 0,
+       p = phy_connect(dev, dev_name(&p->dev), &s6gmac_adjust_link,
                        PHY_INTERFACE_MODE_RGMII);
        if (IS_ERR(p)) {
                printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
 
        SMSC_TRACE(pdata, probe, "PHY: addr %d, phy_id 0x%08X",
                   phydev->addr, phydev->phy_id);
 
-       ret = phy_connect_direct(dev, phydev,
-                       &smsc911x_phy_adjust_link, 0,
-                       pdata->config.phy_interface);
+       ret = phy_connect_direct(dev, phydev, &smsc911x_phy_adjust_link,
+                                pdata->config.phy_interface);
 
        if (ret) {
                netdev_err(dev, "Could not attach to PHY\n");
 
                phydev->phy_id);
 
        phydev = phy_connect(dev, dev_name(&phydev->dev),
-               smsc9420_phy_adjust_link, 0, PHY_INTERFACE_MODE_MII);
+                            smsc9420_phy_adjust_link, PHY_INTERFACE_MODE_MII);
 
        if (IS_ERR(phydev)) {
                pr_err("%s: Could not attach to PHY\n", dev->name);
 
                 priv->plat->phy_addr);
        pr_debug("stmmac_init_phy:  trying to attach to %s\n", phy_id_fmt);
 
-       phydev = phy_connect(dev, phy_id_fmt, &stmmac_adjust_link, 0,
-                            interface);
+       phydev = phy_connect(dev, phy_id_fmt, &stmmac_adjust_link, interface);
 
        if (IS_ERR(phydev)) {
                pr_err("%s: Could not attach to PHY\n", dev->name);
 
        snprintf(priv->phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT,
                                                mdio_bus_id, phy_id);
 
-       priv->phy = phy_connect(dev, priv->phy_name, cpmac_adjust_link, 0,
-                                               PHY_INTERFACE_MODE_MII);
+       priv->phy = phy_connect(dev, priv->phy_name, cpmac_adjust_link,
+                               PHY_INTERFACE_MODE_MII);
 
        if (IS_ERR(priv->phy)) {
                if (netif_msg_drv(priv))
 
                           1 << slave_port, 0, ALE_MCAST_FWD_2);
 
        slave->phy = phy_connect(priv->ndev, slave->data->phy_id,
-                                &cpsw_adjust_link, 0, slave->data->phy_if);
+                                &cpsw_adjust_link, slave->data->phy_if);
        if (IS_ERR(slave->phy)) {
                dev_err(priv->dev, "phy %s not found on slave %d\n",
                        slave->data->phy_id, slave->slave_num);
 
 
        if (priv->phy_id && *priv->phy_id) {
                priv->phydev = phy_connect(ndev, priv->phy_id,
-                                          &emac_adjust_link, 0,
+                                          &emac_adjust_link,
                                           PHY_INTERFACE_MODE_MII);
 
                if (IS_ERR(priv->phydev)) {
 
 
        /* attach the mac to the phy */
        phydev = phy_connect(dev, dev_name(&phydev->dev),
-                            &tc_handle_link_change, 0,
-                            lp->chiptype == TC35815_TX4939 ?
-                            PHY_INTERFACE_MODE_RMII : PHY_INTERFACE_MODE_MII);
+                            &tc_handle_link_change,
+                            lp->chiptype == TC35815_TX4939 ? PHY_INTERFACE_MODE_RMII : PHY_INTERFACE_MODE_MII);
        if (IS_ERR(phydev)) {
                printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
                return PTR_ERR(phydev);
 
 
        snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT,
                mdio_bus->id, plat->phy);
-       port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0,
+       port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link,
                                   PHY_INTERFACE_MODE_MII);
        if (IS_ERR(port->phydev)) {
                err = PTR_ERR(port->phydev);
 
  * @dev: the network device to connect
  * @phydev: the pointer to the phy device
  * @handler: callback function for state change notifications
- * @flags: PHY device's dev_flags
  * @interface: PHY device's interface
  */
 int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,
-                      void (*handler)(struct net_device *), u32 flags,
+                      void (*handler)(struct net_device *),
                       phy_interface_t interface)
 {
        int rc;
 
-       rc = phy_attach_direct(dev, phydev, flags, interface);
+       rc = phy_attach_direct(dev, phydev, phydev->dev_flags, interface);
        if (rc)
                return rc;
 
  * @dev: the network device to connect
  * @bus_id: the id string of the PHY device to connect
  * @handler: callback function for state change notifications
- * @flags: PHY device's dev_flags
  * @interface: PHY device's interface
  *
  * Description: Convenience function for connecting ethernet
  *   the desired functionality.
  */
 struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,
-               void (*handler)(struct net_device *), u32 flags,
+               void (*handler)(struct net_device *),
                phy_interface_t interface)
 {
        struct phy_device *phydev;
        }
        phydev = to_phy_device(d);
 
-       rc = phy_connect_direct(dev, phydev, handler, flags, interface);
+       rc = phy_connect_direct(dev, phydev, handler, interface);
        if (rc)
                return ERR_PTR(rc);
 
  * phy_attach - attach a network device to a particular PHY device
  * @dev: network device to attach
  * @bus_id: Bus ID of PHY device to attach
- * @flags: PHY device's dev_flags
  * @interface: PHY device's interface
  *
  * Description: Same as phy_attach_direct() except that a PHY bus_id
  *     string is passed instead of a pointer to a struct phy_device.
  */
 struct phy_device *phy_attach(struct net_device *dev,
-               const char *bus_id, u32 flags, phy_interface_t interface)
+               const char *bus_id, phy_interface_t interface)
 {
        struct bus_type *bus = &mdio_bus_type;
        struct phy_device *phydev;
        }
        phydev = to_phy_device(d);
 
-       rc = phy_attach_direct(dev, phydev, flags, interface);
+       rc = phy_attach_direct(dev, phydev, phydev->dev_flags, interface);
        if (rc)
                return ERR_PTR(rc);
 
 
 
        priv->phydev = phy_connect(dev->net, priv->phy_name,
                                   &ax88172a_adjust_link,
-                                  0, PHY_INTERFACE_MODE_MII);
+                                  PHY_INTERFACE_MODE_MII);
        if (IS_ERR(priv->phydev)) {
                netdev_err(dev->net, "Could not connect to PHY device %s\n",
                           priv->phy_name);
 
        if (!phy)
                return NULL;
 
-       return phy_connect_direct(dev, phy, hndlr, flags, iface) ? NULL : phy;
+       return phy_connect_direct(dev, phy, hndlr, iface) ? NULL : phy;
 }
 EXPORT_SYMBOL(of_phy_connect);
 
 
        sprintf(bus_id, PHY_ID_FMT, "fixed-0", be32_to_cpu(phy_id[0]));
 
-       phy = phy_connect(dev, bus_id, hndlr, 0, iface);
+       phy = phy_connect(dev, bus_id, hndlr, iface);
        return IS_ERR(phy) ? NULL : phy;
 }
 EXPORT_SYMBOL(of_phy_connect_fixed_link);
 
        }
 
        phydev = phy_connect(netdev, dev_name(&phydev->dev),
-                       &et131x_adjust_link, 0, PHY_INTERFACE_MODE_MII);
+                            &et131x_adjust_link, PHY_INTERFACE_MODE_MII);
 
        if (IS_ERR(phydev)) {
                dev_err(&adapter->pdev->dev, "Could not attach to PHY\n");
 
 int phy_device_register(struct phy_device *phy);
 int phy_init_hw(struct phy_device *phydev);
 struct phy_device * phy_attach(struct net_device *dev,
-               const char *bus_id, u32 flags, phy_interface_t interface);
+               const char *bus_id, phy_interface_t interface);
 struct phy_device *phy_find_first(struct mii_bus *bus);
 int phy_connect_direct(struct net_device *dev, struct phy_device *phydev,
-               void (*handler)(struct net_device *), u32 flags,
+               void (*handler)(struct net_device *),
                phy_interface_t interface);
 struct phy_device * phy_connect(struct net_device *dev, const char *bus_id,
-               void (*handler)(struct net_device *), u32 flags,
+               void (*handler)(struct net_device *),
                phy_interface_t interface);
 void phy_disconnect(struct phy_device *phydev);
 void phy_detach(struct phy_device *phydev);
 
 
        if (p->phy != NULL) {
                phy_attach(slave_dev, dev_name(&p->phy->dev),
-                          0, PHY_INTERFACE_MODE_GMII);
+                          PHY_INTERFACE_MODE_GMII);
 
                p->phy->autoneg = AUTONEG_ENABLE;
                p->phy->speed = 0;