diff --git a/doc/devices/K0501W.md b/doc/devices/K0501W.md new file mode 100644 index 0000000..7a48236 --- /dev/null +++ b/doc/devices/K0501W.md @@ -0,0 +1,23 @@ +# K0501W + +This board appears for example in the Davuaz Da-K6501W switch. + +It is designed similarly to Hi-K0402WS. However, there are a few differences: +- One SFP port is replaced by a RTL8221B 2.5G PHY +- Only one LED is populated for the SFP port +- No mode switch and only one flash chip +- Like earlier revisions of the K0402W(S) board, there is no UART + +Even though board looks very similar to K0402W(S), the actual GPIO and LED configuration is quite different. +All ports and LEDs are supported. + +Installation is possible using a flash programmer. +The BoyaMicro 25Q16BSSIG flash chip is supported by flashprog with chip name "B.25D16AS/BY25Q16BS/BY25Q16ES". + +## PCB pictures + +The board is marked `PCB-K0501W-V2.0 DIP-K0501WS-V2.0`. + + + + diff --git a/doc/devices/photos/K0501W/pcb-bottom.jpg b/doc/devices/photos/K0501W/pcb-bottom.jpg new file mode 100644 index 0000000..bd3f1d2 Binary files /dev/null and b/doc/devices/photos/K0501W/pcb-bottom.jpg differ diff --git a/doc/devices/photos/K0501W/pcb-top.jpg b/doc/devices/photos/K0501W/pcb-top.jpg new file mode 100644 index 0000000..0fda4f3 Binary files /dev/null and b/doc/devices/photos/K0501W/pcb-top.jpg differ diff --git a/machine.c b/machine.c index 4671eeb..4c083cc 100644 --- a/machine.c +++ b/machine.c @@ -408,6 +408,44 @@ __code const struct machine machine = { void machine_custom_init(void) { reg_bit_set(RTL837X_REG_LED_GLB_IO_EN, 6); } + +#elif defined MACHINE_K0501W +__code const struct machine machine = { + .machine_name = "K0501W", + .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 + }, + }, +}; + +void machine_custom_init(void) { } + #else #error "Please select a machine type in machine.h" #endif diff --git a/machine.h b/machine.h index a5f1952..451c6b1 100644 --- a/machine.h +++ b/machine.h @@ -17,6 +17,7 @@ // #define MACHINE_SWTG018AS_A_V_2_0 // #define MACHINE_SWTGW218AS // #define MACHINE_HI_K0402WS +// #define MACHINE_K0501W // #define MACHINE_DEFAULT_8C_1SFP typedef struct {