Commit 8b3e6f89 authored by Carlo Caione's avatar Carlo Caione Committed by Kevin Hilman
Browse files

arm64: dts: meson: Fix IRQ trigger type for macirq



A long running stress test on a custom board shipping an AXG SoCs and a
Realtek RTL8211F PHY revealed that after a few hours the connection
speed would drop drastically, from ~1000Mbps to ~3Mbps. At the same time
the 'macirq' (eth0) IRQ would stop being triggered at all and as
consequence the GMAC IRQs never ACKed.

After a painful investigation the problem seemed to be due to a wrong
defined IRQ type for the GMAC IRQ that should be LEVEL_HIGH instead of
EDGE_RISING.

The change in the macirq IRQ type also solved another long standing
issue affecting this SoC/PHY where EEE was causing the network
connection to die after stressing it with iperf3 (even though much
sooner). It's now possible to remove the 'eee-broken-1000t' quirk as
well.

Fixes: feb3cbea ("ARM64: dts: meson-gxbb-odroidc2: fix GbE tx link breakage")
Fixes: 6d28d577 ("ARM64: dts: meson-axg: fix ethernet stability issue")
Reviewed-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Tested-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Acked-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: default avatarCarlo Caione <ccaione@baylibre.com>
Signed-off-by: default avatarKevin Hilman <khilman@baylibre.com>
parent cbddb02e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@
			compatible = "amlogic,meson-axg-dwmac", "snps,dwmac";
			reg = <0x0 0xff3f0000 0x0 0x10000
			       0x0 0xff634540 0x0 0x8>;
			interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>;
			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "macirq";
			clocks = <&clkc CLKID_ETH>,
				 <&clkc CLKID_FCLK_DIV2>,
+1 −1
Original line number Diff line number Diff line
@@ -467,7 +467,7 @@
			compatible = "amlogic,meson-gx-dwmac", "amlogic,meson-gxbb-dwmac", "snps,dwmac";
			reg = <0x0 0xc9410000 0x0 0x10000
			       0x0 0xc8834540 0x0 0x4>;
			interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>;
			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "macirq";
			status = "disabled";
		};
+0 −1
Original line number Diff line number Diff line
@@ -143,7 +143,6 @@
			interrupt-parent = <&gpio_intc>;
			/* MAC_INTR on GPIOZ_15 */
			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
			eee-broken-1000t;
		};
	};
};
+0 −1
Original line number Diff line number Diff line
@@ -142,7 +142,6 @@
		eth_phy0: ethernet-phy@0 {
			/* Realtek RTL8211F (0x001cc916) */
			reg = <0>;
			eee-broken-1000t;
		};
	};
};