[openwrt/openwrt] ramips: add support for MikroTik RouterBOARD 760iGS (hEX S)

LEDE Commits lede-commits at lists.infradead.org
Thu Aug 13 07:10:43 EDT 2020


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/74438d54198d928d68c695da15b35aebfbecf27b

commit 74438d54198d928d68c695da15b35aebfbecf27b
Author: John Thomson <git at johnthomson.fastmail.com.au>
AuthorDate: Thu Jun 11 08:15:40 2020 +1000

    ramips: add support for MikroTik RouterBOARD 760iGS (hEX S)
    
    This patch adds support for the MikroTik RouterBOARD 760iGS router.
    It is similar to the already supported RouterBOARD 750Gr3.
    The 760iGS device features an added SFP cage, and passive
    PoE out on port 5 compared to the RB750Gr3.
    
    https://mikrotik.com/product/hex_s
    
    Specifications:
    
    - SoC: MediaTek MT7621A
    - CPU: 880MHz
    - Flash: 16 MB
    - RAM:  256 MB
    - Ethernet: 5x 10/100/1000 Mbps
    - SFP cage
    - USB port
    - microSD slot
    
    Unsupported:
    
    - Beeper (requires PWM driver)
    - ZT2046Q (ADS7846 compatible) on SPI as slave 1 (CS1)
      The linux driver requires an interrupt, and pendown GPIO
      These are unknown, and not needed with the touchscreen
      only used for temperature and voltage monitoring.
      ads7846 hwmon:
      temp0 is degrees Celsius
      temp1 is voltage * 32
    
    GPIOs:
    
    - 07:  input passive PoE out (lan5) compatible (Mikrotik) device connected
    - 17:  output passive PoE out (lan5) switch
    
    Installation through RouterBoot follows the usual MikroTik method
    https://openwrt.org/toh/mikrotik/common
    
    To boot to intramfs image in RAM:
    
    1. Setup TFTP server to serve intramfs image.
    2. Plug Ethernet cable into WAN port.
    3. Unplug power, hold reset button and plug power in.
       Wait (~25 seconds) for beep and then release reset button.
       The SFP LED will be lit in RouterBoot, but will not be lit in OpenWRT.
    4. Wait for a minute. Router should be running OpenWrt,
       check by plugging in to port 2-5 and going to 192.168.1.1.
    
    To install OpenWrt to flash:
    
    1. Follow steps above to boot intramfs image in RAM.
    2. Flash the sysupgrade.bin image with web interface or sysupgrade.
    3. Once the router reboots you will be running OpenWrt from flash.
    
    OEM firmware differences:
    
    - RouterOS assigns a different MAC address for each port
    - The first address (E01 on the sticker) is used for wan (ether1 in OEM).
    - The next address is used for lan2.
    - The last address (E06 on the sticker) is used for sfp.
    
    [Initial port work, shared dtsi]
    Signed-off-by: Vince Grassia <vincenzo.grassia at zionark.com>
    [SFP support and GPIO identification]
    Signed-off-by: Luka Logar <luka.logar at iname.com>
    [Misc. fixes and submission]
    Signed-off-by: John Thomson <git at johnthomson.fastmail.com.au>
    [rebase, drop uart3 from state_default on 750gr3, minor commit
    title/message facelift]
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../dts/mt7621_mikrotik_routerboard-750gr3.dts     | 72 +---------------------
 .../dts/mt7621_mikrotik_routerboard-760igs.dts     | 69 +++++++++++++++++++++
 ...r3.dts => mt7621_mikrotik_routerboard-7xx.dtsi} | 34 ----------
 target/linux/ramips/image/mt7621.mk                |  7 +++
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |  3 +
 .../mt7621/base-files/etc/board.d/02_network       |  4 ++
 .../mt7621/base-files/etc/board.d/03_gpio_switches |  3 +
 .../mt7621/base-files/lib/upgrade/platform.sh      |  1 +
 8 files changed, 89 insertions(+), 104 deletions(-)

diff --git a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts
index 60315a46e7..baa42ee8ed 100644
--- a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts
+++ b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
 
