mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Merge pull request #120 from vDorst/dev_keeplink_kp-9000-9xhml-x_3
Add Keeplink KP-9000-9XHML-X (RTL8373N + RTL8224N) to machine file.
This commit is contained in:
@@ -5,13 +5,30 @@
|
|||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
| keepLINK | KP-9000-9XHML-X | Yes| 2M-PCB23-V3.1 | 2M| 8273N + 8224N |
|
| keepLINK | KP-9000-9XHML-X | Yes| 2M-PCB23-V3.1 | 2M| 8273N + 8224N |
|
||||||
|
|
||||||
|
## PCB
|
||||||
|
|
||||||
|
<img src="photos/2M-PCB23-V3.1-managed/2M-PCB23-V3.1-top.jpeg" width="300" />
|
||||||
|
|
||||||
|
## Port overview
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ ┌──────────┐ │
|
||||||
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ SFP (J4) │ │
|
||||||
|
│ │ RJ45 │ │ RJ45 │ │ RJ45 │ │ RJ45 │ │ RJ45 │ │ RJ45 │ │ RJ45 │ │ RJ45 │ │ PORT 9 │ │
|
||||||
|
│ │ PORT 1 │ │ PORT 2 │ │ PORT 3 │ │ PORT 4 │ │ PORT 5 │ │ PORT 6 │ │ PORT 7 │ │ PORT 8 │ │ MAC 8 │ O (PWR) │
|
||||||
|
│ O │ MAC 0 │ │ MAC 1 │ │ MAC 2 │ │ MAC 3 │ │ MAC 4 │ │ MAC 5 │ │ MAC 6 │ │ MAC 7 │ │ SerDes 1 │ O (SFP) │
|
||||||
|
│ RST └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └──────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
# Connectors
|
# Connectors
|
||||||
|`J4` SFP PINs | Signal | Component | GPIO | Notes |
|
|`J4` SFP PINs | Signal | Component | GPIO | Notes |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
|2| TX_FAULT | | --- | |
|
|2| TX_FAULT | | --- | |
|
||||||
|3| TX_DISABLE | | --- | Pull down - 0R |
|
|3| TX_DISABLE | | --- | Pull down - 0R |
|
||||||
|4| MODDEF2 – SDA | b-r273 | GPIO39 | |
|
|4| MODDEF2 – SDA | b-r273 | GPIO39-SDA4 | |
|
||||||
|5| MODDEF1 – SCL | b-r274 | GPIO40 | |
|
|5| MODDEF1 – SCL | b-r274 | GPIO40-SCL3 | |
|
||||||
|6| MODDEF0 – PRESENT | B-R275 | GPIO38 | |
|
|6| MODDEF0 – PRESENT | B-R275 | GPIO38 | |
|
||||||
|7| RATE SEL | | --- | |
|
|7| RATE SEL | | --- | |
|
||||||
|8| LOS | B-R276 | GPIO38 | |
|
|8| LOS | B-R276 | GPIO38 | |
|
||||||
@@ -31,15 +48,26 @@ Note: component numbering `<L>-<REFDES>-<SIDE>`
|
|||||||
| 3 | GPIO32 | U0RXD (Input) |
|
| 3 | GPIO32 | U0RXD (Input) |
|
||||||
| 4 | 3V3 | PWR |
|
| 4 | 3V3 | PWR |
|
||||||
|
|
||||||
### T7
|
### T7, Slave Interface
|
||||||
|`T7` pin|what|Signal|
|
|`T7` pin|what|Signal|Components|
|
||||||
|---|---|---|
|
|---|---|---|---|
|
||||||
| 1 | GPIO | |
|
| 1 | Slave Interface | Slave SCK/SCL/MDC/EE_SCL | U7-6 |
|
||||||
| 2 | GND | |
|
| 2 | GND | | |
|
||||||
| 3 | GPIO | |
|
| 3 | Slave Interface | Slave SDI/SDA/MDIO/EE_SDA | U7-5 |
|
||||||
| 4 | 3V3 | |
|
| 4 | 3V3 | | |
|
||||||
| 5 | GPIO | |
|
| 5 | GPIO? | | |
|
||||||
| 6 | GPIO | |
|
| 6 | GPIO? | | |
|
||||||
|
|
||||||
|
`U7` can be a standard I2C eeprom memory, like `24LC32`.
|
||||||
|
|
||||||
|
The Slave Interface allows an extenal host to controll the SOC even if the internal MCU is used.
|
||||||
|
Depending on the `IF_SEL` bootstrap resistors, this can me `I2C`, `SPI` or `SMI`.
|
||||||
|
On this device it is `I2C` on address `0b1011100` or `0x5c` (7-bit notation).
|
||||||
|
|
||||||
|
* I2c Read: must be a write_read opperation `<Dev-ADDR><RegAddr15:8><RegAddr7:0>` `<DevAddr><Data7:0><Data15:8><Data23:16><Data31:24>`.
|
||||||
|
* I2c Write: `<Dev-ADDR><RegAddr15:8><RegAddr7:0><DevAddr><Data7:0><Data15:8><Data23:16><Data31:24>`.
|
||||||
|
|
||||||
|
Example register `0x0004` return chip id `0x00, 0x00, 0x72, 0x83` = `0x83720000`.
|
||||||
|
|
||||||
### T9
|
### T9
|
||||||
|`T9` SMI | Signal | Component | GPIO | Notes |
|
|`T9` SMI | Signal | Component | GPIO | Notes |
|
||||||
@@ -67,23 +95,23 @@ Reset-line found at `T-D6-L`, `T-R83`, `T-R97`, `T-R94`, `T-R93` active-low.
|
|||||||
| HEX VAL. | GPIO | Component | What | | GPIO | Component | What |
|
| HEX VAL. | GPIO | Component | What | | GPIO | Component | What |
|
||||||
| -------- | ------ | ---- | ---- | ---- | ---- | ---- | ---- |
|
| -------- | ------ | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||||
| 00000001 | GPIO00 | T-R34-R, P1-LED-YL |? | | GPIO32 | B-r126-r | U0RXD |
|
| 00000001 | GPIO00 | T-R34-R, P1-LED-YL |? | | GPIO32 | B-r126-r | U0RXD |
|
||||||
| 00000002 | GPIO01 | T-R99-R, P1-LED-GR |? | | GPIO33 | | |
|
| 00000002 | GPIO01 | T-R99-R, P1-LED-GR |? | | GPIO33 | | |
|
||||||
| 00000004 | GPIO02 | |? | | GPIO34 | B-R172, To RTL8225 | Already driver HIGH INT? |
|
| 00000004 | GPIO02 | |? | | GPIO34 | B-R172, To RTL8224 | SMI-MDC0 |
|
||||||
| 00000008 | GPIO03 | T-R113-R, P2-LED-GR |? | | GPIO35 | B-R173, To RTL8225 | Easy to pulldown Reset? |
|
| 00000008 | GPIO03 | T-R113-R, P2-LED-GR |? | | GPIO35 | B-R173, To RTL8224 | SMI-MDIO0 |
|
||||||
| 00000010 | GPIO04 | T-R115-R, P3-LED-YL |? | | GPIO36 || | |
|
| 00000010 | GPIO04 | T-R115-R, P3-LED-YL |? | | GPIO36 | | | |
|
||||||
| 00000020 | GPIO05 | T-R117-R, P3-LED-GR |? | | GPIO37 | To RTL8225 | Already driver low I2C-SCL? | |
|
| 00000020 | GPIO05 | T-R117-R, P3-LED-GR |? | | GPIO37 | To RTL8224 ?? | Already driver low | |
|
||||||
| 00000040 | GPIO06 | |? | | GPIO38 | sfp-6 via B-R275, sfp-8 via B-R276 | |
|
| 00000040 | GPIO06 | |? | | GPIO38 | sfp-6 via B-R275, sfp-8 via B-R276 | SFP-PRESENT |
|
||||||
| 00000080 | GPIO07 | |? | | GPIO39 | sfp-4, b-r273, B-r143 | |
|
| 00000080 | GPIO07 | |? | | GPIO39 | sfp-4, b-r273, B-r143 | I2C4-SDA |
|
||||||
| 00000100 | GPIO08 | | | | GPIO40 | T9-2, sfp-5 b-r274, B-r146 | SMI-MDC |
|
| 00000100 | GPIO08 | | | | GPIO40 | T9-2, sfp-5 b-r274, B-r146 | I2C3-SCL |
|
||||||
| 00000200 | GPIO09 | |LEDx[^1] | | GPIO41 | T9-1, | SMI-MDO , B-r143 |
|
| 00000200 | GPIO09 | |LEDx[^1] | | GPIO41 | T9-1, B-r143 | | I2C3-SDA (Unused) |
|
||||||
| 00000400 | GPIO10 | | | | GPIO42 | U6?8?-P6, T-R | SPI-MEMORY, CLK |
|
| 00000400 | GPIO10 | | | | GPIO42 | U6?8?-P6, T-R | SPI-MEMORY, CLK |
|
||||||
| 00000800 | GPIO11 | |LEDx[^1] | | GPIO43 | U6?8?-P5, T-R | SPI-MEMORY, DI,IO0 |
|
| 00000800 | GPIO11 | |LEDx[^1] | | GPIO43 | U6?8?-P5, T-R | SPI-MEMORY, DI,IO0 |
|
||||||
| 00001000 | GPIO12 | |LEDx[^1] | | GPIO44 | U6?8?-P2, T-R | SPI-MEMORY, DO,IO1 |
|
| 00001000 | GPIO12 | |LEDx[^1] | | GPIO44 | U6?8?-P2, T-R | SPI-MEMORY, DO,IO1 |
|
||||||
| 00002000 | GPIO13 | |LEDx[^1] | | GPIO45 | U6?8?-P1, T-R | SPI-MEMORY, CS |
|
| 00002000 | GPIO13 | |LEDx[^1] | | GPIO45 | U6?8?-P1, T-R | SPI-MEMORY, CS |
|
||||||
| 00004000 | GPIO14 | |LEDx[^1] | | GPIO46 | T10-6 | |
|
| 00004000 | GPIO14 | |LEDx[^1] | | GPIO46 | T10-6 | SPI0-SCK |
|
||||||
| 00008000 | GPIO15 | |LEDx[^1] | | GPIO47 | T10-2 | |
|
| 00008000 | GPIO15 | |LEDx[^1] | | GPIO47 | T10-2 | SPI0-SDA |
|
||||||
| 00010000 | GPIO16 | |LEDx[^1] | | GPIO48 | T10-4, J6 (BUTTON RESET) | |
|
| 00010000 | GPIO16 | |LEDx[^1] | | GPIO48 | T10-4, J6 (BUTTON RESET) | SPI1-SCK |
|
||||||
| 00020000 | GPIO17 | |LEDx[^1] | | GPIO49 | T10-1 | |
|
| 00020000 | GPIO17 | |LEDx[^1] | | GPIO49 | T10-1 | SPI1-SDA |
|
||||||
| 00040000 | GPIO18 | |LEDx[^1] | | GPIO50 | | |
|
| 00040000 | GPIO18 | |LEDx[^1] | | GPIO50 | | |
|
||||||
| 00080000 | GPIO19 | |LEDx[^1] | | GPIO51 | | |
|
| 00080000 | GPIO19 | |LEDx[^1] | | GPIO51 | | |
|
||||||
| 00100000 | GPIO20 | |LEDx[^1] | | GPIO52 | | |
|
| 00100000 | GPIO20 | |LEDx[^1] | | GPIO52 | | |
|
||||||
@@ -96,8 +124,8 @@ Reset-line found at `T-D6-L`, `T-R83`, `T-R97`, `T-R94`, `T-R93` active-low.
|
|||||||
| 08000000 | GPIO27 | |? | | GPIO59 | | |
|
| 08000000 | GPIO27 | |? | | GPIO59 | | |
|
||||||
| 10000000 | GPIO28 | | | | GPIO60 | | |
|
| 10000000 | GPIO28 | | | | GPIO60 | | |
|
||||||
| 20000000 | GPIO29 | | | | GPIO61 | | |
|
| 20000000 | GPIO29 | | | | GPIO61 | | |
|
||||||
| 40000000 | GPIO30 | |SFP-DETE | | GPIO62 | To RTL8225 | Already driver INT? | |
|
| 40000000 | GPIO30 | RTL8224N Reset |RTL8224 | | GPIO62 | To RTL8224 | Already driver | |
|
||||||
| 80000000 | GPIO31 | B-r129-r? |U0TXD | | GPIO63 | | |
|
| 80000000 | GPIO31 | B-r129-r? |U0TXD | | GPIO63 | | |
|
||||||
|
|
||||||
## GPIO Register Input value
|
## GPIO Register Input value
|
||||||
|
|
||||||
@@ -130,4 +158,4 @@ Chip can deliver up to 5A and the sweetspot is at 2A.
|
|||||||
So higher power SFP-modules should work.
|
So higher power SFP-modules should work.
|
||||||
|
|
||||||
|
|
||||||
[^1]: LEDs are found by just plugin a RJ45 connector and see with cmd `gpio` the status change. But the bit pattern for port 1,2 are diffrent from port 3,4.
|
[^1]: LEDs are found by just plugin a RJ45 connector and see with cmd `gpio` the status change. But the bit pattern for port 1,2 are diffrent from port 3,4.
|
||||||
|
|||||||
@@ -97,6 +97,40 @@ __code const struct machine machine = {
|
|||||||
LEDS_2G5 | LEDS_LINK | LEDS_ACT },
|
LEDS_2G5 | LEDS_LINK | LEDS_ACT },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
#elif defined MACHINE_KP_9000_9XHML_X
|
||||||
|
__code const struct machine machine = {
|
||||||
|
.machine_name = "keepLink KP-9000-9XHML-X",
|
||||||
|
.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 | 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},
|
||||||
|
};
|
||||||
|
|
||||||
void machine_custom_init(void) { }
|
void machine_custom_init(void) { }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user