Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce554d32 authored by Philippe Reynes's avatar Philippe Reynes Committed by David S. Miller
Browse files

net: ethernet: dwc_eth_qos: use phydev from struct net_device



The private structure contain a pointer to phydev, but the structure
net_device already contain such pointer. So we can remove the pointer
phydev in the private structure, and update the driver to use the
one contained in struct net_device.

Signed-off-by: default avatarPhilippe Reynes <tremyfr@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 13e4c230
Loading
Loading
Loading
Loading
+23 −24
Original line number Original line Diff line number Diff line
@@ -598,7 +598,6 @@ struct net_local {
	struct work_struct txtimeout_reinit;
	struct work_struct txtimeout_reinit;


	phy_interface_t phy_interface;
	phy_interface_t phy_interface;
	struct phy_device *phy_dev;
	struct mii_bus *mii_bus;
	struct mii_bus *mii_bus;


	unsigned int link;
	unsigned int link;
@@ -816,7 +815,7 @@ static int dwceqos_mdio_write(struct mii_bus *bus, int mii_id, int phyreg,
static int dwceqos_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
static int dwceqos_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
{
{
	struct net_local *lp = netdev_priv(ndev);
	struct net_local *lp = netdev_priv(ndev);
	struct phy_device *phydev = lp->phy_dev;
	struct phy_device *phydev = ndev->phydev;


	if (!netif_running(ndev))
	if (!netif_running(ndev))
		return -EINVAL;
		return -EINVAL;
@@ -850,6 +849,7 @@ static void dwceqos_link_down(struct net_local *lp)


static void dwceqos_link_up(struct net_local *lp)
static void dwceqos_link_up(struct net_local *lp)
{
{
	struct net_device *ndev = lp->ndev;
	u32 regval;
	u32 regval;
	unsigned long flags;
	unsigned long flags;


@@ -860,7 +860,7 @@ static void dwceqos_link_up(struct net_local *lp)
	dwceqos_write(lp, REG_DWCEQOS_MAC_LPI_CTRL_STATUS, regval);
	dwceqos_write(lp, REG_DWCEQOS_MAC_LPI_CTRL_STATUS, regval);
	spin_unlock_irqrestore(&lp->hw_lock, flags);
	spin_unlock_irqrestore(&lp->hw_lock, flags);


	lp->eee_active = !phy_init_eee(lp->phy_dev, 0);
	lp->eee_active = !phy_init_eee(ndev->phydev, 0);


	/* Check for changed EEE capability */
	/* Check for changed EEE capability */
	if (!lp->eee_active && lp->eee_enabled) {
	if (!lp->eee_active && lp->eee_enabled) {
@@ -876,7 +876,8 @@ static void dwceqos_link_up(struct net_local *lp)


static void dwceqos_set_speed(struct net_local *lp)
static void dwceqos_set_speed(struct net_local *lp)
{
{
	struct phy_device *phydev = lp->phy_dev;
	struct net_device *ndev = lp->ndev;
	struct phy_device *phydev = ndev->phydev;
	u32 regval;
	u32 regval;


	regval = dwceqos_read(lp, REG_DWCEQOS_MAC_CFG);
	regval = dwceqos_read(lp, REG_DWCEQOS_MAC_CFG);
@@ -903,7 +904,7 @@ static void dwceqos_set_speed(struct net_local *lp)
static void dwceqos_adjust_link(struct net_device *ndev)
static void dwceqos_adjust_link(struct net_device *ndev)
{
{
	struct net_local *lp = netdev_priv(ndev);
	struct net_local *lp = netdev_priv(ndev);
	struct phy_device *phydev = lp->phy_dev;
	struct phy_device *phydev = ndev->phydev;
	int status_change = 0;
	int status_change = 0;


	if (lp->phy_defer)
	if (lp->phy_defer)
@@ -987,7 +988,6 @@ static int dwceqos_mii_probe(struct net_device *ndev)
	lp->link    = 0;
	lp->link    = 0;
	lp->speed   = 0;
	lp->speed   = 0;
	lp->duplex  = DUPLEX_UNKNOWN;
	lp->duplex  = DUPLEX_UNKNOWN;
	lp->phy_dev = phydev;


	return 0;
	return 0;
}
}
@@ -1531,6 +1531,7 @@ static void dwceqos_configure_bus(struct net_local *lp)


static void dwceqos_init_hw(struct net_local *lp)
static void dwceqos_init_hw(struct net_local *lp)
{
{
	struct net_device *ndev = lp->ndev;
	u32 regval;
	u32 regval;
	u32 buswidth;
	u32 buswidth;
	u32 dma_skip;
	u32 dma_skip;
@@ -1645,10 +1646,10 @@ static void dwceqos_init_hw(struct net_local *lp)
		      regval | DWCEQOS_MAC_CFG_TE | DWCEQOS_MAC_CFG_RE);
		      regval | DWCEQOS_MAC_CFG_TE | DWCEQOS_MAC_CFG_RE);


	lp->phy_defer = false;
	lp->phy_defer = false;
	mutex_lock(&lp->phy_dev->lock);
	mutex_lock(&ndev->phydev->lock);
	phy_read_status(lp->phy_dev);
	phy_read_status(ndev->phydev);
	dwceqos_adjust_link(lp->ndev);
	dwceqos_adjust_link(lp->ndev);
	mutex_unlock(&lp->phy_dev->lock);
	mutex_unlock(&ndev->phydev->lock);
}
}


static void dwceqos_tx_reclaim(unsigned long data)
static void dwceqos_tx_reclaim(unsigned long data)
@@ -1898,7 +1899,7 @@ static int dwceqos_open(struct net_device *ndev)
	 * hence the unusual init order with phy_start first.
	 * hence the unusual init order with phy_start first.
	 */
	 */
	lp->phy_defer = true;
	lp->phy_defer = true;
	phy_start(lp->phy_dev);
	phy_start(ndev->phydev);
	dwceqos_init_hw(lp);
	dwceqos_init_hw(lp);
	napi_enable(&lp->napi);
	napi_enable(&lp->napi);


@@ -1943,7 +1944,7 @@ static int dwceqos_stop(struct net_device *ndev)


	dwceqos_drain_dma(lp);
	dwceqos_drain_dma(lp);
	dwceqos_reset_hw(lp);
	dwceqos_reset_hw(lp);
	phy_stop(lp->phy_dev);
	phy_stop(ndev->phydev);


	dwceqos_descriptor_free(lp);
	dwceqos_descriptor_free(lp);


@@ -2526,8 +2527,7 @@ dwceqos_get_stats64(struct net_device *ndev, struct rtnl_link_stats64 *s)
static int
static int
dwceqos_get_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
dwceqos_get_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
{
{
	struct net_local *lp = netdev_priv(ndev);
	struct phy_device *phydev = ndev->phydev;
	struct phy_device *phydev = lp->phy_dev;


	if (!phydev)
	if (!phydev)
		return -ENODEV;
		return -ENODEV;
@@ -2538,8 +2538,7 @@ dwceqos_get_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
static int
static int
dwceqos_set_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
dwceqos_set_settings(struct net_device *ndev, struct ethtool_cmd *ecmd)
{
{
	struct net_local *lp = netdev_priv(ndev);
	struct phy_device *phydev = ndev->phydev;
	struct phy_device *phydev = lp->phy_dev;


	if (!phydev)
	if (!phydev)
		return -ENODEV;
		return -ENODEV;
@@ -2574,17 +2573,17 @@ static int dwceqos_set_pauseparam(struct net_device *ndev,


	lp->flowcontrol.autoneg = pp->autoneg;
	lp->flowcontrol.autoneg = pp->autoneg;
	if (pp->autoneg) {
	if (pp->autoneg) {
		lp->phy_dev->advertising |= ADVERTISED_Pause;
		ndev->phydev->advertising |= ADVERTISED_Pause;
		lp->phy_dev->advertising |= ADVERTISED_Asym_Pause;
		ndev->phydev->advertising |= ADVERTISED_Asym_Pause;
	} else {
	} else {
		lp->phy_dev->advertising &= ~ADVERTISED_Pause;
		ndev->phydev->advertising &= ~ADVERTISED_Pause;
		lp->phy_dev->advertising &= ~ADVERTISED_Asym_Pause;
		ndev->phydev->advertising &= ~ADVERTISED_Asym_Pause;
		lp->flowcontrol.rx = pp->rx_pause;
		lp->flowcontrol.rx = pp->rx_pause;
		lp->flowcontrol.tx = pp->tx_pause;
		lp->flowcontrol.tx = pp->tx_pause;
	}
	}


	if (netif_running(ndev))
	if (netif_running(ndev))
		ret = phy_start_aneg(lp->phy_dev);
		ret = phy_start_aneg(ndev->phydev);


	return ret;
	return ret;
}
}
@@ -2705,7 +2704,7 @@ static int dwceqos_get_eee(struct net_device *ndev, struct ethtool_eee *edata)
			    dwceqos_get_tx_lpi_state(regval));
			    dwceqos_get_tx_lpi_state(regval));
	}
	}


	return phy_ethtool_get_eee(lp->phy_dev, edata);
	return phy_ethtool_get_eee(ndev->phydev, edata);
}
}


static int dwceqos_set_eee(struct net_device *ndev, struct ethtool_eee *edata)
static int dwceqos_set_eee(struct net_device *ndev, struct ethtool_eee *edata)
@@ -2747,7 +2746,7 @@ static int dwceqos_set_eee(struct net_device *ndev, struct ethtool_eee *edata)
		spin_unlock_irqrestore(&lp->hw_lock, flags);
		spin_unlock_irqrestore(&lp->hw_lock, flags);
	}
	}


	return phy_ethtool_set_eee(lp->phy_dev, edata);
	return phy_ethtool_set_eee(ndev->phydev, edata);
}
}


static u32 dwceqos_get_msglevel(struct net_device *ndev)
static u32 dwceqos_get_msglevel(struct net_device *ndev)
@@ -2981,8 +2980,8 @@ static int dwceqos_remove(struct platform_device *pdev)
	if (ndev) {
	if (ndev) {
		lp = netdev_priv(ndev);
		lp = netdev_priv(ndev);


		if (lp->phy_dev)
		if (ndev->phydev)
			phy_disconnect(lp->phy_dev);
			phy_disconnect(ndev->phydev);
		mdiobus_unregister(lp->mii_bus);
		mdiobus_unregister(lp->mii_bus);
		mdiobus_free(lp->mii_bus);
		mdiobus_free(lp->mii_bus);