mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
1100 lines
37 KiB
C
1100 lines
37 KiB
C
#include "machine.h"
|
|
#include "rtl837x_pins.h"
|
|
#include "rtl837x_leds.h"
|
|
#include "rtl837x_sfr.h"
|
|
#include "rtl837x_regs.h"
|
|
#include "rtl837x_common.h"
|
|
|
|
#if defined(MACHINE_KP_9000_6XHML_X2) || \
|
|
defined(MACHINE_KP_9000_6XH_X2_V1_1) || \
|
|
defined(MACHINE_KP_9000_6XHML_X2_V1_1) || \
|
|
defined(MACHINE_KP_9000_6XH_X2_V1_2) || \
|
|
defined(MACHINE_KP_9000_6XHML_X2_V1_2)
|
|
__code const struct machine machine = {
|
|
#if defined(MACHINE_KP_9000_6XH_X2_V1_1)
|
|
.machine_name = "keepLink KP-9000-6XH V1.1",
|
|
#elif defined(MACHINE_KP_9000_6XHML_X2_V1_1)
|
|
.machine_name = "keepLink KP-9000-6XHML V1.1",
|
|
#elif defined(MACHINE_KP_9000_6XH_X2_V1_2)
|
|
.machine_name = "keepLink KP-9000-6XH V1.2",
|
|
#elif defined(MACHINE_KP_9000_6XHML_X2_V1_2)
|
|
.machine_name = "keepLink KP-9000-6XHML V1.2",
|
|
#else
|
|
.machine_name = "keepLink KP-9000-6XHML-X2",
|
|
#endif
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 2,
|
|
.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, 1, 0, 0, 0, 0, 2},
|
|
// Left SFP port (5)
|
|
.sfp_port[0].pin_detect = GPIO50_I2C_SCL2_UART1_TX,
|
|
.sfp_port[0].pin_los = GPIO10_LED10,
|
|
.sfp_port[0].pin_tx_disable = GPIO_NA,
|
|
.sfp_port[0].sds = 0,
|
|
.sfp_port[0].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
// Right SFP port (6)
|
|
.sfp_port[1].pin_detect = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[1].pin_los = GPIO37,
|
|
.sfp_port[1].pin_tx_disable = GPIO_NA,
|
|
.sfp_port[1].sds = 1,
|
|
.sfp_port[1].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO54_ACL_BIT2_EN,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
/* Conditions for LED on:
|
|
* dual led orange: ledset_0 & ledset_2
|
|
* dual led green: ledset_2 & !ledset_0
|
|
* single right led green: ledset_0 & !ledset_1
|
|
*/
|
|
.led_sets = { { LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_10G,
|
|
LEDS_1G | LEDS_LINK,
|
|
0 },
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_KP_9000_6XH_X
|
|
__code const struct machine machine = {
|
|
.machine_name = "keepLink KP-9000-6XH-X",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 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 = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 = GPIO_NA,
|
|
/* Conditions for LED on:
|
|
* dual led orange: ledset_0 & ledset_2
|
|
* dual led green: ledset_2 & !ledset_0
|
|
* single right led green: ledset_0 & !ledset_1
|
|
*/
|
|
.led_sets = { { LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_10G,
|
|
LEDS_1G | LEDS_LINK,
|
|
0 },
|
|
},
|
|
};
|
|
|
|
#elif defined(MACHINE_KP_9000_6XH_X2) || defined(MACHINE_KP_9000_6XH_X2_V2_1) || defined(MACHINE_KP_9000_6XHML_X2_V2_1)
|
|
__code const struct machine machine = {
|
|
#if defined(MACHINE_KP_9000_6XHML_X2_V2_1)
|
|
.machine_name = "keepLink KP-9000-6XHML V2.1",
|
|
#elif defined(MACHINE_KP_9000_6XH_X2_V2_1)
|
|
.machine_name = "keepLink KP-9000-6XH-X2 V2.1",
|
|
#else
|
|
.machine_name = "keepLink KP-9000-6XH-X2",
|
|
#endif
|
|
.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 = GPIO48_I2C_SCL1, // Button-Switch is unpopulated on PCB, but can be added manually (hole in case is already there)
|
|
.high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{
|
|
LEDS_2G5 | LEDS_LINK, // Left LED (Amber)
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Right LED (Green)
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
0
|
|
},
|
|
},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,
|
|
0x11,0x0e,0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,
|
|
0x1a,0x19,0x1d,0x1e,0x1c,0x1d,0x20,0x21
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_KP_9000_9XH_X_EU
|
|
__code const struct machine machine = {
|
|
.machine_name = "keepLink KP-9000-9XH-X-EU",
|
|
.isRTL8373 = 1,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.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,
|
|
.sfp_port[0].sds = 1,
|
|
.sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO_NA,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
.led_sets = { { LEDS_2G5 | LEDS_TWO_PAIR_1G | LEDS_1G | LEDS_500M | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G | LEDS_TWO_PAIR_5G | LEDS_5G | LEDS_TWO_PAIR_2G5,
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_1G | LEDS_LINK,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT },
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_KP_9000_9XHML_X_V2_2
|
|
__code const struct machine machine = {
|
|
.machine_name = "keepLink KP-9000-9XHML-X V2.2",
|
|
.isRTL8373 = 1,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
|
|
.phys_to_log_port = { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
|
|
.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,
|
|
.sfp_port[0].sds = 1,
|
|
.sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO54_ACL_BIT2_EN,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1 },
|
|
.led_sets = {
|
|
{ /* Set 0 for RJ45 connectors */
|
|
/* LED0: Right Green */
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
/* LED1: Left Orange */
|
|
LEDS_2G5 | LEDS_LINK,
|
|
/* LED2: Left Green */
|
|
LEDS_1G | LEDS_LINK,
|
|
/* LED3: None */
|
|
0,
|
|
}, { /* Set 1 for SFP port */
|
|
/* LED0: Single Green "9" LED */
|
|
LEDS_2G5 | LEDS_TWO_PAIR_1G | LEDS_1G | LEDS_500M | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G | LEDS_TWO_PAIR_5G | LEDS_5G | LEDS_TWO_PAIR_2G5,
|
|
/* LED1: D23 LED on PCB */
|
|
LEDS_1G | LEDS_LINK,
|
|
/* LED2: D22 LED on PCB */
|
|
LEDS_2G5 | LEDS_LINK,
|
|
/* LED3: Unused */
|
|
LEDS_COL | LEDS_DUPLEX,
|
|
}, { /* Set 2: Unused, but set to same things as stock firmware for consistency */
|
|
LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
LEDS_1G | LEDS_LINK | LEDS_ACT,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT | LEDS_5G,
|
|
LEDS_10G | LEDS_ACT | LEDS_LINK,
|
|
}, { /* Set 3: Unused, but set to same things as stock firmware for consistency */
|
|
LEDS_TX,
|
|
LEDS_RX,
|
|
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 | LEDS_10G | LEDS_TWO_PAIR_5G | LEDS_5G | LEDS_TWO_PAIR_2G5,
|
|
},
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_KP_9000_9XHML_X_V3_1
|
|
__code const struct machine machine = {
|
|
.machine_name = "keepLink KP-9000-9XHML-X V3.1",
|
|
.isRTL8373 = 1,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.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].sds = 1,
|
|
.sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO48_I2C_SCL1,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{ /* RJ45: First LED, yellow, second LED: green */
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
}, { /* SFP PORT, SINGLE GREEN LED */
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
0,
|
|
0,
|
|
0,
|
|
}},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0c, 0x09, 0x0d, 0x10,
|
|
0x11, 0x0e, 0x14, 0x11, 0x12, 0x15, 0x15, 0x16, 0x18, 0x19,
|
|
0x1a, 0x19, 0x1d, 0x1e, 0x1c, 0x1d, 0x20, 0x21},
|
|
};
|
|
|
|
#elif defined MACHINE_SWGT024_V2_0_MANAGED
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWGT024 V2.0 Managed",
|
|
.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 (J4)
|
|
.sfp_port[0].pin_detect = GPIO30_ACL_BIT3_EN,
|
|
.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 }, /* GPIO 39 */
|
|
// Right SFP port (J2)
|
|
.sfp_port[1].pin_detect = GPIO50_I2C_SCL2_UART1_TX,
|
|
.sfp_port[1].pin_los = GPIO_NA,
|
|
.sfp_port[1].pin_tx_disable = GPIO_NA,
|
|
.sfp_port[1].sds = 0,
|
|
.sfp_port[1].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 }, /* GPIO 40 */
|
|
.reset_pin = GPIO54_ACL_BIT2_EN,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{ /* RJ45: Green LED */
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
0,
|
|
/* Amber LED */
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT,
|
|
0
|
|
}, { /* SFP PORT: SINGLE GREEN LED */
|
|
LEDS_10M | LEDS_100M | LEDS_1G | LEDS_2G5 | LEDS_10G | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
0,
|
|
},
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_SWGT024_V2_0_UNMANAGED
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWGT024 V2.0 Unmanaged",
|
|
.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 (J4)
|
|
.sfp_port[0].pin_detect = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 }, /* GPIO 39 */
|
|
// Right SFP port (J2)
|
|
.sfp_port[1].pin_detect = GPIO50_I2C_SCL2_UART1_TX,
|
|
.sfp_port[1].pin_los = GPIO51_I2C_SDA2_UART1_RX,
|
|
.sfp_port[1].pin_tx_disable = GPIO_NA,
|
|
.sfp_port[1].sds = 0,
|
|
.sfp_port[1].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 }, /* GPIO 40 */
|
|
.reset_pin = GPIO_NA,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{ /* RJ45: Green LED */
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
0,
|
|
/* Amber LED */
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT,
|
|
0
|
|
}, { /* SFP PORT: SINGLE GREEN LED */
|
|
LEDS_10M | LEDS_100M | LEDS_1G | LEDS_2G5 | LEDS_10G | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
0,
|
|
},
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_SWTG018AS_A_V_2_0
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWTG018AS-A V2.0",
|
|
.isRTL8373 = 1,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.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_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{ /* RJ45: First LED, yellow, second LED: green */
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
}, { /* SFP PORT, SINGLE GREEN LED */
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
0,
|
|
0,
|
|
0,
|
|
}},
|
|
.led_mux_custom = 1,
|
|
.led_mux = { 0x00, 0x01, 0x04, 0x05, 0x08, // 65e0
|
|
0x09, 0x0c, 0x09, 0x0d, 0x10, // 65e4
|
|
0x11, 0x0e, 0x14, 0x11, 0x12, // 65e8
|
|
0x15, 0x15, 0x16, 0x18, 0x19, // 65ec
|
|
0x1a, 0x19, 0x1d, 0x1e, 0x1c, // 65f0
|
|
0x1d, 0x20, 0x21 },
|
|
};
|
|
|
|
#elif defined MACHINE_HG0402XG_V1_1
|
|
__code const struct machine machine = {
|
|
.machine_name = "HG0402XG V1.1",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 2,
|
|
.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, 2, 0, 0, 0, 0, 1},
|
|
.sfp_port[0].pin_detect = 50,
|
|
.sfp_port[0].pin_los = 10,
|
|
.sfp_port[0].pin_tx_disable = 0xFF,
|
|
.sfp_port[0].sds = 1,
|
|
.sfp_port[0].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.sfp_port[1].pin_detect = 30,
|
|
.sfp_port[1].pin_los = 51,
|
|
.sfp_port[1].pin_tx_disable = 0xFF,
|
|
.sfp_port[1].sds = 0,
|
|
.sfp_port[1].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO_NA,
|
|
.high_leds = { .mux = LED_27 , .enable = LED_27 | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
/* The Ethernet ports have 1 amber LED (left) and 1 green LED (right)
|
|
* The SFP ports have also 1 amber LED and 1 green LED
|
|
* Ethernet ports use LED-set 0, SFP ports use LED-set 1
|
|
*/
|
|
.led_sets = { { LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_2G5 | LEDS_LINK | LEDS_ACT,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT,
|
|
0 },
|
|
{ LEDS_100M | LEDS_10M | LEDS_LINK,
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
LEDS_10G | LEDS_LINK,
|
|
0 },
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_SWTGW218AS
|
|
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWTGW218AS 8+1 Managed Switch",
|
|
.isRTL8373 = 1,
|
|
.mac_flash_offset = 0x1FC000,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.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,
|
|
.sfp_port[0].sds = 1,
|
|
.sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO54_ACL_BIT2_EN,
|
|
.high_leds = { .mux = LED_27 | LED_28_SYS | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
.led_sets = { { LEDS_2G5 | LEDS_LINK | LEDS_ACT, // Green LED (right)
|
|
0, // unused
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Amber LED (left)
|
|
0
|
|
}, // unused
|
|
{ LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT, // SFP LED
|
|
0, // unused
|
|
0, // unused
|
|
0
|
|
}, // unused },
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_PCB_SWTG018AS_V2_1_0 // Sold as Sodola SL902 / Horaco "SWTGW218AS"; the SWTGW218AS label also covers other PCBs with different SFP and LED wiring (see MACHINE_SWTGW218AS)
|
|
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWTGW218AS (SWTG018AS-V2.1.0)",
|
|
.isRTL8373 = 1,
|
|
.mac_flash_offset = 0x1FC000,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.is_sfp = {0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
.sfp_port[0].pin_detect = GPIO38, // pulled low on module insert
|
|
.sfp_port[0].pin_los = GPIO_NA, // no LOS pin wired
|
|
.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 = GPIO54_ACL_BIT2_EN,
|
|
.high_leds = { .mux = LED_27 | LED_28_SYS | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
// LED wiring matches the SWTG018AS-A V2.0 (same PCB family)
|
|
.led_sets = {
|
|
{ /* RJ45: First LED, yellow, second LED: green */
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
}, { /* SFP set (superseded by the raw register override in machine_custom_init) */
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
0,
|
|
0,
|
|
0,
|
|
}},
|
|
.led_mux_custom = 1,
|
|
.led_mux = { 0x00, 0x01, 0x04, 0x05, 0x08, // 65e0
|
|
0x09, 0x0c, 0x09, 0x0d, 0x10, // 65e4
|
|
0x11, 0x0e, 0x14, 0x11, 0x12, // 65e8
|
|
0x15, 0x15, 0x16, 0x18, 0x19, // 65ec
|
|
0x1a, 0x19, 0x1d, 0x1e, 0x1c, // 65f0
|
|
0x1d, 0x20, 0x21 },
|
|
};
|
|
|
|
#elif defined MACHINE_LIANGUO_ZX_SWTGW215AS // Has PCB branded PCB-SWTG115AS-V2.0 but is labeled and reports as a ZX-SWTGW215AS, seems to be identical to the "real" ZX-SWTGW215AS except for the LEDs
|
|
__code const struct machine machine = {
|
|
.machine_name = "Lianguo ZX-SWTGW215AS",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 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 = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 = GPIO54_ACL_BIT2_EN,
|
|
.high_leds = { .mux = LED_27 | LED_28_SYS | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
.led_sets = { { LEDS_2G5 | LEDS_LINK | LEDS_ACT, // Green LED (right)
|
|
0, // unused
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Amber LED (left)
|
|
0
|
|
}, // unused
|
|
{ LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT, // SFP LED
|
|
0, // unused
|
|
0, // unused
|
|
0
|
|
}, // unused },
|
|
},
|
|
.led_mux_custom = 0,
|
|
};
|
|
|
|
#elif defined MACHINE_DEFAULT_8C_1SFP
|
|
__code const struct machine machine = {
|
|
.machine_name = "8+1 SFP Port Switch",
|
|
.isRTL8373 = 1,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.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,
|
|
.sfp_port[0].sds = 1,
|
|
.sfp_port[0].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
.reset_pin = GPIO_NA,
|
|
.high_leds = { .mux = LED_27 | LED_29, .enable = LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
.led_sets = { { LEDS_2G5 | LEDS_TWO_PAIR_1G | LEDS_1G | LEDS_500M | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G | LEDS_TWO_PAIR_5G | LEDS_5G | LEDS_TWO_PAIR_2G5,
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_1G | LEDS_LINK,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT },
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_TRENDNET_TEG_S562
|
|
__code const struct machine machine = {
|
|
.machine_name = "Trendnet TEG-S562",
|
|
.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, 1, 0, 0, 0, 0, 2},
|
|
.sfp_port[0].pin_detect = GPIO38,
|
|
.sfp_port[0].pin_los = GPIO50_I2C_SCL2_UART1_TX,
|
|
.sfp_port[0].pin_tx_disable = GPIO54_ACL_BIT2_EN,
|
|
.sfp_port[0].sds = 0,
|
|
.sfp_port[0].i2c = { .sda = GPIO47_I2C_SDA0, .scl = GPIO46_I2C_SCL0 },
|
|
.sfp_port[1].pin_detect = GPIO36_PWM_OUT,
|
|
.sfp_port[1].pin_los = GPIO37,
|
|
.sfp_port[1].pin_tx_disable = GPIO51_I2C_SDA2_UART1_RX,
|
|
.sfp_port[1].sds = 1,
|
|
.sfp_port[1].i2c = { .sda = GPIO49_I2C_SDA1, .scl = GPIO48_I2C_SCL1 },
|
|
.reset_pin = GPIO_NA,
|
|
.port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{
|
|
0, // Unused
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT, // Green
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, // Amber
|
|
0 // Unused
|
|
},
|
|
{
|
|
0, // Unused
|
|
0, // Unused
|
|
LEDS_10G | LEDS_1G | LEDS_LINK | LEDS_ACT, // Green
|
|
0, // Unused
|
|
},
|
|
},
|
|
|
|
};
|
|
|
|
#elif defined(MACHINE_PCB_K0402WS_V3) || defined(MACHINE_HI_K0402WS) // Sold as a variety of devices, see doc/
|
|
__code const struct machine machine = {
|
|
.machine_name = "PCB-K0402WS-V3.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_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{
|
|
LEDS_2G5 | LEDS_LINK | LEDS_10M | LEDS_ACT,
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT | LEDS_10G,
|
|
LEDS_1G | LEDS_LINK,
|
|
0
|
|
},
|
|
{
|
|
LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK,
|
|
LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_ACT,
|
|
0,
|
|
0
|
|
},
|
|
},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,0x11,0x0e,0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,0x1a,0x19,0x1d,0x1e,0x1c,0x1d,0x20,0x21
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_K0501W_V2_0
|
|
__code const struct machine machine = {
|
|
.machine_name = "K0501W V2.0",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 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 = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 = GPIO_NA,
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
.led_sets = {
|
|
{
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0
|
|
},
|
|
{
|
|
LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
0
|
|
},
|
|
},
|
|
};
|
|
|
|
#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
|
|
}
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_STEAMEMO_IG204_V1
|
|
__code const struct machine machine = {
|
|
.machine_name = "Steamemo IG204 V1",
|
|
.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 (5)
|
|
// LED pin 9
|
|
.sfp_port[0].pin_detect = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 },
|
|
// Right SFP port (6)
|
|
// LED pin 24
|
|
.sfp_port[1].pin_detect = GPIO50_I2C_SCL2_UART1_TX,
|
|
.sfp_port[1].pin_los = GPIO51_I2C_SDA2_UART1_RX,
|
|
.sfp_port[1].pin_tx_disable = 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 = {
|
|
{
|
|
// RJ45 Amber LED (left)
|
|
LEDS_2G5 | LEDS_LINK,
|
|
// RJ45 Green LED (Right)
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
},
|
|
{
|
|
// SFP LED
|
|
LEDS_10G | LEDS_5G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT,
|
|
0, // unused
|
|
0, // unused
|
|
0
|
|
},
|
|
},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x0f, 0x20, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x0c, 0x21, 0x22, 0x23
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_HI_K0801WS
|
|
__code const struct machine machine = {
|
|
.machine_name = "Hi-Source HI-k0801WS",
|
|
.isRTL8373 = 1,
|
|
.min_port = 0,
|
|
.max_port = 8,
|
|
.n_sfp = 1,
|
|
.log_to_phys_port = {1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
.phys_to_log_port = {0, 1, 2, 3, 4, 5, 6, 7, 8},
|
|
.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,
|
|
.sfp_port[0].sds = 1,
|
|
.sfp_port[0].i2c = {
|
|
.sda = GPIO39_I2C_SDA4,
|
|
.scl = GPIO40_I2C_SCL3_MDC1
|
|
},
|
|
|
|
.reset_pin = GPIO_NA,
|
|
|
|
.high_leds = {
|
|
.mux = LED_27 | LED_29,
|
|
.enable = LED_28_SYS | LED_29
|
|
},
|
|
|
|
/* Ports 1-8 use set 0, port 9 SFP uses set 1 */
|
|
.port_led_set = {0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
|
|
.led_sets = {
|
|
{ /* Set 0: RJ45 copper ports
|
|
* Amber = 2.5G
|
|
* Green = 1G/100M/10M with activity
|
|
*/
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT, /* Amber */
|
|
0,
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT, /* Green */
|
|
0
|
|
},
|
|
{ /* Set 1: SFP port, single green LED for all valid speeds */
|
|
LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0,
|
|
0
|
|
},
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_FNS1200P
|
|
__code const struct machine machine = {
|
|
.machine_name = "FNS-1200P",
|
|
.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 (logical 8, SDS1): GPIO30=ModAbs, GPIO37=RX_LOS */
|
|
.sfp_port[0].pin_detect = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 },
|
|
|
|
/* Right SFP (logical 3, SDS0): GPIO50=ModAbs, GPIO51=RX_LOS */
|
|
.sfp_port[1].pin_detect = GPIO50_I2C_SCL2_UART1_TX,
|
|
.sfp_port[1].pin_los = GPIO51_I2C_SDA2_UART1_RX,
|
|
.sfp_port[1].pin_tx_disable = 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 },
|
|
|
|
/* Copper ports use SET0; SFP ports use SET1 */
|
|
.port_led_set = {0, 0, 0, 1, 0, 0, 0, 0, 1},
|
|
|
|
.led_sets = {
|
|
{ /* SET0: copper — LED0=amber (2.5G), LED2=green (1G/100M/10M) */
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0
|
|
},
|
|
{ /* SET1: SFP — all speeds link/act */
|
|
LEDS_10G | LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_10M | LEDS_LINK | LEDS_ACT,
|
|
0,
|
|
0, 0
|
|
},
|
|
},
|
|
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, /* GPIO0-7: unused */
|
|
0x0f, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, /* GPIO8-14 */
|
|
0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, /* GPIO15-20 */
|
|
0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23 /* GPIO21-27 */
|
|
},
|
|
};
|
|
|
|
|
|
#elif defined MACHINE_PCB_SWTG024AS_A_2_0_1
|
|
__code const struct machine machine = {
|
|
.machine_name = "PCB-SWTG024AS-A-2.0.1",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 2,
|
|
.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, 1, 0, 0, 0, 0, 2},
|
|
|
|
// SFP port on SDS0 / logical port 3
|
|
.sfp_port[0].pin_detect = GPIO37,
|
|
.sfp_port[0].pin_los = GPIO_NA,
|
|
.sfp_port[0].pin_tx_disable = GPIO_NA,
|
|
.sfp_port[0].sds = 0,
|
|
.sfp_port[0].i2c = { .sda = GPIO41_I2C_SDA3_MDIO1, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
|
|
// SFP port on SDS1 / logical port 8
|
|
.sfp_port[1].pin_detect = GPIO38,
|
|
.sfp_port[1].pin_los = GPIO_NA,
|
|
.sfp_port[1].pin_tx_disable = GPIO_NA,
|
|
.sfp_port[1].sds = 1,
|
|
.sfp_port[1].i2c = { .sda = GPIO39_I2C_SDA4, .scl = GPIO40_I2C_SCL3_MDC1 },
|
|
|
|
.reset_pin = GPIO_NA,
|
|
.high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | 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,
|
|
LEDS_DUPLEX,
|
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT
|
|
},
|
|
{
|
|
LEDS_2G5 | LEDS_1G | LEDS_100M | LEDS_LINK | LEDS_ACT,
|
|
LEDS_10G | LEDS_LINK | LEDS_ACT,
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_COL | LEDS_DUPLEX
|
|
},
|
|
},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,0x11,0x0e,0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,0x1a,0x19,0x1d,0x1e,0x1c,0x1d,0x20,0x21
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_SWTG024AS_A_2_0_1_5C_1SFP
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWTG024AS-A-V2.0.1-5C-1SFP",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 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 = GPIO_NA,
|
|
.high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
/* Ports 1-5 RJ45 use set 0, port 9 SFP uses set 1
|
|
* Ports 1-5: Green: 2.5GBit, Amber: 10/100/1000MBit
|
|
* SFP-port: Blue: 10GBit, Green: 100MBit-2.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_10G | LEDS_LINK | LEDS_ACT,
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_COL | LEDS_DUPLEX
|
|
},
|
|
},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,0x11,0x0e,0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,0x1a,0x19,0x1d,0x1e,0x1c,0x1d,0x20,0x21
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_SWTG024AS_V2_0
|
|
__code const struct machine machine = {
|
|
.machine_name = "SWTG024AS-V2.0",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 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 = GPIO30_ACL_BIT3_EN,
|
|
.sfp_port[0].pin_los = GPIO37,
|
|
.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 = GPIO_NA,
|
|
.high_leds = { .mux = LED_28_SYS | LED_29, .enable = LED_27 | LED_28_SYS | LED_29 },
|
|
.port_led_set = { 0, 0, 0, 0, 0, 0, 0, 0, 1},
|
|
/* Ports 1-5 RJ45 use set 0, port 9 SFP uses set 1
|
|
* Ports 1-5: Green: 2.5GBit, Amber: 10/100/1000MBit
|
|
* SFP-port: Blue: 10GBit, Amber: 100MBit-2.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_10G | LEDS_LINK | LEDS_ACT,
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_COL | LEDS_DUPLEX
|
|
},
|
|
},
|
|
.led_mux_custom = 1,
|
|
.led_mux = {
|
|
0x00,0x01,0x04,0x05,0x08,0x09,0x0c,0x3f,0x0d,0x10,0x11,0x0e,0x14,0x11,0x12,0x15,0x15,0x16,0x18,0x19,0x1a,0x19,0x1d,0x1e,0x1c,0x1d,0x20,0x21
|
|
},
|
|
};
|
|
|
|
#elif defined MACHINE_ZX310S_4T2XT
|
|
__code const struct machine machine = {
|
|
.machine_name = "ZX310S_4T2XT",
|
|
.isRTL8373 = 0,
|
|
.min_port = 3,
|
|
.max_port = 8,
|
|
.n_sfp = 0,
|
|
.n_10g = 2,
|
|
.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, 0},
|
|
.reset_pin = GPIO48_I2C_SCL1,
|
|
.high_leds = { .mux = LED_28_SYS | LED_29, .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: Green: 2.5GBit, Orange: 10/100/1000MBit
|
|
* Ports 5-6: Green: 10GBit, Orange: <= 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_LINK | LEDS_ACT | LEDS_10G | LEDS_5G,
|
|
LEDS_2G5 | LEDS_LINK,
|
|
LEDS_COL | LEDS_DUPLEX
|
|
}
|
|
},
|
|
};
|
|
|
|
#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},
|
|
/* Ports 1-4 RJ45 use set 0, port 5-6 SFP uses set 1
|
|
* Ports 1-4: Green: 2.5GBit, Amber: 10/100/1000MBit
|
|
* Ports 5-6: Green: 100MBit-10GBit
|
|
*/
|
|
.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
|
|
},
|
|
};
|
|
|
|
#else
|
|
#error "Please select a machine type in machine.h"
|
|
#endif
|