This commit adds support for the Hasivo F1100W-4SX-4XGT ethernet 10Gbase and PoE switch. It also adds support for a whole matrix of variants of this device: | Device | Revision | RAM | PoE | Console | |---------------------|----------|--------|-----|----------| | F1100W-4SX-4XGT | v1.03 | 256 MB | n/a | RJ45 | | F1100W-4SX-4XGT | v1.02 | 512 MB | n/a | RJ45 | | F1100W-4SX-4XGT-SE | v1.03 | 256 MB | n/a | internal | | F1100W-4SX-4XGT-SE | v1.02 | 512 MB | n/a | internal | | F1100WP-4SX-4XGT | v1.03 | 256 MB | yes | RJ45 | | F1100WP-4SX-4XGT | v1.02 | 512 MB | yes | RJ45 | | F1100WP-4SX-4XGT-SE | v1.03 | 256 MB | yes | internal | | F1100WP-4SX-4XGT-SE | v1.02 | 512 MB | yes | internal | The devices are identical except for presence of the PoE daughter board, RJ45 console port, and 256 or 512 MB RAM. The non-512 MB image also works on the older 512 MB board revisions, but not vice versa. Credit to @mensi @bevanweiss @markc1984 Hardware -------- | | | |----------|-----------------------------------------------------------| | SoC | RTL9303 rev B | | RAM | 256 MB Samsung K4B2G1646F DDR3L (board revision v1.03), | | | or 512 MB unknown module (board revision v1.02 and older) | | Flash | 32 MB Macronix MX25L25645G SPI NOR, | | | 29 MiB usable by OpenWrt | | Ethernet | 4x SFP+ via SoC (10G/2.5G/1G), | | | 4x RJ45 via 4x RTL8261BE PHY (10G/5G/2.5G/1G/100M/10M) | | PoE | only on WP variants | | | 1x 802.3bt 90 W (port 5) | | | 3x 802.3at 30 W (ports 6, 7, 8) | | | via daughter board with Hasivo HS104PTI controller | | | PoE works but is unmanaged --> future work | | LEDs | 1x system orange/green, 8x link green/red, 4x PoE orange | | Button | Reset | | Console | RJ45 38400 bps 8n1, or pin holes on SE variants | Installing OpenWrt ------------------ Note: With vendor firmware 7.1.9, the bootloader's network profile is broken. We need to select a different profile with port/phy overlap to make the TFTP transfer work. Then only port 5 works in the OpenWrt initramfs, but all ports work fine after flashing, when we don't need the profile trick anymore. 1. Attach to RJ45 serial console port using a cisco cable. 2. Attach your computer to Port 5 (the first RJ45 port). 3. Serve initramfs-kernel.bin on TFTP 192.168.1.111. 4. Power on the device. 5. Interrupt U-Boot by pressing `Ctrl+C`, then `Z`, then `H`, during 3 second countdown. 6. Run: `setenv boardmodel 'RTL9303_5x8261BE_2XGE_ZHIHUI' ; rtk network on` 7. Run: `tftpboot 0x84f00000 initramfs-kernel.bin ; bootm 0x84f00000` 8. Use `mtd dump` to make backups of all flash partitions. 9. Use SCP to copy `squashfs-sysupgrade.bin` to the device, then run `sysupgrade`. Restoring factory firmware -------------------------- OpenWrt uses the `RUNTIME` and `RUNTIME2` partitions as one combined partition. To restore them from backups, boot from `initramfs-kernel.bin` just like during the installation, then use `mtd write` to write your backups of the factory `mtd5` and `mtd6` partitions. Notes/Quirks ------------ - U-Boot interruption is obfuscated. Press `Ctrl+C`, then `Z`, then `H`, during the 3 second countdown. - U-Boot rtk network profile is broken. Use the `RTL9303_5x8261BE_2XGE_ZHIHUI` profile instead, it makes at least port 5 work. - MAC address is stored on the `RUNTIME` or `RUNTIME2` partitions, which are used by OpenWrt. Instead, we generate one random MAC address and store it in the U-Boot environment. - PoE works but is unmanaged. The HS104 driver is worked on in https://github.com/openwrt/openwrt/pull/22245 and will work with ethtool and the kernel's new `pse-pd` subsystem. Signed-off-by: Lars Gierth <larsg@systemli.org> Link: https://github.com/openwrt/openwrt/pull/23020 Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
15 lines
356 B
Plaintext
15 lines
356 B
Plaintext
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/dts-v1/;
|
|
|
|
#include "rtl9303_hasivo_f1100w-4sx-4xgt-common.dtsi"
|
|
|
|
/ {
|
|
compatible = "hasivo,f1100w-4sx-4xgt-512mb", "realtek,rtl930x-soc";
|
|
model = "Hasivo F1100W-4SX-4XGT (512MB)";
|
|
|
|
memory@0 {
|
|
reg = <0x00000000 0x10000000>, /* 256 MiB lowmem */
|
|
<0x20000000 0x10000000>; /* 256 MiB highmem */
|
|
};
|
|
};
|