Message ID | 20240430083730.134918-8-herve.codina@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for the LAN966x PCI device using a DT overlay | expand |
On Tue, Apr 30, 2024 at 10:37:16AM +0200, Herve Codina wrote: > The mscc-miim device can be impacted by the switch reset, at least when > this device is part of the LAN966x PCI device. Just to be sure i understand this correctly. The MDIO bus master can be reset using the "switch" reset. So you are adding code to ensure the "switch" reset is out of reset state, so the MDIO bus master works. Given that this is a new property, maybe give it a better name to indicate it resets both the switch and the MDIO bus master? Andrew
Hi Andrew, On Tue, 30 Apr 2024 15:46:18 +0200 Andrew Lunn <andrew@lunn.ch> wrote: > On Tue, Apr 30, 2024 at 10:37:16AM +0200, Herve Codina wrote: > > The mscc-miim device can be impacted by the switch reset, at least when > > this device is part of the LAN966x PCI device. > > Just to be sure i understand this correctly. The MDIO bus master can > be reset using the "switch" reset. So you are adding code to ensure > the "switch" reset is out of reset state, so the MDIO bus master > works. Exactly. > > Given that this is a new property, maybe give it a better name to > indicate it resets both the switch and the MDIO bus master? > Replied in the patch in the same series introducing the property [PATCH 06/17] dt-bindings: net: mscc-miim: Add resets property Thanks for the feedback. Best regards, Hervé
diff --git a/drivers/net/mdio/mdio-mscc-miim.c b/drivers/net/mdio/mdio-mscc-miim.c index c29377c85307..6a6c1768f533 100644 --- a/drivers/net/mdio/mdio-mscc-miim.c +++ b/drivers/net/mdio/mdio-mscc-miim.c @@ -19,6 +19,7 @@ #include <linux/platform_device.h> #include <linux/property.h> #include <linux/regmap.h> +#include <linux/reset.h> #define MSCC_MIIM_REG_STATUS 0x0 #define MSCC_MIIM_STATUS_STAT_PENDING BIT(2) @@ -270,11 +271,18 @@ static int mscc_miim_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct regmap *mii_regmap, *phy_regmap; + struct reset_control *reset; struct device *dev = &pdev->dev; struct mscc_miim_dev *miim; struct mii_bus *bus; int ret; + reset = devm_reset_control_get_optional_shared(dev, "switch"); + if (IS_ERR(reset)) + return dev_err_probe(dev, PTR_ERR(reset), "Failed to get reset\n"); + + reset_control_reset(reset); + mii_regmap = ocelot_regmap_from_resource(pdev, 0, &mscc_miim_regmap_config); if (IS_ERR(mii_regmap))
The mscc-miim device can be impacted by the switch reset, at least when this device is part of the LAN966x PCI device. Handle this newly added (optional) resets property. Signed-off-by: Herve Codina <herve.codina@bootlin.com> --- drivers/net/mdio/mdio-mscc-miim.c | 8 ++++++++ 1 file changed, 8 insertions(+)