[openwrt/openwrt] realtek: Add support for Netgear S350 series switches GS308T and GS310TP

LEDE Commits lede-commits at lists.infradead.org
Fri May 7 06:05:43 BST 2021


ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/c829bc1f2c3c47e230905864f2f5f8c759f88ce6

commit c829bc1f2c3c47e230905864f2f5f8c759f88ce6
Author: Raylynn Knight <rayknight at me.com>
AuthorDate: Wed May 5 12:11:44 2021 -0400

    realtek: Add support for Netgear S350 series switches GS308T and GS310TP
    
    The Netgear GS308T v1 is an 8 port gigabit switch.  The GS310TP v1 is an 8
    port POE+ gigabit switch with 2 SFP Ports (currently untested).
    
    The GS308T v1 and GS310TP v1 are quite similar to the Netgear GS1xx
    devices already supported.  Theses two devices use the same Netgear
    firmware and are very similar to there corresponding GS1xx devices. For
    this reason they share a large portion of the device tree with the GS108T
    and GS110TP with exception of the uimage magic and model and compatible
    values.
    
    All of the above feature a dual firmware layout, referred to as Image0
    and Image1 in the Netgear firmware.
    
    In order to manipulate the PoE+ on the GS310TP v1 , one needs the
    rtl83xx-poe package
    
    Specifications (GS308T)
    ----------------------
    
     * RTL8380M SoC, 1 MIPS 4KEc core @ 500MHz
     * 128MB DDR3-1600 DRAM (Winbond W631GG8MB-12)
     * 32MB 3v NOR SPI Flash (Winbond W25Q256JVFQ)
     * RTL8231 GPIO extender to control the LEDs and the reset button
     * 8 x 10/100/1000BASE-T ports, internal PHY (RTL8218B)
     * UART (115200 8N1) via unpopulated standard 0.1" pin header marked J1
     * Power is supplied via a 12V 1A barrel connector
    
    Specifications (GS310TP)
    ----------------------
    
     * RTL8380M SoC, 1 MIPS 4KEc core @ 500MHz
     * Nuvoton M0516LDN for controlling PoE
     * 128MB DDR3-1600 DRAM (Winbond W631GG8MB-12)
     * 32MB 3v NOR SPI Flash (Winbond W25Q256JVFQ)
     * RTL8231 GPIO extender to control the LEDs and the reset button
     * 8 x 10/100/1000BASE-T PoE+ ports, 2 x Gigabit SFP ports,
     internal PHY (RTL8218B)
     * UART (115200 8N1) via unpopulated standard 0.1" pin header marked J1
     * Power is supplied via a 54V 1.25A barrel connector
    
    Both devices have UART pinout
    -----------
    
    J1 | [o]ooo
          ^ ||`------ GND
          | |`------- RX         [TX out of the serial adapter]
          | `-------- TX         [RX into the serial adapter]
          `---------- Vcc (3V3)  [the square pin]
    
    The through holes are filled with PB-free solder which melts at 375C.
    They can also be drilled using a 0.9mm bit.
    
    Installation
    ------------
    Instructions are identical to those for the similar Negear devices
    and apply both to the GS308T v1 and GS310TP v1 as well.
    -------------------
    Boot initramfs image from U-Boot
    --------------------------------
    
     1. Press the Escape key at the `Hit Esc key to stop autoboot` prompt
     2. Init network with `rtk network on` command
     3. Load image with `tftpboot 0x8f000000
    openwrt-realtek-generic-netgear_gs308t-v1-initramfs-kernel.bin` command
     4. Boot the image with `bootm` command
    
    The switch defaults to IP 192.168.1.1 and tries to fetch the image via
    TFTP from 192.168.1.111.
    
    Updating the installed firmware
    -------------------------------
    
    The OpenWRT ramdisk image can be flashed directly from the Netgear UI.
    The Image0 slot should be used in order to enable sysupgrade.
    
    As with similar switches, changing the active boot partition can be
    accomplished in U-Boot as follows:
    
     1. Press the Escape key at the `Hit Esc key to stop autoboot` prompt
     2. Run `setsys bootpartition {0|1}` to select the boot partition
     3. Run `savesys` followed by `boota` to proceed with the boot process
    
    Signed-off-by: Raylynn Knight <rayknight at me.com>
