diff --git a/doc/devices/FG-4GT-2SX_V2.0.md b/doc/devices/FG-4GT-2SX_V2.0.md new file mode 100644 index 0000000..db6f4b8 --- /dev/null +++ b/doc/devices/FG-4GT-2SX_V2.0.md @@ -0,0 +1,43 @@ +# FG-4GT-2SX_V2.0 + +Following is documentation for unmanaged switch marked as `FG-4GT-2SX_V2.0`. + +Original software is running UART on 9600 baud rate. + +The signal quality of UART is bad. Therefore, electrical isolation is needed for the TTL wires in some cases. A simple way to isolate them is to pinch them by fingers. + + + +## Brands + +* Ruiying RY-4GT-2SX + + + +## What works + +- All four 2.5GBASE-T RJ45 ports at 10/100/1000/2500 Mbps +- Both SFP ports supporting 1G, 2.5G and 10G modules +- LEDs + +## PCB overview + +**Board markings** + +- Top silkscreen: FG-4GT-2SX_V2.0 + +Front panel + + + +Top side + + + +Bottom + + + +## Power supply + +Input power is delivered via barell plug, `12V 1A` adapter was provided. diff --git a/doc/devices/photos/FG-4GT-2SX_V2.0/PCB-bottom.jpg b/doc/devices/photos/FG-4GT-2SX_V2.0/PCB-bottom.jpg new file mode 100644 index 0000000..7c4c4b5 Binary files /dev/null and b/doc/devices/photos/FG-4GT-2SX_V2.0/PCB-bottom.jpg differ diff --git a/doc/devices/photos/FG-4GT-2SX_V2.0/PCB-top.jpg b/doc/devices/photos/FG-4GT-2SX_V2.0/PCB-top.jpg new file mode 100644 index 0000000..f24a90b Binary files /dev/null and b/doc/devices/photos/FG-4GT-2SX_V2.0/PCB-top.jpg differ diff --git a/doc/devices/photos/FG-4GT-2SX_V2.0/RY-4GT-2SX_label.jpg b/doc/devices/photos/FG-4GT-2SX_V2.0/RY-4GT-2SX_label.jpg new file mode 100644 index 0000000..62f7b59 Binary files /dev/null and b/doc/devices/photos/FG-4GT-2SX_V2.0/RY-4GT-2SX_label.jpg differ diff --git a/doc/devices/photos/FG-4GT-2SX_V2.0/chassis-front.jpg b/doc/devices/photos/FG-4GT-2SX_V2.0/chassis-front.jpg new file mode 100644 index 0000000..73229e1 Binary files /dev/null and b/doc/devices/photos/FG-4GT-2SX_V2.0/chassis-front.jpg differ diff --git a/doc/devices/photos/FG-4GT-2SX_V2.0/electrical_isolation.png b/doc/devices/photos/FG-4GT-2SX_V2.0/electrical_isolation.png new file mode 100644 index 0000000..358dbd6 Binary files /dev/null and b/doc/devices/photos/FG-4GT-2SX_V2.0/electrical_isolation.png differ diff --git a/doc/supported_devices.md b/doc/supported_devices.md index 61f42d0..e86ac58 100644 --- a/doc/supported_devices.md +++ b/doc/supported_devices.md @@ -19,6 +19,7 @@ The following devices have been tested and are fully working: | LIANGUO | SWTG024AS | No | [SWTG024AS-v2.0-17452](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/SWTG024AS.md) | 0.5M | 4 + 2 | | Lianguo | ZX-SWTGW215AS | Yes | [PCB-SWTG115AS-V2.0](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/SWTGW215AS.md) | 2M | 5 + 1 | | Mokerlink| ZX-SWTGW218AS | Yes | [SWTG118AS-V2.0-16029](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/SWTGW218AS.md) | 2M | 8 + 1 | +| Ruiying | RY-4GT-2SX | No | [FG-4GT-2SX_V2.0](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/FG-4GT-2SX_V2.0.md) | 4M | 4 + 2 | | Sodola | SL-SWTG124AS-D | Yes | [SWTG024AS-v2.0-17452](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/SWTG024AS.md) | 2M | 4 + 2 | | Steamemo | IG204-V1 | No | [PB-2131](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/STEAMEMO_IG204_V1.md) | | 4 + 2 | | TrendNet | TEG-S562 | No | [TEG-S563/EU H/W: V1.0R](https://github.com/logicog/RTLPlayground/blob/main/doc/devices/TEG-S562.md) | 2M | 4 + 2 | diff --git a/machine.c b/machine.c index 320c74c..82bcfb8 100644 --- a/machine.c +++ b/machine.c @@ -1063,6 +1063,73 @@ void machine_custom_init(void) { REG_SET(RTL837X_PIN_MUX_0, 0x30db68bf); } +#elif defined MACHINE_FG_4GT_2SX_V2_0 +__code const struct machine machine = { + .machine_name = "FG-4GT-2SX_V2.0", + .isRTL8373 = 0, + .min_port = 3, + .max_port = 8, + .n_sfp = 2, + .log_to_phys_port = {0, 0, 0, 6, 1, 2, 3, 4, 5}, + .phys_to_log_port = {4, 5, 6, 7, 8, 3, 0, 0, 0}, + .is_sfp = {0, 0, 0, 2, 0, 0, 0, 0, 1}, + + // Left SFP port + .sfp_port[0].pin_detect = GPIO38, + .sfp_port[0].pin_los = GPIO_NA, + .sfp_port[0].sds = 1, + .sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 }, + + // Right SFP port + .sfp_port[1].pin_detect = GPIO37, + .sfp_port[1].pin_los = GPIO_NA, + .sfp_port[1].sds = 0, + .sfp_port[1].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 }, + + .reset_pin = GPIO_NA, + .high_leds = { .mux = LED_27 | LED_28_SYS | LED_29, .enable = LED_28_SYS | LED_29 }, + .port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1}, + .led_sets = { + { + LEDS_2G5 | LEDS_LINK | LEDS_ACT, + LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, + 0, + LEDS_2G5 | LEDS_LINK | LEDS_ACT + }, + { + LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, + LEDS_10G | LEDS_LINK, + 0, + LEDS_COL | LEDS_DUPLEX + }, + { + LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, + LEDS_2G5 | LEDS_1G | LEDS_LINK, + LEDS_5G | LEDS_2G5 | LEDS_LINK | LEDS_ACT, + LEDS_10G | LEDS_LINK | LEDS_ACT + }, + { + LEDS_TX, + LEDS_RX, + LEDS_10G | LEDS_TWO_PAIR_5G | LEDS_5G | LEDS_TWO_PAIR_2G5 | + LEDS_2G5 | LEDS_TWO_PAIR_1G | LEDS_1G | LEDS_500M | LEDS_100M | LEDS_10M | LEDS_ACT, + LEDS_10G | LEDS_TWO_PAIR_5G | LEDS_5G | LEDS_TWO_PAIR_2G5 | + LEDS_2G5 | LEDS_TWO_PAIR_1G | LEDS_1G | LEDS_500M | LEDS_100M | LEDS_10M | LEDS_LINK + }, + }, + .led_mux_custom = 1, + .led_mux = { + 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x3f, 0x15, 0x16, + 0x18, 0x0e, 0x19, 0x11, 0x12, 0x1a, 0x15, 0x16, 0x1c, 0x19, + 0x1a, 0x1d, 0x1d, 0x1e, 0x1e, 0x20, 0x21, 0x22 + }, + }; + +void machine_custom_init(void) { + // Match the OEM LED pad enable mask, including port 4 and SDS0 LEDs. + REG_SET(RTL837X_REG_LED_GLB_IO_EN, 0x7624155b); +} + #else #error "Please select a machine type in machine.h" #endif diff --git a/machine.h b/machine.h index cb48aae..c3368f6 100644 --- a/machine.h +++ b/machine.h @@ -30,6 +30,7 @@ // #define MACHINE_PCB_SWTG024AS_A_2_0_1 // #define MACHINE_SWTG024AS_A_2_0_1_5C_1SFP // #define MACHINE_SWTG024AS_V2_0 +// #define MACHINE_FG_4GT_2SX_V2_0 typedef struct { // GPIO pins for SDA/SCL