summaryrefslogtreecommitdiffstats
path: root/arch/arm/boot/dts/armada-385-turris-omnia.dts
diff options
context:
space:
mode:
authorMarek Behún <kabel@kernel.org>2020-11-16 13:24:22 +0100
committerGregory CLEMENT <gregory.clement@bootlin.com>2020-11-30 11:35:53 +0100
commitadd2d65962977caf23ca2fa21a2457d31b636574 (patch)
treeb818079d6f8510391581e62803960caf1ead4843 /arch/arm/boot/dts/armada-385-turris-omnia.dts
parentARM: dts: turris-omnia: describe switch interrupt (diff)
downloadlinux-add2d65962977caf23ca2fa21a2457d31b636574.tar.xz
linux-add2d65962977caf23ca2fa21a2457d31b636574.zip
ARM: dts: turris-omnia: add SFP node
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>
Diffstat (limited to 'arch/arm/boot/dts/armada-385-turris-omnia.dts')
-rw-r--r--arch/arm/boot/dts/armada-385-turris-omnia.dts30
1 files changed, 29 insertions, 1 deletions
diff --git a/arch/arm/boot/dts/armada-385-turris-omnia.dts b/arch/arm/boot/dts/armada-385-turris-omnia.dts
index 7ccebf7d1757..aea07b352d24 100644
--- 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>;