Skip to content

Commit

Permalink
realtek: Add support for Netgear S350 series switches GS308T and GS310TP
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
RaylynnKnight authored and ynezz committed May 7, 2021
1 parent daa5860 commit c829bc1
Show file tree
Hide file tree
Showing 9 changed files with 173 additions and 60 deletions.
3 changes: 3 additions & 0 deletions target/linux/realtek/base-files/etc/board.d/02_network
Expand Up @@ -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"
;;
Expand Down
58 changes: 0 additions & 58 deletions target/linux/realtek/dts/rtl8380_netgear_gigabit.dtsi
Expand Up @@ -33,64 +33,6 @@
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";
Expand Down
61 changes: 61 additions & 0 deletions 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@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;
};
};
};
};
61 changes: 61 additions & 0 deletions 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@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;
};
};
};
};
2 changes: 1 addition & 1 deletion 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";
Expand Down
2 changes: 1 addition & 1 deletion 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";
Expand Down
8 changes: 8 additions & 0 deletions 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";
};
21 changes: 21 additions & 0 deletions 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)
};
};
17 changes: 17 additions & 0 deletions target/linux/realtek/image/Makefile
Expand Up @@ -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
Expand Down

0 comments on commit c829bc1

Please sign in to comment.