---
 .../realtek/base-files/etc/board.d/02_network      |  3 ++
 .../linux/realtek/dts/rtl8380_netgear_gigabit.dtsi | 58 --------------------
 .../realtek/dts/rtl8380_netgear_gigabit_1xx.dtsi   | 61 ++++++++++++++++++++++
 .../realtek/dts/rtl8380_netgear_gigabit_3xx.dtsi   | 61 ++++++++++++++++++++++
 .../realtek/dts/rtl8380_netgear_gs108t-v3.dts      |  2 +-
 .../realtek/dts/rtl8380_netgear_gs110tpp-v1.dts    |  2 +-
 .../realtek/dts/rtl8380_netgear_gs308t-v1.dts      |  8 +++
 .../realtek/dts/rtl8380_netgear_gs310tp-v1.dts     | 21 ++++++++
 target/linux/realtek/image/Makefile                | 17 ++++++
 9 files changed, 173 insertions(+), 60 deletions(-)

diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network
index 1e199db589..c1dd230bb8 100644
--- a/target/linux/realtek/base-files/etc/board.d/02_network
+++ b/target/linux/realtek/base-files/etc/board.d/02_network
@@ -51,6 +51,9 @@ case $board in
 netgear,gs110tpp-v1)
 	ucidef_set_poe 130 "$lan_list"
 	;;
+netgear,gs310tp-v1)
+	ucidef_set_poe 55 "$lan_list"
+	;;
 zyxel,gs1900-10hp)
 	ucidef_set_poe 77 "$lan_list"
 	;;
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gigabit.dtsi b/target/linux/realtek/dts/rtl8380_netgear_gigabit.dtsi
index 0d34ca5dc2..8ba66d6023 100644
--- a/target/linux/realtek/dts/rtl8380_netgear_gigabit.dtsi
+++ b/target/linux/realtek/dts/rtl8380_netgear_gigabit.dtsi
@@ -33,64 +33,6 @@
 	indirect-access-bus-id = <0>;
 };
 
