The Ethernet PHY is supplied by 3v3 PMIC regulator, add it to Ethernet node. Signed-off-by: Christophe Roullier --- arch/arm64/boot/dts/st/stm32mp235f-dk.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/st/stm32mp235f-dk.dts b/arch/arm64/boot/dts/st/stm32mp235f-dk.dts index dd4efbe5a46e..fb49cd2da2c6 100644 --- a/arch/arm64/boot/dts/st/stm32mp235f-dk.dts +++ b/arch/arm64/boot/dts/st/stm32mp235f-dk.dts @@ -137,6 +137,7 @@ ðernet1 { pinctrl-names = "default", "sleep"; phy-handle = <&phy1_eth1>; phy-mode = "rgmii-id"; + phy-supply = <&scmi_v3v3>; status = "okay"; mdio { -- 2.43.0 The Ethernet PHY is supplied by 3v3 PMIC regulator, add it to Ethernet node. Signed-off-by: Christophe Roullier --- arch/arm64/boot/dts/st/stm32mp257f-dk.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/st/stm32mp257f-dk.dts b/arch/arm64/boot/dts/st/stm32mp257f-dk.dts index 8daf3dfd5133..e98a773448ee 100644 --- a/arch/arm64/boot/dts/st/stm32mp257f-dk.dts +++ b/arch/arm64/boot/dts/st/stm32mp257f-dk.dts @@ -144,6 +144,7 @@ ðernet1 { pinctrl-names = "default", "sleep"; phy-handle = <&phy1_eth1>; phy-mode = "rgmii-id"; + phy-supply = <&scmi_v3v3>; status = "okay"; mdio { -- 2.43.0 The RTL8211F has a PHYRSTB pin to reset the chip. For a complete PHY reset, this pin must be asserted low for at least 10ms for the internal regulator. Wait for at least 80ms (for internal circuits setting time) before accessing the PHY register. All registers will return to default values after a hardware reset Signed-off-by: Christophe Roullier --- arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts index 14e033f365e3..a41ab55aa8cb 100644 --- a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts +++ b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts @@ -247,7 +247,7 @@ phy0_eth2: ethernet-phy@1 { compatible = "ethernet-phy-id001c.c916"; reg = <1>; reset-assert-us = <10000>; - reset-deassert-us = <300>; + reset-deassert-us = <80000>; reset-gpios = <&gpiog 6 GPIO_ACTIVE_LOW>; }; }; -- 2.43.0 In case of error during stmmac_mdio_register, pm_runtime is not cleaning before exit probe. Signed-off-by: Christophe Roullier Reviewed-by: Russell King (Oracle) --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 0de4bc949913..852de0f51c09 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -8062,6 +8062,8 @@ static int __stmmac_dvr_probe(struct device *device, error_pcs_setup: stmmac_mdio_unregister(ndev); error_mdio_register: + pm_runtime_put_sync(device); + pm_runtime_disable(device); stmmac_napi_del(ndev); error_hw_init: destroy_workqueue(priv->wq); -- 2.43.0