Restructure docs: per-device directories under modules/ and nics/ with co-located datasheets, state centralized in state.md, prose tightened into lists and tables
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user