|
@@ -77,7 +77,6 @@ struct emac_board_info {
|
|
|
|
|
|
int emacrx_completed_flag;
|
|
|
|
|
|
- struct phy_device *phy_dev;
|
|
|
struct device_node *phy_node;
|
|
|
unsigned int link;
|
|
|
unsigned int speed;
|
|
@@ -115,7 +114,7 @@ static void emac_update_duplex(struct net_device *dev)
|
|
|
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;
|
|
|
|
|
@@ -154,21 +153,22 @@ static void emac_handle_link_change(struct net_device *dev)
|
|
|
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;
|
|
@@ -179,10 +179,7 @@ static int emac_mdio_probe(struct net_device *dev)
|
|
|
|
|
|
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)
|
|
@@ -208,8 +205,7 @@ static void emac_inblk_32bit(void __iomem *reg, void *data, int count)
|
|
|
|
|
|
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;
|
|
@@ -231,8 +227,7 @@ static void emac_get_drvinfo(struct net_device *dev,
|
|
|
|
|
|
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;
|
|
@@ -242,8 +237,7 @@ static int emac_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
|
|
|
|
|
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;
|
|
@@ -744,7 +738,7 @@ static int emac_open(struct net_device *dev)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- phy_start(db->phy_dev);
|
|
|
+ phy_start(dev->phydev);
|
|
|
netif_start_queue(dev);
|
|
|
|
|
|
return 0;
|
|
@@ -781,7 +775,7 @@ static int emac_stop(struct net_device *ndev)
|
|
|
netif_stop_queue(ndev);
|
|
|
netif_carrier_off(ndev);
|
|
|
|
|
|
- phy_stop(db->phy_dev);
|
|
|
+ phy_stop(ndev->phydev);
|
|
|
|
|
|
emac_mdio_remove(ndev);
|
|
|
|