ARM: dts: Fix failing ethernet PHY detection on the LeMaker Banana Pi
Subsystems (2)
PATCH 1/1 ARM: dts: Fix failing ethernet PHY detection on the LeMaker Banana Pi
While testing the daily builds of the Debian-Installer (d-i) on the LeMaker Banana Pi (a small, Allwinner A20-based board), I found that within the installer environment, the detection of the external Realtek ethernet PHY connected to the Allwinner A20 GMAC fails upon first loading of the stmmac driver:
[ 77.235117] stmmaceth 1c50000.ethernet: no reset control found [ 77.235192] Ring mode enabled [ 77.235202] No HW DMA feature register supported [ 77.235211] Normal descriptors [ 77.235219] TX Checksum insertion supported [ 77.242678] libphy: stmmac: probed [ 77.242708] eth0: No PHY found
Just unloading the stmmac module and immediately afterwards modprobing it again results in proper detection of the PHY:
[ 148.823456] stmmaceth 1c50000.ethernet: no reset control found [ 148.823487] Ring mode enabled [ 148.823496] No HW DMA feature register supported [ 148.823502] Normal descriptors [ 148.823509] TX Checksum insertion supported [ 148.854654] libphy: stmmac: probed [ 148.854683] eth0: PHY ID 001cc915 at 0 IRQ POLL (stmmac-0:00) active [ 148.854694] eth0: PHY ID 001cc915 at 1 IRQ POLL (stmmac-0:01)
On the Banana Pi, the PHY power supply is handled by a GPIO-controlled regulator:
gmac: ethernet at 01c50000 {
pinctrl-names = "default";
pinctrl-0 = <&gmac_pins_rgmii_a>;
phy = <&phy1>;
phy-mode = "rgmii";
phy-supply = <®_gmac_3v3>;
status = "okay";
phy1: ethernet-phy at 1 {
reg = <1>;
};
};reg_gmac_3v3: gmac-3v3 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gmac_power_pin_bananapi>;
regulator-name = "gmac-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
startup-delay-us = <50000>;
enable-active-high;
gpio = <&pio 7 23 0>;
};and this problem did not show up on the hardware-wise rather similar Cubietech Cubietruck (same SoC, same external PHY, but no GPIO-controlled regulator for the PHY). Further tests have shown that increasing the startup-delay for the regulator solves the problem. The current sun7i-a20-bananapi.dts file (in linux-next, intended to go into kernel 3.19) sets startup-delay-us for the PHY's regulator to 50000. On my Banana Pi board, even with a value of 55000, the PHY detection does usually not work on the first probing inside d-i. Increasing the value to 57500 results in a successful probing most of the time, but not always; only setting it to 60000 results in a reliable PHY detection for me.
I would therefore like to propose increasing the startup-delay in the Banana Pi dts to a value of 60000. Following is an according patch.
Regards,
Karsten
Karsten Merker (1):
ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY
regulator
arch/arm/boot/dts/sun7i-a20-bananapi.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Signature · 1 line
1.7.10.4
PATCH 1/1 ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY regulator
On the LeMaker Banana Pi, probing the external ethernet PHY connected to the SoC's internal GMAC module sometimes fails. The PHY power supply is handled via a GPIO-controlled regulator, and the existing regulator startup-delay of 50000us is too short to make sure that the PHY is always fully powered up when it is queried by phylib. To guarantee a reliable PHY detection, the startup-delay has to be increased to 60000us.
--- arch/arm/boot/dts/sun7i-a20-bananapi.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/sun7i-a20-bananapi.dts +1 -1
@@ -207,7 +207,7 @@ regulator-name = "gmac-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; - startup-delay-us = <50000>; + startup-delay-us = <60000>; enable-active-high; gpio = <&pio 7 23 0>; };
Signature · 1 line
1.7.10.4
PATCH 1/1 ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY regulator
Hi,
Quoted 7 lines · Karsten Merker
On the LeMaker Banana Pi, probing the external ethernet PHY connected to the SoC's internal GMAC module sometimes fails. The PHY power supply is handled via a GPIO-controlled regulator, and the existing regulator startup-delay of 50000us is too short to make sure that the PHY is always fully powered up when it is queried by phylib. To guarantee a reliable PHY detection, the startup-delay has to be increased to 60000us.
We should probably just increase it to 100000us to be safe, otherwise:
Regards,
Hans
PATCH 1/1 ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY regulator
Quoted 11 lines · Hans de Goede
Hi,
Quoted 7 lines · Karsten Merker
On the LeMaker Banana Pi, probing the external ethernet PHY connected to the SoC's internal GMAC module sometimes fails. The PHY power supply is handled via a GPIO-controlled regulator, and the existing regulator startup-delay of 50000us is too short to make sure that the PHY is always fully powered up when it is queried by phylib. To guarantee a reliable PHY detection, the startup-delay has to be increased to 60000us.
Quoted 3 lines
We should probably just increase it to 100000us to be safe, otherwise:
Acked-by Hans de Goede <[email protected]>
Soooo, should I merge it or will there be a v2?
Maxime
Signature · 10 lines
Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141111/1aac765a/attachment.sig>
PATCH 1/1 ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY regulator
Hi,
Quoted 12 lines · Maxime Ripard
Quoted 11 lines · Hans de Goede
Hi,
Quoted 7 lines · Karsten Merker
On the LeMaker Banana Pi, probing the external ethernet PHY connected to the SoC's internal GMAC module sometimes fails. The PHY power supply is handled via a GPIO-controlled regulator, and the existing regulator startup-delay of 50000us is too short to make sure that the PHY is always fully powered up when it is queried by phylib. To guarantee a reliable PHY detection, the startup-delay has to be increased to 60000us.
Quoted 5 lines
Quoted 3 lines
We should probably just increase it to 100000us to be safe, otherwise:
Acked-by Hans de Goede <[email protected]>Soooo, should I merge it or will there be a v2?
It might be easiest if you merge it with the delay increased to 100000 us, assuming you agree that it is a good idea to add some extra safety margin.
Regards,
Hans
v2 cover ARM: dts: Fix failing ethernet PHY detection on the LeMaker Banana Pi
In reply to Karsten MerkerWhile testing the daily builds of the Debian-Installer (d-i) on the LeMaker Banana Pi (a small, Allwinner A20-based board), I found that within the installer environment, the detection of the external Realtek ethernet PHY connected to the Allwinner A20 GMAC fails upon first loading of the stmmac driver:
[ 77.235117] stmmaceth 1c50000.ethernet: no reset control found [ 77.235192] Ring mode enabled [ 77.235202] No HW DMA feature register supported [ 77.235211] Normal descriptors [ 77.235219] TX Checksum insertion supported [ 77.242678] libphy: stmmac: probed [ 77.242708] eth0: No PHY found
Just unloading the stmmac module and immediately afterwards modprobing it again results in proper detection of the PHY:
[ 148.823456] stmmaceth 1c50000.ethernet: no reset control found [ 148.823487] Ring mode enabled [ 148.823496] No HW DMA feature register supported [ 148.823502] Normal descriptors [ 148.823509] TX Checksum insertion supported [ 148.854654] libphy: stmmac: probed [ 148.854683] eth0: PHY ID 001cc915 at 0 IRQ POLL (stmmac-0:00) active [ 148.854694] eth0: PHY ID 001cc915 at 1 IRQ POLL (stmmac-0:01)
On the Banana Pi, the PHY power supply is handled by a GPIO-controlled regulator:
gmac: ethernet at 01c50000 {
pinctrl-names = "default";
pinctrl-0 = <&gmac_pins_rgmii_a>;
phy = <&phy1>;
phy-mode = "rgmii";
phy-supply = <®_gmac_3v3>;
status = "okay";
phy1: ethernet-phy at 1 {
reg = <1>;
};
};reg_gmac_3v3: gmac-3v3 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&gmac_power_pin_bananapi>;
regulator-name = "gmac-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
startup-delay-us = <50000>;
enable-active-high;
gpio = <&pio 7 23 0>;
};and this problem did not show up on the hardware-wise rather similar Cubietech Cubietruck (same SoC, same external PHY, but no GPIO-controlled regulator for the PHY). Further tests have shown that increasing the startup-delay for the regulator solves the problem. The current sun7i-a20-bananapi.dts file (in linux-next, intended to go into kernel 3.19) sets startup-delay-us for the PHY's regulator to 50000. On my Banana Pi board, even with a value of 55000, the PHY detection does usually not work on the first probing inside d-i. Increasing the value to 57500 results in a successful probing most of the time, but not always; only setting it to 60000 results in a reliable PHY detection for me.
Following is a patch to increase the startup delay in the Banana Pi dts.
Regards,
Karsten
Karsten Merker (1):
ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY
regulator
arch/arm/boot/dts/sun7i-a20-bananapi.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Changes since V1:
- increased the delay from 60000us to 100000us to have a certain safety margin and cater for manufacturing variations as proposed by Hans de Goede.
Signature · 1 line
1.7.10.4
PATCH v2 1/1 ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY regulator
On the LeMaker Banana Pi, probing the external ethernet PHY connected to the SoC's internal GMAC module sometimes fails. The PHY power supply is handled via a GPIO-controlled regulator, and the existing regulator startup-delay of 50000us is too short to make sure that the PHY is always fully powered up when it is queried by phylib. Tests have shown that to provide a reliable PHY detection, the startup-delay has to be increased to at least 60000us. To have a certain safety margin and to cater for manufacturing variations between different boards, the delay gets set to 100000us as discussed on the linux-arm-kernel mailinglist.
--- arch/arm/boot/dts/sun7i-a20-bananapi.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/sun7i-a20-bananapi.dts +1 -1
@@ -207,7 +207,7 @@ regulator-name = "gmac-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; - startup-delay-us = <50000>; + startup-delay-us = <100000>; enable-active-high; gpio = <&pio 7 23 0>; };
Signature · 1 line
1.7.10.4
Maxime Ripard
AppliedPATCH v2 1/1 ARM: dts: sunxi: Banana Pi: increase startup-delay for the GMAC PHY regulator
Quoted 11 lines · Karsten Merker
On the LeMaker Banana Pi, probing the external ethernet PHY connected to the SoC's internal GMAC module sometimes fails. The PHY power supply is handled via a GPIO-controlled regulator, and the existing regulator startup-delay of 50000us is too short to make sure that the PHY is always fully powered up when it is queried by phylib. Tests have shown that to provide a reliable PHY detection, the startup-delay has to be increased to at least 60000us. To have a certain safety margin and to cater for manufacturing variations between different boards, the delay gets set to 100000us as discussed on the linux-arm-kernel mailinglist.
Quoted 2 lines
Signed-off-by Karsten Merker <[email protected]>Acked-by Hans de Goede <[email protected]>
Merged, thanks.
Maxime
Signature · 10 lines
Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141112/40e14133/attachment.sig>