From a7f4543698b93fcfe5a4818ccb656e1253ac9907 Mon Sep 17 00:00:00 2001 From: logicog Date: Sat, 21 Mar 2026 17:36:32 +0100 Subject: [PATCH] Add support for (Horaco) ZX310S-4T2XH Add support for the ZX310S-4T2XH switch, which is a 4x2.5GBit + 1x10GBit + SFP device. The device does not have any branding and is sold under different brand names, in particular by Horaco. There is no branding on either label nor PCB. CPU: RTL8372 Flash: 2MByte Winbond W25Q16DV 10GBit PHY: RTL8261BE UART header present, but solder holes are filled with solder that needs removal, first, e.g with a 1.2mm drill. The original firmware uses 57600baud 8N1 --- machine.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/machine.c b/machine.c index 2e6bb4b..24fcbd3 100644 --- a/machine.c +++ b/machine.c @@ -544,7 +544,6 @@ __code const struct machine machine = { .log_to_phys_port = {0, 0, 0, 5, 1, 2, 3, 4, 6}, .phys_to_log_port = {4, 5, 6, 7, 3, 8, 0, 0, 0}, .is_sfp = {0, 0, 0, 0, 0, 0, 0, 0, 1}, - .sfp_port[0].pin_detect = GPIO30_ACL_BIT3_EN, .sfp_port[0].pin_los = GPIO37, .sfp_port[0].pin_tx_disable = GPIO_NA, @@ -571,6 +570,51 @@ __code const struct machine machine = { void machine_custom_init(void) { } +#elif defined MACHINE_ZX310S_4T2XH +__code const struct machine machine = { + .machine_name = "ZX310S-4T2XH", + .isRTL8373 = 0, + .min_port = 3, + .max_port = 8, + .n_sfp = 1, + .n_10g = 1, + .log_to_phys_port = {0, 0, 0, 5, 1, 2, 3, 4, 6}, + .phys_to_log_port = {4, 5, 6, 7, 3, 8, 0, 0, 0}, + .is_sfp = {0, 0, 0, 0, 0, 0, 0, 0, 1}, + .sfp_port[0].pin_detect = GPIO38, + .sfp_port[0].pin_los = GPIO_NA, + .sfp_port[0].pin_tx_disable = GPIO_NA, + .sfp_port[0].sds = 1, + .sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 }, + .reset_pin = GPIO48_I2C_SCL1, + .high_leds = { .mux = LED_28_SYS, .enable = LED_27 | LED_28_SYS | LED_29 }, + .led_mux_custom = 1, + .led_mux = { 0x00, 0x01, 0x04, 0x05, 0x08, // 65e0 + 0x09, 0x0c, 0x3f, 0x0d, 0x10, // 65e4 + 0x11, 0x0e, 0x14, 0x11, 0x12, // 65e8 + 0x15, 0x15, 0x16, 0x18, 0x19, // 65ec + 0x1a, 0x19, 0x1d, 0x1e, 0x1c, // 65f0 + 0x1d, 0x20, 0x21 }, + .port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1}, + /* Ports 1-4: Orange: 2.5GBit, Green: 10/100/1000MBit + * Port 5: Blue: 10GBit, Green: 10Mbit-5GBit + * SFP-port: Blue: 10GBit, Green 100MBit-5GBit + */ + .led_sets = { { LEDS_2G5 | LEDS_LINK | LEDS_ACT, + LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, + LEDS_DUPLEX, + LEDS_2G5 | LEDS_LINK | LEDS_ACT }, + { + LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT | LEDS_5G, + LEDS_LINK | LEDS_ACT | LEDS_10G, + LEDS_2G5 | LEDS_LINK, + LEDS_COL | LEDS_DUPLEX + } + }, +}; + +void machine_custom_init(void) { } + #else #error "Please select a machine type in machine.h" #endif