[PATCH net-next v2 3/5] net: phy: mxl-gpy: release MxL86211C Super Isolate
From: Robert Marko
Date: Fri Oct 16 2026 - 07:25:31 EST
The MxL86211C can be strapped into Super Isolate mode, leaving the PHY
halted after reset until software releases it.
Reapply the MDIO pad voltage and release Super Isolate in config_init,
so both settings are restored after each hardware reset.
Signed-off-by: Robert Marko <robert.marko@xxxxxxxxxx>
---
Changes in v2:
- Move Super Isolate release from probe to config_init for resets.
- Reapply the MDIO pad voltage before releasing Super Isolate.
drivers/net/phy/mxl-gpy.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/mxl-gpy.c b/drivers/net/phy/mxl-gpy.c
index fbac7c49b4759..8bc119655f104 100644
--- a/drivers/net/phy/mxl-gpy.c
+++ b/drivers/net/phy/mxl-gpy.c
@@ -114,6 +114,7 @@
/* Packet Manager Control */
#define VSPEC1_PM_CTRL 0x0c
#define VSPEC1_PM_CTRL_MDIO_VOL BIT(14)
+#define VSPEC1_PM_CTRL_SI BIT(12) /* Super Isolate */
/* Temperature sensor */
#define VSPEC1_TEMP_STA 0x0E
@@ -422,6 +423,23 @@ static int mxl86211c_configure_mdio_voltage(struct phy_device *phydev,
VSPEC1_PM_CTRL_MDIO_VOL, val);
}
+static int mxl86211c_config_init(struct phy_device *phydev)
+{
+ struct gpy_priv *priv = phydev->priv;
+ int ret;
+
+ ret = mxl86211c_configure_mdio_voltage(phydev, priv->vddp);
+ if (ret)
+ return ret;
+
+ ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_PM_CTRL,
+ VSPEC1_PM_CTRL_SI, 0);
+ if (ret)
+ return ret;
+
+ return gpy21x_config_init(phydev);
+}
+
static int mxl86211c_probe(struct phy_device *phydev)
{
struct device *dev = &phydev->mdio.dev;
@@ -1466,7 +1484,7 @@ static struct phy_driver gpy_drivers[] = {
PHY_ID_MATCH_MODEL(PHY_ID_MXL86211C),
.name = "Maxlinear Ethernet MxL86211C",
.get_features = genphy_c45_pma_read_abilities,
- .config_init = gpy21x_config_init,
+ .config_init = mxl86211c_config_init,
.probe = mxl86211c_probe,
.inband_caps = gpy_inband_caps,
.config_inband = gpy_config_inband,
--
2.56.0