Commit 3ae3bc42 authored by Christian Marangi's avatar Christian Marangi Committed by David S. Miller
Browse files

net: phy: at803x: move specific at8031 config_init to dedicated function



Move specific at8031 config_init to dedicated function to make
at803x_config_init more generic and tidy things up.

Signed-off-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 25d2ba94
Loading
Loading
Loading
Loading
+25 −20
Original line number Diff line number Diff line
@@ -951,27 +951,8 @@ static int at803x_hibernation_mode_config(struct phy_device *phydev)

static int at803x_config_init(struct phy_device *phydev)
{
	struct at803x_priv *priv = phydev->priv;
	int ret;

	if (phydev->drv->phy_id == ATH8031_PHY_ID) {
		/* Some bootloaders leave the fiber page selected.
		 * Switch to the appropriate page (fiber or copper), as otherwise we
		 * read the PHY capabilities from the wrong page.
		 */
		phy_lock_mdio_bus(phydev);
		ret = at803x_write_page(phydev,
					priv->is_fiber ? AT803X_PAGE_FIBER :
							 AT803X_PAGE_COPPER);
		phy_unlock_mdio_bus(phydev);
		if (ret)
			return ret;

		ret = at8031_pll_config(phydev);
		if (ret < 0)
			return ret;
	}

	/* The RX and TX delay default is:
	 *   after HW reset: RX delay enabled and TX delay disabled
	 *   after SW reset: RX delay enabled, while TX delay retains the
@@ -1604,6 +1585,30 @@ static int at8031_probe(struct phy_device *phydev)
			      AT803X_WOL_EN, 0);
}

static int at8031_config_init(struct phy_device *phydev)
{
	struct at803x_priv *priv = phydev->priv;
	int ret;

	/* Some bootloaders leave the fiber page selected.
	 * Switch to the appropriate page (fiber or copper), as otherwise we
	 * read the PHY capabilities from the wrong page.
	 */
	phy_lock_mdio_bus(phydev);
	ret = at803x_write_page(phydev,
				priv->is_fiber ? AT803X_PAGE_FIBER :
						 AT803X_PAGE_COPPER);
	phy_unlock_mdio_bus(phydev);
	if (ret)
		return ret;

	ret = at8031_pll_config(phydev);
	if (ret < 0)
		return ret;

	return at803x_config_init(phydev);
}

static int qca83xx_config_init(struct phy_device *phydev)
{
	u8 switch_revision;
@@ -2113,7 +2118,7 @@ static struct phy_driver at803x_driver[] = {
	.name			= "Qualcomm Atheros AR8031/AR8033",
	.flags			= PHY_POLL_CABLE_TEST,
	.probe			= at8031_probe,
	.config_init		= at803x_config_init,
	.config_init		= at8031_config_init,
	.config_aneg		= at803x_config_aneg,
	.soft_reset		= genphy_soft_reset,
	.set_wol		= at803x_set_wol,