-&spi0 {
-	status = "okay";
-
-	flash at 0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <50000000>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition at 0 {
-				label = "u-boot";
-				reg = <0x0000000 0x00e0000>;
-				read-only;
-			};
-
-			partition at e0000 {
-				label = "u-boot-env";
-				reg = <0x00e0000 0x0010000>;
-				read-only;
-			};
-
-			partition at f0000 {
-				label = "u-boot-env2";
-				reg = <0x00f0000 0x0010000>;
-			};
-
-			partition at 100000 {
-				label = "jffs";
-				reg = <0x0100000 0x0100000>;
-				read-only;
-			};
-
-			partition at 200000 {
-				label = "jffs2";
-				reg = <0x0200000 0x0100000>;
-				read-only;
-			};
-
-			partition at 300000 {
-				label = "firmware";
-				compatible = "openwrt,uimage", "denx,uimage";
-				openwrt,ih-magic = <0x4e474520>;
-				reg = <0x0300000 0x0e80000>;
-			};
-
-			partition at 1180000 {
-				label = "runtime2";
-				reg = <0x1180000 0x0e80000>;
-				read-only;
-			};
-		};
-	};
-};
-
 &ethernet0 {
 	mdio: mdio-bus {
 		compatible = "realtek,rtl838x-mdio";
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gigabit_1xx.dtsi b/target/linux/realtek/dts/rtl8380_netgear_gigabit_1xx.dtsi
new file mode 100644
index 0000000000..7eccfcb5a2
--- /dev/null
+++ b/target/linux/realtek/dts/rtl8380_netgear_gigabit_1xx.dtsi
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl8380_netgear_gigabit.dtsi"
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0000000 0x00e0000>;
+				read-only;
+			};
+
+			partition at e0000 {
+				label = "u-boot-env";
+				reg = <0x00e0000 0x0010000>;
+				read-only;
+			};
+
+			partition at f0000 {
+				label = "u-boot-env2";
+				reg = <0x00f0000 0x0010000>;
+			};
+
+			partition at 100000 {
+				label = "jffs";
+				reg = <0x0100000 0x0100000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				label = "jffs2";
+				reg = <0x0200000 0x0100000>;
+				read-only;
+			};
+
+			partition at 300000 {
+				label = "firmware";
+				compatible = "openwrt,uimage", "denx,uimage";
+				openwrt,ih-magic = <0x4e474520>;
+				reg = <0x0300000 0x0e80000>;
+			};
+
+			partition at 1180000 {
+				label = "runtime2";
+				reg = <0x1180000 0x0e80000>;
+				read-only;
+			};
+		};
+	};
+};
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gigabit_3xx.dtsi b/target/linux/realtek/dts/rtl8380_netgear_gigabit_3xx.dtsi
new file mode 100644
index 0000000000..efb146a25a
--- /dev/null
+++ b/target/linux/realtek/dts/rtl8380_netgear_gigabit_3xx.dtsi
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl8380_netgear_gigabit.dtsi"
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0000000 0x00e0000>;
+				read-only;
+			};
+
+			partition at e0000 {
+				label = "u-boot-env";
+				reg = <0x00e0000 0x0010000>;
+				read-only;
+			};
+
+			partition at f0000 {
+				label = "u-boot-env2";
+				reg = <0x00f0000 0x0010000>;
+			};
+
+			partition at 100000 {
+				label = "jffs";
+				reg = <0x0100000 0x0100000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				label = "jffs2";
+				reg = <0x0200000 0x0100000>;
+				read-only;
+			};
+
+			partition at 300000 {
+				label = "firmware";
+				compatible = "openwrt,uimage", "denx,uimage";
+				openwrt,ih-magic = <0x4e474335>;
+				reg = <0x0300000 0x0e80000>;
+			};
+
+			partition at 1180000 {
+				label = "runtime2";
+				reg = <0x1180000 0x0e80000>;
+				read-only;
+			};
+		};
+	};
+};
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gs108t-v3.dts b/target/linux/realtek/dts/rtl8380_netgear_gs108t-v3.dts
index 080fee6107..b701e88d1a 100644
--- a/target/linux/realtek/dts/rtl8380_netgear_gs108t-v3.dts
+++ b/target/linux/realtek/dts/rtl8380_netgear_gs108t-v3.dts
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "rtl8380_netgear_gigabit.dtsi"
+#include "rtl8380_netgear_gigabit_1xx.dtsi"
 
 / {
 	compatible = "netgear,gs108t-v3", "realtek,rtl838x-soc";
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts b/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
index 265cc51c30..646f4ed516 100644
--- a/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
+++ b/target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "rtl8380_netgear_gigabit.dtsi"
+#include "rtl8380_netgear_gigabit_1xx.dtsi"
 
 / {
 	compatible = "netgear,gs110tpp-v1", "realtek,rtl838x-soc";
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gs308t-v1.dts b/target/linux/realtek/dts/rtl8380_netgear_gs308t-v1.dts
new file mode 100644
index 0000000000..016ed8beb6
--- /dev/null
+++ b/target/linux/realtek/dts/rtl8380_netgear_gs308t-v1.dts
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl8380_netgear_gigabit_3xx.dtsi"
+
+/ {
+	compatible = "netgear,gs308t-v1", "realtek,rtl838x-soc";
+	model = "Netgear GS308T v1";
+};
diff --git a/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts b/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts
new file mode 100644
index 0000000000..e3f59bde69
--- /dev/null
+++ b/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl8380_netgear_gigabit_3xx.dtsi"
+
+/ {
+	compatible = "netgear,gs310tp-v1", "realtek,rtl838x-soc";
+	model = "Netgear GS310TP v1";
+
+};
+
+&mdio {
+	INTERNAL_PHY(24)
+	INTERNAL_PHY(26)
+};
+
+&switch0 {
+	ports {
+		SWITCH_SFP_PORT(24, 9, rgmii-id)
+		SWITCH_SFP_PORT(26, 10, rgmii-id)
+	};
+};
diff --git a/target/linux/realtek/image/Makefile b/target/linux/realtek/image/Makefile
index 18e5fedb9b..b889cf84d8 100644
--- a/target/linux/realtek/image/Makefile
+++ b/target/linux/realtek/image/Makefile
@@ -86,6 +86,23 @@ define Device/netgear_gs110tpp-v1
 endef
 TARGET_DEVICES += netgear_gs110tpp-v1
 
+define Device/netgear_gs308t-v1
+  $(Device/netgear_nge)
+  DEVICE_MODEL := GS308T
+  DEVICE_VARIANT := v1
+  UIMAGE_MAGIC := 0x4e474335
+endef
+TARGET_DEVICES += netgear_gs308t-v1
+
+define Device/netgear_gs310tp-v1
+  $(Device/netgear_nge)
+  DEVICE_MODEL := GS310TP
+  DEVICE_VARIANT := v1
+  UIMAGE_MAGIC := 0x4e474335
+  DEVICE_PACKAGES += lua-rs232
+endef
+TARGET_DEVICES += netgear_gs310tp-v1
+
 define Device/zyxel_gs1900
   SOC := rtl8380
   IMAGE_SIZE := 6976k



More information about the lede-commits mailing list