Przeglądaj źródła

ipq40xx: wpj428: fix missing MDIO GPIO reset and pinmux

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 <[email protected]>
Signed-off-by: Leon M. George <[email protected]>
[commit description from Fredrik, subject facelift]
Signed-off-by: Petr Štetiar <[email protected]>
Leon M. George 6 lat temu
rodzic
commit
d59137d1d9

+ 18 - 0
target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts

@@ -32,6 +32,10 @@
 
 		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 {
@@ -129,6 +133,20 @@
 };
 
 &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";

+ 18 - 0
target/linux/ipq40xx/files-5.4/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts

@@ -32,6 +32,10 @@
 
 		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 {
@@ -129,6 +133,20 @@
 };
 
 &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";