realtek: Add support for Netgear S350 series switches GS308T and GS310TP
authorRaylynn Knight <rayknight@me.com>
Wed, 5 May 2021 16:11:44 +0000 (12:11 -0400)
committerPetr Štetiar <ynezz@true.cz>
Fri, 7 May 2021 05:05:16 +0000 (07:05 +0200)
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@me.com>
target/linux/realtek/base-files/etc/board.d/02_network
target/linux/realtek/dts/rtl8380_netgear_gigabit.dtsi
target/linux/realtek/dts/rtl8380_netgear_gigabit_1xx.dtsi [new file with mode: 0644]
target/linux/realtek/dts/rtl8380_netgear_gigabit_3xx.dtsi [new file with mode: 0644]
target/linux/realtek/dts/rtl8380_netgear_gs108t-v3.dts
target/linux/realtek/dts/rtl8380_netgear_gs110tpp-v1.dts
target/linux/realtek/dts/rtl8380_netgear_gs308t-v1.dts [new file with mode: 0644]
target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts [new file with mode: 0644]
target/linux/realtek/image/Makefile

index 1e199db5897f9f0b6461b2b2f93eac37805aa6eb..c1dd230bb89f50621db10d5c60f9fb76de912972 100644 (file)
@@ -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"
        ;;
index 0d34ca5dc221b97f10fe0ef46ac9fae3dabf114e..8ba66d6023716c4532baf22038a46459bedded67 100644 (file)
        indirect-access-bus-id = <0>;
 };
 
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <50000000>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x00e0000>;
-                               read-only;
-                       };
-
-                       partition@e0000 {
-                               label = "u-boot-env";
-                               reg = <0x00e0000 0x0010000>;
-                               read-only;
-                       };
-
-                       partition@f0000 {
-                               label = "u-boot-env2";
-                               reg = <0x00f0000 0x0010000>;
-                       };
-
-                       partition@100000 {
-                               label = "jffs";
-                               reg = <0x0100000 0x0100000>;
-                               read-only;
-                       };
-
-                       partition@200000 {
-                               label = "jffs2";
-                               reg = <0x0200000 0x0100000>;
-                               read-only;
-                       };
-
-                       partition@300000 {
-                               label = "firmware";
-                               compatible = "openwrt,uimage", "denx,uimage";
-                               openwrt,ih-magic = <0x4e474520>;
-                               reg = <0x0300000 0x0e80000>;
-                       };
-
-                       partition@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 (file)
index 0000000..7eccfcb
--- /dev/null
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl8380_netgear_gigabit.dtsi"
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0000000 0x00e0000>;
+                               read-only;
+                       };
+
+                       partition@e0000 {
+                               label = "u-boot-env";
+                               reg = <0x00e0000 0x0010000>;
+                               read-only;
+                       };
+
+                       partition@f0000 {
+                               label = "u-boot-env2";
+                               reg = <0x00f0000 0x0010000>;
+                       };
+
+                       partition@100000 {
+                               label = "jffs";
+                               reg = <0x0100000 0x0100000>;
+                               read-only;
+                       };
+
+                       partition@200000 {
+                               label = "jffs2";
+                               reg = <0x0200000 0x0100000>;
+                               read-only;
+                       };
+
+                       partition@300000 {
+                               label = "firmware";
+                               compatible = "openwrt,uimage", "denx,uimage";
+                               openwrt,ih-magic = <0x4e474520>;
+                               reg = <0x0300000 0x0e80000>;
+                       };
+
+                       partition@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 (file)
index 0000000..efb146a
--- /dev/null
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rtl8380_netgear_gigabit.dtsi"
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0000000 0x00e0000>;
+                               read-only;
+                       };
+
+                       partition@e0000 {
+                               label = "u-boot-env";
+                               reg = <0x00e0000 0x0010000>;
+                               read-only;
+                       };
+
+                       partition@f0000 {
+                               label = "u-boot-env2";
+                               reg = <0x00f0000 0x0010000>;
+                       };
+
+                       partition@100000 {
+                               label = "jffs";
+                               reg = <0x0100000 0x0100000>;
+                               read-only;
+                       };
+
+                       partition@200000 {
+                               label = "jffs2";
+                               reg = <0x0200000 0x0100000>;
+                               read-only;
+                       };
+
+                       partition@300000 {
+                               label = "firmware";
+                               compatible = "openwrt,uimage", "denx,uimage";
+                               openwrt,ih-magic = <0x4e474335>;
+                               reg = <0x0300000 0x0e80000>;
+                       };
+
+                       partition@1180000 {
+                               label = "runtime2";
+                               reg = <0x1180000 0x0e80000>;
+                               read-only;
+                       };
+               };
+       };
+};
index 080fee6107e1f2366296884c95e13526aa64aef3..b701e88d1a15b2b6200c6829516dcf5d49db7fcb 100644 (file)
@@ -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";
index 265cc51c305773b9b6ea13e4f218b2c632d708e9..646f4ed51600a0c9e2cb2dfeb15345039449c15a 100644 (file)
@@ -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 (file)
index 0000000..016ed8b
--- /dev/null
@@ -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 (file)
index 0000000..e3f59bd
--- /dev/null
@@ -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)
+       };
+};
index 18e5fedb9bd94fde8a80aa39eb64ce87207cd618..b889cf84d8465d23247cda2f9c218345983f0637 100644 (file)
@@ -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