net: bcmgenet: Ensure MDIO unregistration has clocks enabled
authorFlorian Fainelli <florian.fainelli@broadcom.com>
Thu, 22 Jun 2023 10:31:07 +0000 (03:31 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 23 Jul 2023 11:49:32 +0000 (13:49 +0200)
commit 1b5ea7ffb7a3bdfffb4b7f40ce0d20a3372ee405 upstream.

With support for Ethernet PHY LEDs having been added, while
unregistering a MDIO bus and its child device liks PHYs there may be
"late" accesses to the MDIO bus. One typical use case is setting the PHY
LEDs brightness to OFF for instance.

We need to ensure that the MDIO bus controller remains entirely
functional since it runs off the main GENET adapter clock.

Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20230617155500.4005881-1-andrew@lunn.ch/
Fixes: 9a4e79697009 ("net: bcmgenet: utilize generic Broadcom UniMAC MDIO controller driver")
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20230622103107.1760280-1-florian.fainelli@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/broadcom/genet/bcmmii.c

index bf9e246784b6ebe0a078e59adbf5329d45c679a4..1fe8038587ac8d7567f2bb719dc12ed35ffc3b18 100644 (file)
@@ -664,5 +664,7 @@ void bcmgenet_mii_exit(struct net_device *dev)
        if (of_phy_is_fixed_link(dn))
                of_phy_deregister_fixed_link(dn);
        of_node_put(priv->phy_dn);
+       clk_prepare_enable(priv->clk);
        platform_device_unregister(priv->mii_pdev);
+       clk_disable_unprepare(priv->clk);
 }