MV_V2_TEMP_CTRL_MASK, val);
 }
 
-static void mv3310_hwmon_disable(void *data)
-{
-       struct phy_device *phydev = data;
-
-       mv3310_hwmon_config(phydev, false);
-}
-
 static int mv3310_hwmon_probe(struct phy_device *phydev)
 {
        struct device *dev = &phydev->mdio.dev;
        if (ret)
                return ret;
 
-       ret = devm_add_action_or_reset(dev, mv3310_hwmon_disable, phydev);
-       if (ret)
-               return ret;
-
        priv->hwmon_dev = devm_hwmon_device_register_with_info(dev,
                                priv->hwmon_name, phydev,
                                &mv3310_hwmon_chip_info, NULL);
        return phy_sfp_probe(phydev, &mv3310_sfp_ops);
 }
 
+static void mv3310_remove(struct phy_device *phydev)
+{
+       mv3310_hwmon_config(phydev, false);
+}
+
 static int mv3310_suspend(struct phy_device *phydev)
 {
        return mv3310_power_down(phydev);
                .read_status    = mv3310_read_status,
                .get_tunable    = mv3310_get_tunable,
                .set_tunable    = mv3310_set_tunable,
+               .remove         = mv3310_remove,
        },
        {
                .phy_id         = MARVELL_PHY_ID_88E2110,
                .read_status    = mv3310_read_status,
                .get_tunable    = mv3310_get_tunable,
                .set_tunable    = mv3310_set_tunable,
+               .remove         = mv3310_remove,
        },
 };