-#include "mt7621_mikrotik.dtsi"
+#include "mt7621_mikrotik_routerboard-7xx.dtsi"
 
 / {
 	compatible = "mikrotik,routerboard-750gr3", "mediatek,mt7621-soc";
@@ -28,79 +28,11 @@
 			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
 		};
 	};
-
-	gpio_export {
-		compatible = "gpio-export";
-		#size-cells = <0>;
-
-		buzzer {
-			/* Beeper requires PWM for frequency selection */
-			gpio-export,name = "buzzer";
-			gpio-export,output = <0>;
-			gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
-		};
-
-		usb_power {
-			gpio-export,name = "usb_power";
-			gpio-export,output = <1>;
-			gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
-		};
-	};
-};
-
-&keys {
-	mode {
-		label = "mode";
-		gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
-		linux,code = <BTN_0>;
-	};
-};
-
-&partitions {
-	partition at 40000 {
-		compatible = "mikrotik,minor";
-		label = "firmware";
-		reg = <0x040000 0xfc0000>;
-	};
-};
-
-&switch0 {
-	ports {
-		port at 0 {
-			status = "okay";
-			label = "wan";
-		};
-
-		port at 1 {
-			status = "okay";
-			label = "lan2";
-		};
-
-		port at 2 {
-			status = "okay";
-			label = "lan3";
-		};
-
-		port at 3 {
-			status = "okay";
-			label = "lan4";
-		};
-
-		port at 4 {
-			status = "okay";
-			label = "lan5";
-		};
-	};
 };
 
 &state_default {
 	gpio {
-		/* via gpio7 (uart3 group) the PoE status can be read */
-		groups = "uart2", "uart3", "jtag", "wdt";
+		groups = "uart2", "jtag", "wdt";
 		function = "gpio";
 	};
 };
