Message ID | 20240430083730.134918-8-herve.codina@bootlin.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Add support for the LAN966x PCI device using a DT overlay | expand |
> -----Original Message----- > From: Herve Codina <herve.codina@bootlin.com> > Sent: Tuesday, April 30, 2024 2:07 PM > To: Herve Codina <herve.codina@bootlin.com>; Thomas Gleixner > <tglx@linutronix.de>; Rob Herring <robh@kernel.org>; Krzysztof Kozlowski > <krzk+dt@kernel.org>; Conor Dooley <conor+dt@kernel.org>; David S. Miller > <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub > Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; Lee Jones > <lee@kernel.org>; Arnd Bergmann <arnd@arndb.de>; Horatiu Vultur > <horatiu.vultur@microchip.com>; UNGLinuxDriver@microchip.com; Andrew > Lunn <andrew@lunn.ch>; Heiner Kallweit <hkallweit1@gmail.com>; Russell > King <linux@armlinux.org.uk>; Saravana Kannan <saravanak@google.com>; > Bjorn Helgaas <bhelgaas@google.com>; Philipp Zabel > <p.zabel@pengutronix.de>; Lars Povlsen <lars.povlsen@microchip.com>; > Steen Hegelund <Steen.Hegelund@microchip.com>; Daniel Machon > <daniel.machon@microchip.com>; Alexandre Belloni > <alexandre.belloni@bootlin.com> > Cc: linux-kernel@vger.kernel.org; devicetree@vger.kernel.org; > netdev@vger.kernel.org; linux-pci@vger.kernel.org; linux-arm- > kernel@lists.infradead.org; Allan Nielsen <allan.nielsen@microchip.com>; > Steen Hegelund <steen.hegelund@microchip.com>; Luca Ceresoli > <luca.ceresoli@bootlin.com>; Thomas Petazzoni > <thomas.petazzoni@bootlin.com> > Subject: [PATCH 07/17] net: mdio: mscc-miim: Handle the switch > reset > > 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(+) > > 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; Please follow reverse x-mass tree order > 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)) > -- > 2.44.0 >
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é
Hi Sai, On Tue, 30 Apr 2024 09:21:57 +0000 Sai Krishna Gajula <saikrishnag@marvell.com> wrote: ... > > @@ -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; > > Please follow reverse x-mass tree order > Sure, this will be fixed in the next iteration. 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(+)