All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] arm64: dts: imx8mn-var-som: add 20ms delay to ethernet regulator enable
@ 2023-05-29 19:33 ` Hugo Villeneuve
  0 siblings, 0 replies; 4+ messages in thread
From: Hugo Villeneuve @ 2023-05-29 19:33 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team
  Cc: hugo, Hugo Villeneuve, devicetree, linux-arm-kernel, linux-kernel

From: Hugo Villeneuve <hvilleneuve@dimonoff.com>

This commit is taken from Variscite linux kernel public git repository.
Original patch author: Nate Drude <nate.d@variscite.com>
See: https://github.com/varigit/linux-imx/blob/5.15-2.0.x-imx_var01/drivers/net/ethernet/freescale/fec_main.c#L3993-L4050

The ethernet phy reset was moved from the fec controller to the
mdio bus, see for example: 0e825b32c033e1998d0ebaf247f5dab3c340e3bf

When the fec driver managed the reset, the regulator had time to
settle during the fec phy reset before calling of_mdiobus_register,
which probes the mii bus for the phy id to match the correct driver.

Now that the mdio bus controls the reset, the fec driver no longer has
any delay between enabling the regulator and calling of_mdiobus_register.
If the regulator voltage has not settled, the phy id will not be read
correctly and the generic phy driver will be used.

The following call tree explains in more detail:

fec_probe
  fec_reset_phy                               <- no longer introduces delay after migration to mdio reset
  fec_enet_mii_init
    of_mdiobus_register
      of_mdiobus_register_phy
        fwnode_mdiobus_register_phy
          get_phy_device                      <- mii probe for phy id to match driver happens here
          ...
          fwnode_mdiobus_phy_device_register
            phy_device_register
              mdiobus_register_device
                mdio_device_reset             <- mdio reset assert / deassert delay happens here

Add a 20ms enable delay to the regulator to fix the issue.

Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
---
 arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi
index cbd9d124c80d..a502ef7394a3 100644
--- a/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi
@@ -27,6 +27,7 @@ reg_eth_phy: regulator-eth-phy {
 		regulator-name = "eth_phy_pwr";
 		regulator-min-microvolt = <3300000>;
 		regulator-max-microvolt = <3300000>;
+		regulator-enable-ramp-delay = <20000>;
 		gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 	};

base-commit: 8b817fded42d8fe3a0eb47b1149d907851a3c942
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH] arm64: dts: imx8mn-var-som: add 20ms delay to ethernet regulator enable
@ 2023-05-29 19:33 ` Hugo Villeneuve
  0 siblings, 0 replies; 4+ messages in thread
From: Hugo Villeneuve @ 2023-05-29 19:33 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	NXP Linux Team
  Cc: hugo, Hugo Villeneuve, devicetree, linux-arm-kernel, linux-kernel

From: Hugo Villeneuve <hvilleneuve@dimonoff.com>

This commit is taken from Variscite linux kernel public git repository.
Original patch author: Nate Drude <nate.d@variscite.com>
See: https://github.com/varigit/linux-imx/blob/5.15-2.0.x-imx_var01/drivers/net/ethernet/freescale/fec_main.c#L3993-L4050

The ethernet phy reset was moved from the fec controller to the
mdio bus, see for example: 0e825b32c033e1998d0ebaf247f5dab3c340e3bf

When the fec driver managed the reset, the regulator had time to
settle during the fec phy reset before calling of_mdiobus_register,
which probes the mii bus for the phy id to match the correct driver.

Now that the mdio bus controls the reset, the fec driver no longer has
any delay between enabling the regulator and calling of_mdiobus_register.
If the regulator voltage has not settled, the phy id will not be read
correctly and the generic phy driver will be used.

The following call tree explains in more detail:

fec_probe
  fec_reset_phy                               <- no longer introduces delay after migration to mdio reset
  fec_enet_mii_init
    of_mdiobus_register
      of_mdiobus_register_phy
        fwnode_mdiobus_register_phy
          get_phy_device                      <- mii probe for phy id to match driver happens here
          ...
          fwnode_mdiobus_phy_device_register
            phy_device_register
              mdiobus_register_device
                mdio_device_reset             <- mdio reset assert / deassert delay happens here

Add a 20ms enable delay to the regulator to fix the issue.

Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
---
 arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi
index cbd9d124c80d..a502ef7394a3 100644
--- a/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi
@@ -27,6 +27,7 @@ reg_eth_phy: regulator-eth-phy {
 		regulator-name = "eth_phy_pwr";
 		regulator-min-microvolt = <3300000>;
 		regulator-max-microvolt = <3300000>;
+		regulator-enable-ramp-delay = <20000>;
 		gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 	};

