1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- From 3ae3bc426eaf57ca8f53d75777d9a5ef779bc7b7 Mon Sep 17 00:00:00 2001
- From: Christian Marangi <[email protected]>
- Date: Fri, 8 Dec 2023 15:51:54 +0100
- Subject: [PATCH 07/13] 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: Christian Marangi <[email protected]>
- Reviewed-by: Andrew Lunn <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/phy/at803x.c | 45 ++++++++++++++++++++++------------------
- 1 file changed, 25 insertions(+), 20 deletions(-)
- --- a/drivers/net/phy/at803x.c
- +++ b/drivers/net/phy/at803x.c
- @@ -951,27 +951,8 @@ static int at803x_hibernation_mode_confi
-
- 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_devic
- 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,
|