From c829bc1f2c3c47e230905864f2f5f8c759f88ce6 Mon Sep 17 00:00:00 2001 From: Raylynn Knight Date: Wed, 5 May 2021 12:11:44 -0400 Subject: [PATCH] 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 --- .../realtek/base-files/etc/board.d/02_network | 3 + .../realtek/dts/rtl8380_netgear_gigabit.dtsi | 58 ------------------ .../dts/rtl8380_netgear_gigabit_1xx.dtsi | 61 +++++++++++++++++++ .../dts/rtl8380_netgear_gigabit_3xx.dtsi | 61 +++++++++++++++++++ .../realtek/dts/rtl8380_netgear_gs108t-v3.dts | 2 +- .../dts/rtl8380_netgear_gs110tpp-v1.dts | 2 +- .../realtek/dts/rtl8380_netgear_gs308t-v1.dts | 8 +++ .../dts/rtl8380_netgear_gs310tp-v1.dts | 21 +++++++ target/linux/realtek/image/Makefile | 17 ++++++ 9 files changed, 173 insertions(+), 60 deletions(-) create mode 100644 target/linux/realtek/dts/rtl8380_netgear_gigabit_1xx.dtsi create mode 100644 target/linux/realtek/dts/rtl8380_netgear_gigabit_3xx.dtsi create mode 100644 target/linux/realtek/dts/rtl8380_netgear_gs308t-v1.dts create mode 100644 target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts 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@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; - }; - }; - }; -}; - ðernet0 { 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@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 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@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; + }; + }; + }; +}; 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 -- 2.30.2