|
@@ -590,7 +590,7 @@ static void temac_device_reset(struct net_device *ndev)
|
|
|
static void temac_adjust_link(struct net_device *ndev)
|
|
|
{
|
|
|
struct temac_local *lp = netdev_priv(ndev);
|
|
|
- struct phy_device *phy = lp->phy_dev;
|
|
|
+ struct phy_device *phy = ndev->phydev;
|
|
|
u32 mii_speed;
|
|
|
int link_state;
|
|
|
|
|
@@ -843,19 +843,20 @@ static irqreturn_t ll_temac_rx_irq(int irq, void *_ndev)
|
|
|
static int temac_open(struct net_device *ndev)
|
|
|
{
|
|
|
struct temac_local *lp = netdev_priv(ndev);
|
|
|
+ struct phy_device *phydev = NULL;
|
|
|
int rc;
|
|
|
|
|
|
dev_dbg(&ndev->dev, "temac_open()\n");
|
|
|
|
|
|
if (lp->phy_node) {
|
|
|
- lp->phy_dev = of_phy_connect(lp->ndev, lp->phy_node,
|
|
|
- temac_adjust_link, 0, 0);
|
|
|
- if (!lp->phy_dev) {
|
|
|
+ phydev = of_phy_connect(lp->ndev, lp->phy_node,
|
|
|
+ temac_adjust_link, 0, 0);
|
|
|
+ if (!phydev) {
|
|
|
dev_err(lp->dev, "of_phy_connect() failed\n");
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
- phy_start(lp->phy_dev);
|
|
|
+ phy_start(phydev);
|
|
|
}
|
|
|
|
|
|
temac_device_reset(ndev);
|
|
@@ -872,9 +873,8 @@ static int temac_open(struct net_device *ndev)
|
|
|
err_rx_irq:
|
|
|
free_irq(lp->tx_irq, ndev);
|
|
|
err_tx_irq:
|
|
|
- if (lp->phy_dev)
|
|
|
- phy_disconnect(lp->phy_dev);
|
|
|
- lp->phy_dev = NULL;
|
|
|
+ if (phydev)
|
|
|
+ phy_disconnect(phydev);
|
|
|
dev_err(lp->dev, "request_irq() failed\n");
|
|
|
return rc;
|
|
|
}
|
|
@@ -882,15 +882,15 @@ static int temac_open(struct net_device *ndev)
|
|
|
static int temac_stop(struct net_device *ndev)
|
|
|
{
|
|
|
struct temac_local *lp = netdev_priv(ndev);
|
|
|
+ struct phy_device *phydev = ndev->phydev;
|
|
|
|
|
|
dev_dbg(&ndev->dev, "temac_close()\n");
|
|
|
|
|
|
free_irq(lp->tx_irq, ndev);
|
|
|
free_irq(lp->rx_irq, ndev);
|
|
|
|
|
|
- if (lp->phy_dev)
|
|
|
- phy_disconnect(lp->phy_dev);
|
|
|
- lp->phy_dev = NULL;
|
|
|
+ if (phydev)
|
|
|
+ phy_disconnect(phydev);
|
|
|
|
|
|
temac_dma_bd_release(ndev);
|
|
|
|
|
@@ -916,15 +916,13 @@ temac_poll_controller(struct net_device *ndev)
|
|
|
|
|
|
static int temac_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
|
|
|
{
|
|
|
- struct temac_local *lp = netdev_priv(ndev);
|
|
|
-
|
|
|
if (!netif_running(ndev))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (!lp->phy_dev)
|
|
|
+ if (!ndev->phydev)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- return phy_mii_ioctl(lp->phy_dev, rq, cmd);
|
|
|
+ return phy_mii_ioctl(ndev->phydev, rq, cmd);
|
|
|
}
|
|
|
|
|
|
static const struct net_device_ops temac_netdev_ops = {
|
|
@@ -971,20 +969,17 @@ static const struct attribute_group temac_attr_group = {
|
|
|
/* ethtool support */
|
|
|
static int temac_get_settings(struct net_device *ndev, struct ethtool_cmd *cmd)
|
|
|
{
|
|
|
- struct temac_local *lp = netdev_priv(ndev);
|
|
|
- return phy_ethtool_gset(lp->phy_dev, cmd);
|
|
|
+ return phy_ethtool_gset(ndev->phydev, cmd);
|
|
|
}
|
|
|
|
|
|
static int temac_set_settings(struct net_device *ndev, struct ethtool_cmd *cmd)
|
|
|
{
|
|
|
- struct temac_local *lp = netdev_priv(ndev);
|
|
|
- return phy_ethtool_sset(lp->phy_dev, cmd);
|
|
|
+ return phy_ethtool_sset(ndev->phydev, cmd);
|
|
|
}
|
|
|
|
|
|
static int temac_nway_reset(struct net_device *ndev)
|
|
|
{
|
|
|
- struct temac_local *lp = netdev_priv(ndev);
|
|
|
- return phy_start_aneg(lp->phy_dev);
|
|
|
+ return phy_start_aneg(ndev->phydev);
|
|
|
}
|
|
|
|
|
|
static const struct ethtool_ops temac_ethtool_ops = {
|