ipq40xx: wpj428: fix missing MDIO GPIO reset and pinmux
authorLeon M. George <leon@georgemail.eu>
Mon, 11 Nov 2019 13:10:50 +0000 (14:10 +0100)
committerPetr Štetiar <ynezz@true.cz>
Sat, 28 Mar 2020 12:03:02 +0000 (13:03 +0100)
The bootloader does not always initialize the MDIO pins before booting
Linux. E.g. on version "U-Boot 2012.07 [Chaos Calmer 15.05.1,r35193] (Jul
25 2017 - 11:36:26)" this is the case when booting automatically without
activating the U-Boot console.

Without this change, the kernel boot will complain about missing PHYs:

 libphy: ipq40xx_mdio: probed
 ar40xx c000000.ess-switch: Probe failed - Missing PHYs!
 libphy: Fixed MDIO Bus: probed

With this change it will work as expected:

 libphy: ipq40xx_mdio: probed
 ESS reset ok!
 ESS reset ok!
 libphy: Fixed MDIO Bus: probed

Ref: GH-2835
Tested-by: Fredrik Olofsson <fredrik.olofsson@anyfinetworks.com>
Signed-off-by: Leon M. George <leon@georgemail.eu>
[commit description from Fredrik, subject facelift]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts
target/linux/ipq40xx/files-5.4/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts

index cf8540c10176ef29470dd833df3c12b5cb26a3f5..1bcf5e80bf3bded159b4b2e8901c7c5550b835ed 100644 (file)
 
                mdio@90000 {
                        status = "okay";
+                       pinctrl-0 = <&mdio_pins>;
+                       pinctrl-names = "default";
+                       reset-gpios = <&tlmm 59 GPIO_ACTIVE_LOW>;
+                       reset-delay-us = <2000>;
                };
 
                ess-psgmii@98000 {
 };
 
 &tlmm {
+       mdio_pins: mdio_pinmux {
+               mux_1 {
+                       pins = "gpio53";
+                       function = "mdio";
+                       bias-pull-up;
+               };
+
+               mux_2 {
+                       pins = "gpio52";
+                       function = "mdc";
+                       bias-pull-up;
+               };
+       };
+
        serial_pins: serial_pinmux {
                mux {
                        pins = "gpio60", "gpio61";
index cf8540c10176ef29470dd833df3c12b5cb26a3f5..1bcf5e80bf3bded159b4b2e8901c7c5550b835ed 100644 (file)
 
                mdio@90000 {
                        status = "okay";
+                       pinctrl-0 = <&mdio_pins>;
+                       pinctrl-names = "default";
+                       reset-gpios = <&tlmm 59 GPIO_ACTIVE_LOW>;
+                       reset-delay-us = <2000>;
                };
 
                ess-psgmii@98000 {
 };
 
 &tlmm {
+       mdio_pins: mdio_pinmux {
+               mux_1 {
+                       pins = "gpio53";
+                       function = "mdio";
+                       bias-pull-up;
+               };
+
+               mux_2 {
+                       pins = "gpio52";
+                       function = "mdc";
+                       bias-pull-up;
+               };
+       };
+
        serial_pins: serial_pinmux {
                mux {
                        pins = "gpio60", "gpio61";