mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
This board appears for example in the Davuaz Da-K6501W switch, and is designed similarly to Hi-K0402WS. However, it only has one SFP port and another 2.5G copper port using RTL8221B 2.5G PHY instead. Also, some components on the board, like additional LEDs, mode switch, and second flash chip are not populated. Like earlier revisions of the K0402W(S) board, there is no UART, so debugging is limited. As this is an unmanaged switch, installation needs a flash programmer.
85 lines
2.3 KiB
C
85 lines
2.3 KiB
C
#ifndef _MACHINE_H_
|
|
#define _MACHINE_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
/*
|
|
* Select your machine type below
|
|
*/
|
|
// #define MACHINE_KP_9000_6XHML_X2
|
|
// #define MACHINE_KP_9000_6XH_X
|
|
// #define MACHINE_KP_9000_9XH_X_EU
|
|
// #define MACHINE_KP_9000_9XHML_X
|
|
// #define MACHINE_SWGT024_V2_0
|
|
// #define MACHINE_HORACO_ZX_SG4T2
|
|
// #define MACHINE_TRENDNET_TEG_S562
|
|
// #define MACHINE_HG0402XG_V1_1
|
|
// #define MACHINE_SWTG018AS_A_V_2_0
|
|
// #define MACHINE_SWTGW218AS
|
|
// #define MACHINE_HI_K0402WS
|
|
// #define MACHINE_K0501W
|
|
// #define MACHINE_DEFAULT_8C_1SFP
|
|
|
|
typedef struct {
|
|
// GPIO pins for SDA/SCL
|
|
uint8_t sda;
|
|
uint8_t scl;
|
|
} i2c_bus_t;
|
|
|
|
|
|
#define LED_27 1
|
|
#define LED_28 2
|
|
#define LED_29 4
|
|
|
|
struct high_leds {
|
|
// Defines MUX and LED enabling for pins 27-29
|
|
uint8_t mux : 3;
|
|
uint8_t enable : 3;
|
|
uint8_t reserved : 2;
|
|
};
|
|
|
|
struct sfp_port
|
|
{
|
|
uint8_t pin_detect; // gpio number 0-63, 0xFF = don't have it?
|
|
uint8_t pin_los; // gpio number 0-63, 0xFF = don't have it?
|
|
uint8_t pin_tx_disable; // gpio number 0-63, 0xFF = not present
|
|
uint8_t sds;
|
|
i2c_bus_t i2c;
|
|
};
|
|
|
|
typedef struct machine {
|
|
char machine_name[30];
|
|
uint8_t isRTL8373;
|
|
// Lowest logical port number
|
|
uint8_t min_port;
|
|
// Highest logical port number
|
|
uint8_t max_port;
|
|
uint8_t n_sfp;
|
|
uint8_t log_to_phys_port[9];
|
|
uint8_t phys_to_log_port[9]; // Starts at 0 for port 1
|
|
uint8_t is_sfp[9]; // 0 for non-SFP ports 1 or 2 for the I2C port number
|
|
// sfp_port[0] is the first SFP-port from the left on the device, sfp_port[1] the next if present
|
|
struct sfp_port sfp_port[2];
|
|
uint8_t reset_pin;
|
|
struct high_leds high_leds;
|
|
// Defines which led-set (0-3) will be used for given logical port
|
|
// led-set is physical group of LEDs that can be configured to show different port status combinations (see port_led_set below)
|
|
uint8_t port_led_set[9];
|
|
// Defines led-set configuration, applied to all ports using particular led-set
|
|
// Each led-set can have 4 different hardware LED configurations. Which one should be used, depends how LED is wired on the board
|
|
// See stock RTL837X_REG_LED3_2_SETx and RTL837X_REG_LED1_0_SETx registers for reference configuration
|
|
uint32_t led_sets[4][4];
|
|
uint8_t led_mux_custom;
|
|
uint8_t led_mux[28];
|
|
};
|
|
|
|
typedef struct machine_runtime
|
|
{
|
|
uint8_t isRTL8373 : 1;
|
|
uint8_t isN : 1;
|
|
};
|
|
|
|
void machine_custom_init(void);
|
|
|
|
#endif
|