80 lines
3.3 KiB
Markdown
80 lines
3.3 KiB
Markdown
# FS SFP-10G-T-100 transport reference — transcription
|
||
|
||
Transcribed (visually, tables intact) from the FS-provided 4-page
|
||
`10GBase-T Coper SFP Registers Operation's Reference for BCM84891.pdf`
|
||
(an ODM document — PDF metadata titles it "ABCU-5710RZ / ABCU-5700RZ").
|
||
|
||
## 1. Serial ID memory (A0h)
|
||
|
||
Standard SFP MSA serial ID at I2C A0h. Notable factory values (the module is
|
||
honest about copper — cf. ../README.md):
|
||
|
||
| Addr | Field | Value | Meaning |
|
||
|---|---|---|---|
|
||
| 0 | Identifier | 03 | SFP |
|
||
| 1 | Ext. identifier | 04 | MOD4 |
|
||
| 2 | Connector | 21 | Copper pigtail (the shipped unit reads 22 = RJ45) |
|
||
| 3–10 | Transceiver | 02 00 00 00 00 08 00 00 | 10G Base-XFI to copper / SGMII to copper |
|
||
| 11 | Encoding | 00 | 64B/66B (or 8B/10B) |
|
||
| 12 | BR, nominal | 67 | 10.3125 GBd |
|
||
| 18 | Length (copper) | 64 | 100 m; 30 m minimum in-spec copper length |
|
||
| 20–35 | Vendor name | "OEM " | shipped unit reads "FS" |
|
||
| 40–55 | Vendor PN | "10GBase-T C100m" | shipped unit reads "SFP-10G-T-100" |
|
||
| 64–65 | Options | 00 12 | TX_DISABLE and RX_LOS implemented (shipped: 00 1A) |
|
||
| 92 | Diag monitoring | 00 | **no A2h DOM implemented** |
|
||
| 93 | Enhanced options | 00 | |
|
||
| 94 | SFF-8472 compliance | 00 | digital diagnostics not included |
|
||
| 96–127 | Vendor specific | all 00 | |
|
||
|
||
## 2–3. SMI (I2C→MDIO) protocol for the PHY, with timing
|
||
|
||
The PHY is a 2-wire device at 8-bit address **0xAC write / 0xAD read**
|
||
(`1010110x`). Clause-45 access frames:
|
||
|
||
**Write (one I2C frame, 6 bytes):**
|
||
`S [0xAC] [000+DEVAD] [Reg_H] [Reg_L] [Data_H] [Data_L] P`
|
||
|
||
**Read (two I2C frames):**
|
||
`S [0xAC] [001+DEVAD] [Reg_H] [Reg_L] P` → **delay > 1 ms** →
|
||
`S [0xAD] [Data_H] [Data_L] P`
|
||
|
||
Bit-level example diagrams confirm: every byte is slave-ACKed except the final
|
||
read data byte, which the master **NAKs** before STOP. Worked examples: write
|
||
0x55AA to 1.0xA820; read 0x8542 from 1.0x0003.
|
||
|
||
## 4. PHY MMD map
|
||
|
||
Clause-45 MMDs behind the bridge:
|
||
|
||
| DEVAD | Block |
|
||
|---|---|
|
||
| 1 | 10GBASE-T PMA/PMD |
|
||
| 3 | 10GBASE-T PCS; XFI_M (XGMII) block also on DEVAD 3 |
|
||
| 7 | AN; SGMII block and 10/100/1000BASE-T PCS/PMA/PMD at 7.0xFFE0–0xFFFF |
|
||
| 30 | Top level (user-defined) |
|
||
|
||
Side blocks: JTAG, SPI, BSC, PLL/clock, LED controller.
|
||
|
||
## 5. Reference access commands and 10G bring-up sequence
|
||
|
||
The ODM's host-side primitives are exactly our `sff_i2c` ops:
|
||
`Write_XGPHY_Register 0xAC [000+DEVAD] RegH RegL DataH DataL` and
|
||
`Read_XGPHY_Register 0xAC [001+DEVAD] RegH RegL, >1 ms, 0xAD DataH DataL`.
|
||
|
||
Reference sequence "set PHY to work in 10GBE rate" (write in order):
|
||
|
||
| Frame | Register = value | Meaning |
|
||
|---|---|---|
|
||
| AC 01 00 00 20 40 | 1.0 = 0x2040 | PMA control: 10G speed select |
|
||
| AC 01 00 07 00 09 | 1.7 = 0x0009 | PMA control 2: 10GBASE-T type |
|
||
| AC 07 00 10 10 01 | 7.16 = 0x1001 | AN advertisement |
|
||
| AC 07 00 20 10 03 | 7.32 = 0x1003 | 10GBASE-T AN control |
|
||
| AC 07 00 3C 00 08 | 7.60 = 0x0008 | **EEE advertisement — advertises 10GBASE-T EEE** |
|
||
| AC 07 00 40 00 00 | 7.64 = 0x0000 | |
|
||
| AC 07 80 00 00 10 | 7.0x8000 = 0x0010 | vendor AN register |
|
||
| AC 07 00 00 B2 00 | 7.0 = 0xB200 | AN control: enable + restart |
|
||
|
||
The EEE-advertisement line means the reference bring-up (and possibly the module
|
||
firmware's own defaults) leaves 10GBASE-T EEE negotiable — verify and disable
|
||
for measurement runs (see the probe results in README.md).
|