12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- From 900eef75cc5018e149c52fe305c9c3fe424c52a7 Mon Sep 17 00:00:00 2001
- From: Christian Marangi <[email protected]>
- Date: Fri, 8 Dec 2023 15:51:52 +0100
- Subject: [PATCH 05/13] net: phy: at803x: move specific DT option for at8031 to
- specific probe
- Move specific DT options for at8031 to specific probe to tidy things up
- and make at803x_parse_dt more generic.
- 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 | 55 ++++++++++++++++++++++------------------
- 1 file changed, 31 insertions(+), 24 deletions(-)
- --- a/drivers/net/phy/at803x.c
- +++ b/drivers/net/phy/at803x.c
- @@ -825,30 +825,6 @@ static int at803x_parse_dt(struct phy_de
- }
- }
-
- - /* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
- - * options.
- - */
- - if (phydev->drv->phy_id == ATH8031_PHY_ID) {
- - if (of_property_read_bool(node, "qca,keep-pll-enabled"))
- - priv->flags |= AT803X_KEEP_PLL_ENABLED;
- -
- - ret = at8031_register_regulators(phydev);
- - if (ret < 0)
- - return ret;
- -
- - ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
- - "vddio");
- - if (ret) {
- - phydev_err(phydev, "failed to get VDDIO regulator\n");
- - return ret;
- - }
- -
- - /* Only AR8031/8033 support 1000Base-X for SFP modules */
- - ret = phy_sfp_probe(phydev, &at803x_sfp_ops);
- - if (ret < 0)
- - return ret;
- - }
- -
- return 0;
- }
-
- @@ -1582,6 +1558,30 @@ static int at803x_cable_test_start(struc
- return 0;
- }
-
- +static int at8031_parse_dt(struct phy_device *phydev)
- +{
- + struct device_node *node = phydev->mdio.dev.of_node;
- + struct at803x_priv *priv = phydev->priv;
- + int ret;
- +
- + if (of_property_read_bool(node, "qca,keep-pll-enabled"))
- + priv->flags |= AT803X_KEEP_PLL_ENABLED;
- +
- + ret = at8031_register_regulators(phydev);
- + if (ret < 0)
- + return ret;
- +
- + ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
- + "vddio");
- + if (ret) {
- + phydev_err(phydev, "failed to get VDDIO regulator\n");
- + return ret;
- + }
- +
- + /* Only AR8031/8033 support 1000Base-X for SFP modules */
- + return phy_sfp_probe(phydev, &at803x_sfp_ops);
- +}
- +
- static int at8031_probe(struct phy_device *phydev)
- {
- int ret;
- @@ -1590,6 +1590,13 @@ static int at8031_probe(struct phy_devic
- if (ret)
- return ret;
-
- + /* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
- + * options.
- + */
- + ret = at8031_parse_dt(phydev);
- + if (ret)
- + return ret;
- +
- /* Disable WoL in 1588 register which is enabled
- * by default
- */
|