ath79: mikrotik: enable SFP on RB922UAGS-5HPaCD
authorRoger Pueyo Centelles <roger.pueyo@guifi.net>
Fri, 18 Dec 2020 21:26:55 +0000 (22:26 +0100)
committerKoen Vandeputte <koen.vandeputte@ncentric.com>
Fri, 30 Apr 2021 08:26:34 +0000 (10:26 +0200)
This patch enables the SFP cage on the MikroTik RouterBOARD 922UAGS-5HPacD.

GPIO16 (tx-disable-gpios) should be governed by the SFP driver to enable
or disable transmission, but no change is observed. Therefore, it is
left as output high to ensure the SFP module is forced to transmit.

Tested on a RouterBOARD 922UAGS-5HPacD board, with a CISCO GLC-LH-SMD
1310nm module and an unbranded GLC-T RJ45 Gigabit module. PC=>router
iperf3 tests deliver 440/300 Mbps up/down, both via regular eth0 port
or SFP port with RJ45 module. Bridge between eth0 and eth1 delivers
950 Mbps symmetric.

Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
(cherry picked from commit 4387fe00cb7536d9d341f6d27e465ff0f0b29b1b)

target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts
target/linux/ath79/image/mikrotik.mk
target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
target/linux/ath79/mikrotik/config-default

index 8ad834fe61a7b5aa77056f70f459a91280b406ec..36979bbd3356fbef9bcc70d4b1e8dc76a849af25 100644 (file)
                        gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
                };
        };
+
+       i2c: i2c {
+               compatible = "i2c-gpio";
+
+               sda-gpios = <&gpio 18 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio 19 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               i2c-gpio,delay-us = <5>;
+               i2c-gpio,timeout-ms = <1>;
+       };
+
+       sfp1: sfp {
+               compatible = "sff,sfp";
+
+               i2c-bus = <&i2c>;
+               maximum-power-milliwatt = <1000>;
+               los-gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+               tx-disable-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+               // Toggling GPIO16 actually enables/disables the transmitter,
+               // but the SFP driver does not seem to be using it.
+               };
 };
 
 &pcie0 {
 &usb_phy1 {
        status = "okay";
 };
+
+&mdio1 {
+       status = "okay";
+
+       phy_sfp: ethernet-phy@0 {
+               reg = <0>;
+               phy-mode = "sgmii";
+               sfp = <&sfp1>;
+       };
+};
+
+&eth1 {
+       status = "okay";
+
+       phy-handle = <&phy_sfp>;
+       pll-data = <0x03000000 0x00000101 0x00001616>;
+       qca955x-sgmii-fixup;
+
+       gmac-config {
+               device = <&gmac>;
+       };
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
index b7d745bc77827eafda9fd0f5dd28c13c1027f62c..74f8603b5ab93ad1a438beebca7b31b48c799833 100644 (file)
@@ -22,7 +22,8 @@ define Device/mikrotik_routerboard-922uags-5hpacd
   $(Device/mikrotik_nand)
   SOC := qca9558
   DEVICE_MODEL := RouterBOARD 922UAGS-5HPacD
-  DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-usb2
+  DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-usb2 \
+       kmod-i2c-gpio kmod-sfp
   SUPPORTED_DEVICES += rb-922uags-5hpacd
 endef
 TARGET_DEVICES += mikrotik_routerboard-922uags-5hpacd
index 584acc0feb677a509f4a75656372bb27726463c9..c407da6dcd6ca846a14b8610e6c1f254466674be 100755 (executable)
@@ -16,7 +16,6 @@ ath79_setup_interfaces()
                        "0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
                ;;
        mikrotik,routerboard-921gs-5hpacd-15s|\
-       mikrotik,routerboard-922uags-5hpacd|\
        mikrotik,routerboard-lhg-2nd|\
        mikrotik,routerboard-sxt-5nd-r2|\
        mikrotik,routerboard-wap-g-5hact2hnd|\
index f713fc36cf93fba1618b63bfb88bdf8166cc3573..8609893f6ee3a362f3d9210c34abe7d417409e97 100644 (file)
@@ -24,6 +24,7 @@ CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_BLOCK=y
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_NET_DSA=y
 CONFIG_NET_SWITCHDEV=y
 CONFIG_PCI_AR71XX=y
 CONFIG_PHY_AR7100_USB=y