aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/patches-5.4/032-ARM-dts-turris-omnia-add-SFP-node.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-5.4/032-ARM-dts-turris-omnia-add-SFP-node.patch')
-rw-r--r--target/linux/mvebu/patches-5.4/032-ARM-dts-turris-omnia-add-SFP-node.patch90
1 files changed, 90 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-5.4/032-ARM-dts-turris-omnia-add-SFP-node.patch b/target/linux/mvebu/patches-5.4/032-ARM-dts-turris-omnia-add-SFP-node.patch
new file mode 100644
index 0000000000..2447a4e240
--- /dev/null
+++ b/target/linux/mvebu/patches-5.4/032-ARM-dts-turris-omnia-add-SFP-node.patch
@@ -0,0 +1,90 @@
+From add2d65962977caf23ca2fa21a2457d31b636574 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
+Date: Mon, 16 Nov 2020 13:24:22 +0100
+Subject: ARM: dts: turris-omnia: add SFP node
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Turris Omnia has an SFP cage that, together with WAN PHY, is connected
+to eth2 SerDes via a SerDes multiplexor. When a SFP module is present,
+the multiplexor switches the SerDes signal from PHY to SFP.
+
+Describe the SFP cage, but leave it disabled. Until phylink has support
+for such configuration, we are leaving it to U-Boot to enable SFP and
+disable WAN PHY at boot time depending on whether a SFP module is
+present.
+
+Signed-off-by: Marek Behún <kabel@kernel.org>
+Fixes: 26ca8b52d6e1 ("ARM: dts: add support for Turris Omnia")
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Cc: Russell King - ARM Linux admin <linux@armlinux.org.uk>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: Uwe Kleine-König <uwe@kleine-koenig.org>
+Cc: Jason Cooper <jason@lakedaemon.net>
+Cc: Gregory CLEMENT <gregory.clement@bootlin.com>
+Cc: Andreas Färber <afaerber@suse.de>
+Cc: Rob Herring <robh+dt@kernel.org>
+Cc: devicetree@vger.kernel.org
+Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
+---
+ arch/arm/boot/dts/armada-385-turris-omnia.dts | 30 ++++++++++++++++++++++++++-
+ 1 file changed, 29 insertions(+), 1 deletion(-)
+
+--- a/arch/arm/boot/dts/armada-385-turris-omnia.dts
++++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts
+@@ -82,6 +82,24 @@
+ };
+ };
+ };
++
++ sfp: sfp {
++ compatible = "sff,sfp";
++ i2c-bus = <&sfp_i2c>;
++ tx-fault-gpios = <&pcawan 0 GPIO_ACTIVE_HIGH>;
++ tx-disable-gpios = <&pcawan 1 GPIO_ACTIVE_HIGH>;
++ rate-select0-gpios = <&pcawan 2 GPIO_ACTIVE_HIGH>;
++ los-gpios = <&pcawan 3 GPIO_ACTIVE_HIGH>;
++ mod-def0-gpios = <&pcawan 4 GPIO_ACTIVE_LOW>;
++ maximum-power-milliwatt = <3000>;
++
++ /*
++ * For now this has to be enabled at boot time by U-Boot when
++ * a SFP module is present. Read more in the comment in the
++ * eth2 node below.
++ */
++ status = "disabled";
++ };
+ };
+
+ &bm {
+@@ -126,10 +144,20 @@
+
+ /* WAN port */
+ &eth2 {
++ /*
++ * eth2 is connected via a multiplexor to both the SFP cage and to
++ * ethernet-phy@1. The multiplexor switches the signal to SFP cage when
++ * a SFP module is present, as determined by the mode-def0 GPIO.
++ *
++ * Until kernel supports this configuration properly, in case SFP module
++ * is present, U-Boot has to enable the sfp node above, remove phy
++ * handle and add managed = "in-band-status" property.
++ */
+ status = "okay";
+ phy-mode = "sgmii";
+ phy = <&phy1>;
+ phys = <&comphy5 2>;
++ sfp = <&sfp>;
+ buffer-manager = <&bm>;
+ bm,pool-long = <2>;
+ bm,pool-short = <3>;
+@@ -195,7 +223,7 @@
+ /* routed to PCIe2 connector (CN62A) */
+ };
+
+- i2c@4 {
++ sfp_i2c: i2c@4 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <4>;