Files
cabletest/docs/bcm84891l-sfp-registers.md
T

3.3 KiB
Raw Blame History

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. hardware.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)
310 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
2035 Vendor name "OEM " shipped unit reads "FS"
4055 Vendor PN "10GBase-T C100m" shipped unit reads "SFP-10G-T-100"
6465 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
96127 Vendor specific all 00

23. 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] Pdelay > 1 msS [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.0xFFE00xFFFF
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 modules.md probe list).