base-commit: 8b817fded42d8fe3a0eb47b1149d907851a3c942
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] arm64: dts: imx8mn-var-som: add 20ms delay to ethernet regulator enable
  2023-05-29 19:33 ` Hugo Villeneuve
@ 2023-06-04 12:49   ` Shawn Guo
  -1 siblings, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2023-06-04 12:49 UTC (permalink / raw)
  To: Hugo Villeneuve
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	Hugo Villeneuve, devicetree, linux-arm-kernel, linux-kernel

On Mon, May 29, 2023 at 03:33:12PM -0400, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> 
> This commit is taken from Variscite linux kernel public git repository.
> Original patch author: Nate Drude <nate.d@variscite.com>
> See: https://github.com/varigit/linux-imx/blob/5.15-2.0.x-imx_var01/drivers/net/ethernet/freescale/fec_main.c#L3993-L4050
> 
> The ethernet phy reset was moved from the fec controller to the
> mdio bus, see for example: 0e825b32c033e1998d0ebaf247f5dab3c340e3bf
> 
> When the fec driver managed the reset, the regulator had time to
> settle during the fec phy reset before calling of_mdiobus_register,
> which probes the mii bus for the phy id to match the correct driver.
> 
> Now that the mdio bus controls the reset, the fec driver no longer has
> any delay between enabling the regulator and calling of_mdiobus_register.
> If the regulator voltage has not settled, the phy id will not be read
> correctly and the generic phy driver will be used.
> 
> The following call tree explains in more detail:
> 
> fec_probe
>   fec_reset_phy                               <- no longer introduces delay after migration to mdio reset
>   fec_enet_mii_init
>     of_mdiobus_register
>       of_mdiobus_register_phy
>         fwnode_mdiobus_register_phy
>           get_phy_device                      <- mii probe for phy id to match driver happens here
>           ...
>           fwnode_mdiobus_phy_device_register
>             phy_device_register
>               mdiobus_register_device
>                 mdio_device_reset             <- mdio reset assert / deassert delay happens here
> 
> Add a 20ms enable delay to the regulator to fix the issue.
> 
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>

Applied, thanks!

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] arm64: dts: imx8mn-var-som: add 20ms delay to ethernet regulator enable
@ 2023-06-04 12:49   ` Shawn Guo
  0 siblings, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2023-06-04 12:49 UTC (permalink / raw)
  To: Hugo Villeneuve
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	Hugo Villeneuve, devicetree, linux-arm-kernel, linux-kernel

On Mon, May 29, 2023 at 03:33:12PM -0400, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> 
> This commit is taken from Variscite linux kernel public git repository.
> Original patch author: Nate Drude <nate.d@variscite.com>
> See: https://github.com/varigit/linux-imx/blob/5.15-2.0.x-imx_var01/drivers/net/ethernet/freescale/fec_main.c#L3993-L4050
> 
> The ethernet phy reset was moved from the fec controller to the
> mdio bus, see for example: 0e825b32c033e1998d0ebaf247f5dab3c340e3bf
> 
> When the fec driver managed the reset, the regulator had time to
> settle during the fec phy reset before calling of_mdiobus_register,
> which probes the mii bus for the phy id to match the correct driver.
> 
> Now that the mdio bus controls the reset, the fec driver no longer has
> any delay between enabling the regulator and calling of_mdiobus_register.
> If the regulator voltage has not settled, the phy id will not be read
> correctly and the generic phy driver will be used.
> 
> The following call tree explains in more detail:
> 
> fec_probe
>   fec_reset_phy                               <- no longer introduces delay after migration to mdio reset
>   fec_enet_mii_init
>     of_mdiobus_register
>       of_mdiobus_register_phy
>         fwnode_mdiobus_register_phy
>           get_phy_device                      <- mii probe for phy id to match driver happens here
>           ...
>           fwnode_mdiobus_phy_device_register
>             phy_device_register
>               mdiobus_register_device
>                 mdio_device_reset             <- mdio reset assert / deassert delay happens here
> 
> Add a 20ms enable delay to the regulator to fix the issue.
> 
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>

Applied, thanks!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-06-04 12:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-29 19:33 [PATCH] arm64: dts: imx8mn-var-som: add 20ms delay to ethernet regulator enable Hugo Villeneuve
2023-05-29 19:33 ` Hugo Villeneuve
2023-06-04 12:49 ` Shawn Guo
2023-06-04 12:49   ` Shawn Guo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.