-
-&sdhci {
-	status = "okay";
-};
diff --git a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-760igs.dts b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-760igs.dts
new file mode 100644
index 0000000000..dd2de11dce
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-760igs.dts
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7621_mikrotik_routerboard-7xx.dtsi"
+
+/ {
+	compatible = "mikrotik,routerboard-760igs", "mediatek,mt7621-soc";
+	model = "MikroTik RouterBOARD 760iGS";
+
+	aliases {
+		led-boot = &led_pwr;
+		led-failsafe = &led_pwr;
+		led-running = &led_pwr;
+		led-upgrade = &led_pwr;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_pwr: pwr {
+			label = "routerboard-760igs:blue:pwr";
+			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+
+		sfp {
+			label = "routerboard-760igs:blue:sfp";
+			gpios = <&gpio 9 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	sfp1: sfp1 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c>;
+		los-gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+		tx-disable-gpios = <&gpio 10 GPIO_ACTIVE_HIGH>;
+		maximum-power-milliwatt = <1000>;
+	};
+};
+
+&mdio {
+	ephy7: ethernet-phy at 7 {
+		reg = <7>;
+		sfp = <&sfp1>;
+	};
+};
+
+&gmac1 {
+	status = "okay";
+
+	label = "sfp";
+	phy-handle = <&ephy7>;
+};
+
+&i2c {
+	status = "okay";
+};
+
+&state_default {
+	gpio {
+		/* gpio7 (uart3 group) goes high when
+		 * port5 (PoE out) is cabled to a
+		 * Mikrotik PoE-in capable port,
+		 * such as port1 on another rb760iGS */
+		groups = "uart2", "uart3", "jtag", "wdt";
+		function = "gpio";
+	};
+};
diff --git a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi
similarity index 60%
copy from target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts
copy to target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi
index 60315a46e7..b8fae51c3b 100644
--- a/target/linux/ramips/dts/mt7621_mikrotik_routerboard-750gr3.dts
+++ b/target/linux/ramips/dts/mt7621_mikrotik_routerboard-7xx.dtsi
@@ -1,34 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
-/dts-v1/;
 
 #include "mt7621_mikrotik.dtsi"
 
 / {
-	compatible = "mikrotik,routerboard-750gr3", "mediatek,mt7621-soc";
-	model = "MikroTik RouterBOARD 750Gr3";
-
-	aliases {
-		led-boot = &led_usr;
-		led-failsafe = &led_usr;
-		led-running = &led_usr;
-		led-upgrade = &led_usr;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-
-		pwr {
-			label = "routerboard-750gr3:blue:pwr";
-			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
-			default-state = "on";
-		};
-
-		led_usr: usr {
-			label = "routerboard-750gr3:green:usr";
-			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
-		};
-	};
-
 	gpio_export {
 		compatible = "gpio-export";
 		#size-cells = <0>;
@@ -93,14 +67,6 @@
 	};
 };
 
-&state_default {
-	gpio {
-		/* via gpio7 (uart3 group) the PoE status can be read */
-		groups = "uart2", "uart3", "jtag", "wdt";
-		function = "gpio";
-	};
-};
-
 &sdhci {
 	status = "okay";
 };
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 16b74c7b3e..060b322ea0 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -708,6 +708,13 @@ define Device/mikrotik_routerboard-750gr3
 endef
 TARGET_DEVICES += mikrotik_routerboard-750gr3
 
+define Device/mikrotik_routerboard-760igs
+  $(Device/MikroTik)
+  DEVICE_MODEL := RouterBOARD 760iGS
+  DEVICE_PACKAGES += kmod-sfp -wpad-basic
+endef
+TARGET_DEVICES += mikrotik_routerboard-760igs
+
 define Device/mikrotik_routerboard-m11g
   $(Device/MikroTik)
   DEVICE_MODEL := RouterBOARD M11G
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index 63c0bce083..8708de33c1 100755
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -48,6 +48,9 @@ linksys,ea7500-v2)
 	ucidef_set_led_netdev "lan4" "lan4 link" "$boardname:green:lan4" "lan4" "link"
 	ucidef_set_led_netdev "wan" "wan link" "$boardname:green:wan" "wan" "link"
 	;;
+mikrotik,routerboard-760igs)
+	ucidef_set_led_netdev "sfp" "SFP" "$boardname:blue:sfp" "sfp"
+	;;
 mikrotik,routerboard-m11g)
 	ucidef_set_rssimon "wlan0" "200000" "1"
 	ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:green:rssi0" "wlan0" "1" "100"
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index b9f2740a1b..cf3df76c08 100755
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -48,6 +48,9 @@ ramips_setup_interfaces()
 	mikrotik,routerboard-750gr3)
 		ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan"
 		;;
+	mikrotik,routerboard-760igs)
+		ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan sfp"
+		;;
 	ubnt,edgerouter-x)
 		ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4" "eth0"
 		;;
@@ -108,6 +111,7 @@ ramips_setup_macs()
 		label_mac=$lan_mac
 		;;
 	mikrotik,routerboard-750gr3|\
+	mikrotik,routerboard-760igs|\
 	mikrotik,routerboard-m11g|\
 	mikrotik,routerboard-m33g)
 		label_mac=$(cat "/sys/firmware/mikrotik/hard_config/mac_base")
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/03_gpio_switches b/target/linux/ramips/mt7621/base-files/etc/board.d/03_gpio_switches
index 7787ddcbc7..f809df7f2f 100755
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/03_gpio_switches
@@ -7,6 +7,9 @@ board_config_update
 board=$(board_name)
 
 case "$board" in
+mikrotik,routerboard-760igs)
+	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "497"
+	;;
 telco-electronics,x1)
 	ucidef_add_gpio_switch "modem_reset" "Modem Reset" "16"
 	;;
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index a411a7a033..90749f589b 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -28,6 +28,7 @@ platform_do_upgrade() {
 		}
 		;;
 	mikrotik,routerboard-750gr3|\
+	mikrotik,routerboard-760igs|\
 	mikrotik,routerboard-m11g|\
 	mikrotik,routerboard-m33g)
 		[ -z "$(rootfs_type)" ] && mtd erase firmware



More information about the lede-commits mailing list