]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: dsa: realtek: clean user_mii_bus setup
authorLuiz Angelo Daros de Luca <luizluca@gmail.com>
Fri, 9 Feb 2024 05:03:44 +0000 (02:03 -0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Feb 2024 10:42:17 +0000 (10:42 +0000)
Remove the line assigning dev.of_node in mdio_bus as subsequent
of_mdiobus_register will always overwrite it.

As discussed in [1], allow the DSA core to be simplified, by not
assigning ds->user_mii_bus when the MDIO bus is described in OF, as it
is unnecessary.

Since commit 3b73a7b8ec38 ("net: mdio_bus: add refcounting for fwnodes
to mdiobus"), we can put the "mdio" node just after the MDIO bus
registration.

[1] https://lkml.kernel.org/netdev/20231213120656.x46fyad6ls7sqyzv@skbuf/T/#u

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/realtek/realtek-smi.c

index 1fa8e9cb1a109a0cfce866232268f255abec6a19..0c36b43cd7b3deb8d4e48d76cee0533713af2f7c 100644 (file)
@@ -331,7 +331,7 @@ static int realtek_smi_setup_mdio(struct dsa_switch *ds)
 {
        struct realtek_priv *priv =  ds->priv;
        struct device_node *mdio_np;
-       int ret;
+       int ret = 0;
 
        mdio_np = of_get_child_by_name(priv->dev->of_node, "mdio");
        if (!mdio_np) {
@@ -344,15 +344,14 @@ static int realtek_smi_setup_mdio(struct dsa_switch *ds)
                ret = -ENOMEM;
                goto err_put_node;
        }
+
        priv->user_mii_bus->priv = priv;
        priv->user_mii_bus->name = "SMI user MII";
        priv->user_mii_bus->read = realtek_smi_mdio_read;
        priv->user_mii_bus->write = realtek_smi_mdio_write;
        snprintf(priv->user_mii_bus->id, MII_BUS_ID_SIZE, "SMI-%d",
                 ds->index);
-       priv->user_mii_bus->dev.of_node = mdio_np;
        priv->user_mii_bus->parent = priv->dev;
-       ds->user_mii_bus = priv->user_mii_bus;
 
        ret = devm_of_mdiobus_register(priv->dev, priv->user_mii_bus, mdio_np);
        if (ret) {
@@ -361,8 +360,6 @@ static int realtek_smi_setup_mdio(struct dsa_switch *ds)
                goto err_put_node;
        }
 
-       return 0;
-
 err_put_node:
        of_node_put(mdio_np);
 
@@ -428,8 +425,7 @@ EXPORT_SYMBOL_NS_GPL(realtek_smi_probe, REALTEK_DSA);
  * @pdev: platform_device to be removed.
  *
  * This function should be used as the .remove_new in a platform_driver. First
- * it unregisters the DSA switch and cleans internal data. Finally, it calls
- * the common remove function.
+ * it unregisters the DSA switch and then it calls the common remove function.
  *
  * Context: Can sleep.
  * Return: Nothing.
@@ -443,9 +439,6 @@ void realtek_smi_remove(struct platform_device *pdev)
 
        rtl83xx_unregister_switch(priv);
 
-       if (priv->user_mii_bus)
-               of_node_put(priv->user_mii_bus->dev.of_node);
-
        rtl83xx_remove(priv);
 }
 EXPORT_SYMBOL_NS_GPL(realtek_smi_remove, REALTEK_DSA);