From d59137d1d93991d2ed261c066d4dad836e0dd2bb Mon Sep 17 00:00:00 2001 From: "Leon M. George" Date: Mon, 11 Nov 2019 14:10:50 +0100 Subject: [PATCH] ipq40xx: wpj428: fix missing MDIO GPIO reset and pinmux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Leon M. George [commit description from Fredrik, subject facelift] Signed-off-by: Petr Štetiar --- .../arch/arm/boot/dts/qcom-ipq4028-wpj428.dts | 18 ++++++++++++++++++ .../arch/arm/boot/dts/qcom-ipq4028-wpj428.dts | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts index cf8540c101..1bcf5e80bf 100644 --- a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts +++ b/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"; diff --git a/target/linux/ipq40xx/files-5.4/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts b/target/linux/ipq40xx/files-5.4/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts index cf8540c101..1bcf5e80bf 100644 --- a/target/linux/ipq40xx/files-5.4/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts +++ b/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";