int                     emacrx_completed_flag;
 
-       struct phy_device       *phy_dev;
        struct device_node      *phy_node;
        unsigned int            link;
        unsigned int            speed;
 static void emac_handle_link_change(struct net_device *dev)
 {
        struct emac_board_info *db = netdev_priv(dev);
-       struct phy_device *phydev = db->phy_dev;
+       struct phy_device *phydev = dev->phydev;
        unsigned long flags;
        int status_change = 0;
 
 static int emac_mdio_probe(struct net_device *dev)
 {
        struct emac_board_info *db = netdev_priv(dev);
+       struct phy_device *phydev;
 
        /* to-do: PHY interrupts are currently not supported */
 
        /* attach the mac to the phy */
-       db->phy_dev = of_phy_connect(db->ndev, db->phy_node,
-                                    &emac_handle_link_change, 0,
-                                    db->phy_interface);
-       if (!db->phy_dev) {
+       phydev = of_phy_connect(db->ndev, db->phy_node,
+                               &emac_handle_link_change, 0,
+                               db->phy_interface);
+       if (!phydev) {
                netdev_err(db->ndev, "could not find the PHY\n");
                return -ENODEV;
        }
 
        /* mask with MAC supported features */
-       db->phy_dev->supported &= PHY_BASIC_FEATURES;
-       db->phy_dev->advertising = db->phy_dev->supported;
+       phydev->supported &= PHY_BASIC_FEATURES;
+       phydev->advertising = phydev->supported;
 
        db->link = 0;
        db->speed = 0;
 
 static void emac_mdio_remove(struct net_device *dev)
 {
-       struct emac_board_info *db = netdev_priv(dev);
-
-       phy_disconnect(db->phy_dev);
-       db->phy_dev = NULL;
+       phy_disconnect(dev->phydev);
 }
 
 static void emac_reset(struct emac_board_info *db)
 
 static int emac_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 {
-       struct emac_board_info *dm = netdev_priv(dev);
-       struct phy_device *phydev = dm->phy_dev;
+       struct phy_device *phydev = dev->phydev;
 
        if (!netif_running(dev))
                return -EINVAL;
 
 static int emac_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
 {
-       struct emac_board_info *dm = netdev_priv(dev);
-       struct phy_device *phydev = dm->phy_dev;
+       struct phy_device *phydev = dev->phydev;
 
        if (!phydev)
                return -ENODEV;
 
 static int emac_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
 {
-       struct emac_board_info *dm = netdev_priv(dev);
-       struct phy_device *phydev = dm->phy_dev;
+       struct phy_device *phydev = dev->phydev;
 
        if (!phydev)
                return -ENODEV;
                return ret;
        }
 
-       phy_start(db->phy_dev);
+       phy_start(dev->phydev);
        netif_start_queue(dev);
 
        return 0;
        netif_stop_queue(ndev);
        netif_carrier_off(ndev);
 
-       phy_stop(db->phy_dev);
+       phy_stop(ndev->phydev);
 
        emac_mdio_remove(ndev);