net: stmmac: dwmac-sun8i: Balance internal PHY resource references
authorSamuel Holland <samuel@sholland.org>
Sun, 3 Jan 2021 11:17:42 +0000 (05:17 -0600)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Jan 2021 00:32:07 +0000 (16:32 -0800)
commit529254216773acd5039c07aa18cf06fd1f9fccdd
treeea50b998a615fd6ca98cd3850bc06e1f755c6f3d
parent7eeecc4b1f480c7ba1932cb9a7693f8c452640f2
net: stmmac: dwmac-sun8i: Balance internal PHY resource references

While stmmac_pltfr_remove calls sun8i_dwmac_exit, the sun8i_dwmac_init
and sun8i_dwmac_exit functions are also called by the stmmac_platform
suspend/resume callbacks. They may be called many times during the
device's lifetime and should not release resources used by the driver.

Furthermore, there was no error handling in case registering the MDIO
mux failed during probe, and the EPHY clock was never released at all.

Fix all of these issues by moving the deinitialization code to a driver
removal callback. Also ensure the EPHY is powered down before removal.

Fixes: 634db83b8265 ("net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs")
Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c