Files
cabletest/docs/modules/fs/bcm84891l-mdio-commands.md
T

29 KiB
Raw Blame History

BCM84891L MDIO command handler — transcription

Full visual transcription (tables intact) of an excerpt of the Broadcom datasheet 84891L-DS101 (rev July 9, 2019), file BCM84891L-MDIO Command Descriptions-.pdf. The excerpt contains the cover, the table of contents, and datasheet pages 4159: §1.24 MDIO Command Handler Function, §1.25 Command Descriptions (all 45 commands), and the start of §1.26 General-Purpose LED Programmability (the excerpt ends there).

Cabletest field notes discovered on hardware are called out inline as Field note and are distinct from the datasheet text.

Device headline features (cover page): single-chip transceiver-MAC to magnetics for 10GBASE-T (802.3an) / 5GBASE-T / 2.5GBASE-T (802.3bz) / 1000BASE-T (802.3ab) / 100BASE-TX (802.3u) on Cat 6/6A/7 (5G/2.5G/1G/100M also on Cat 5e); IEEE 802.3z, 802.3az; XFI/10GBASE-KR, USXGMII, 5000BASE-R/X, 2500BASE-R/X, 1000BASE-X (SGMII) MAC interface; IEEE 1588-2008 v2-compliant; IEEE fast retrain and link monitoring; EEE with AutogrEEEn; trace-matched output impedance; line-side loopback; low EMI; enhanced cable diagnostics; jumbo packets up to 18 KB; detection/correction of pair swaps (MDI crossover), pair skew, pair polarity; autonegotiation with next-page; JTAG/AC-JTAG boundary scan; 0.8 V CMOS core; 1.2/1.8/2.5/3.3 V MDIO I/O; 8 mm × 8 mm BGA.

Chapters the TOC lists but the excerpt omits

Field note (our analysis, not datasheet text): the excerpt's own table of contents names chapters absent from these pages — gaps to source elsewhere.

  • §1.17 EEE / AutogrEEEn narrative (enabling/disabling AutogrEEEn, monitoring EEE readiness §1.17.5, fast-retrain modes §1.17.6: IEEE FR, Negotiated FR (NFR), BCM-proprietary FR)
  • §1.18 Jumbo Packets, §1.19 HiGig2 Messages Support
  • §1.20 Loopback Operation — per-speed PCS/PMA system loopbacks (§1.20.1.11.20.1.5) and §1.20.2 Copper Line Loopback at PMD/PCS of XFI/10GBASE-KR
  • §1.21 Management Interface, §1.22 TRD (MDI) Interface Pair Swapping, §1.23 SPI Interface (modes, functional description, READ, memory power-up sequence)
  • §1.26 remainder (LED source table / register-bit detail), §1.27 Power Supplies, §1.28 Reset
  • Chapter 2: Register Summary (datasheet p62+)
  • Not in this TOC at all: the ECD (cable-diagnostics) register chapter and the 1588 operation chapter.

§1.24 MDIO Command Handler Function

The MDIO Command Handler is a handshake process to provision and monitor features and guarantee the feature is set properly. The command CODE is written to the Command register CMD (0x1E.0x4005). During the 2-second training phase the status returns CMD_SYSTEM_BUSY; wait up to 2 seconds for the command to execute.

Table 5: Features/Commands Using MDIO Command Handler Process

Feature/Command Name Description Command Code
CMD_GET_PAIR_SWAP 0x8000
CMD_SET_PAIR_SWAP 0x8001
Reserved 0x8002
Reserved 0x8003
CMD_GET_1588_ENABLE 0x8004
CMD_SET_1588_ENABLE 0x8005
GET_LIMITED_REACH_MODE_ENABLE Gets limited reach mode setting. 0x8006
SET_LIMITED_REACH_MODE_ENABLE Enables or disables limited reach mode setting. 0x8007
CMD_GET_EEE_MODE 0x8008
CMD_SET_EEE_MODE 0x8009
CMD_GET_EMI_MODE_ENABLE 0x800A
CMD_SET_EMI_MODE_ENABLE 0x800B
CMD_GET_SUB_LF_RF_STATUS 0x800D
GET_KR_MODE_ENABLE Gets KR mode setting. 0x800E
SET_KR_MODE_ENABLE Enables or disables KR mode setting. 0x800F
CMD_CLEAR_SUB_LF_RF 0x8010
CMD_SET_SUB_LF_RF 0x8011
GET_SYNC_E_ENABLE Get SyncE enable status 0x8012
SET_SYNC_E_ENABLE Set SyncE enable 0x8013
GET_XFI_2P5G_5G_MODE 0x8016
SET_XFI_2P5G_5G_MODE 0x8017
SET_EEE_STATISTICS 0x801A
GET_EEE_STATISTICS 0x801B
GET_JUMBO_PACKET 0x801D
SET_JUMBO_PACKET 0x801C
GET_PAUSE_FRAME_MODE 0x801F
SET_PAUSE_FRAME_MODE 0x8020
GET_LED_TYPE 0x8021
SET_LED_TYPE 0x8022
GET_WAP_MODE_FRAME_TYPE 0x8023
SET_WAP_MODE_FRAME_TYPE 0x8024
SET_USXGMII 0x8026
GET_USXGMII 0x8027
GET_XFI_TX_FILTERS 0x802B
SET_XFI_TX_FILTERS 0x802C
GET_XFI_POLARITY 0x802D
SET_XFI_POLARITY 0x802E
GET_CURRENT_VOLTAGE 0x802F
CMD_GET_SNR 0x8030
CMD_GET_CURRENT_TEMP 0x8031
CMD_SET_UPPER_TEMP_WARNING_LEVEL 0x8032
CMD_GET_UPPER_TEMP_WARNING_LEVEL 0x8033
CMD_SET_LOWER_TEMP_WARNING_LEVEL 0x8034
CMD_GET_LOWER_TEMP_WARNING_LEVEL 0x8035
SET_WOL_ENABLE Enable/disable wake-on-LAN 0x805A
GET_WOL_ENABLE Get wake-on-LAN settings 0x805B

To execute a feature, write the associated code (command CODE) in the CMD register.

Table 6: MDIO Command Handler Register Set

Register Name Description Address
CMD Command 0x1E.0x4005
STATUS Status of command 0x1E.0x4037
DATA1_REG Data 1 register 0x1E.0x4038
DATA2_REG Data 2 register 0x1E.0x4039
DATA3_REG Data 3 register 0x1E.0x403A
DATA4_REG Data 4 register 0x1E.0x403B
DATA5_REG Data 5 register 0x1E.0x403C

The STATUS register is a special bidirectional register that reports the status and can be written by the user.

Table 7: STATUS Codes

STATUS Code Name Set by Description Code Value
CMD_RECEIVED FW A command has been received. 0x0001
CMD_IN_PROGRESS FW A command is being serviced. 0x0002
CMD_COMPLETE_PASS / CMD_OPEN_FOR_CMDS FW Last command has been executed successfully. 0x0004
CMD_COMPLETE_ERROR / CMD_OPEN_FOR_CMDS FW Execution of the last command produced an error. 0x0008
CMD_SYSTEM_BUSY FW System is not ready to accept commands. 0xBBBB

§1.24.1 Theory of Operation

After boot, firmware initializes STATUS to CMD_COMPLETE_PASS/CMD_OPEN_FOR_CMDS and CMD to 0x0 (no-op). The user polls STATUS to check handler availability. If STATUS is CMD_IN_PROGRESS or SYSTEM_BUSY, wait and check again. Otherwise the user writes the command to CMD; if CMD bit 15 is written as 1, an interrupt is generated and firmware sets STATUS to CMD_RECEIVED and sends a message to the Service thread to execute the command.

The Service thread calls the MDIO Command Handler, which uses the command value as an index into a command array and returns a function pointer that executes the command. Each command function sets STATUS to CMD_IN_PROGRESS, processes, then returns CMD_COMPLETE_PASS/CMD_OPEN_FOR_CMDS or CMD_COMPLETE_ERROR/CMD_OPEN_FOR_CMDS so the user can poll and read the register results.

§1.24.2 Command Procedure

  1. Poll STATUS until the previous command is neither CMD_IN_PROGRESS nor SYSTEM_BUSY.
  2. If parameters are required, write them to the DATA registers (see §1.25).
  3. When firmware is ready, write the command code/value from Table 5 to the CMD register.
  4. Poll STATUS until CMD_COMPLETE_PASS/CMD_OPEN_FOR_CMDS or CMD_COMPLETE_ERROR/CMD_OPEN_FOR_CMDS.
  5. Read the specified DATA registers for saved results, if applicable.
  6. For provisioning features that alter port configuration, restart autonegotiation to reestablish link with the new parameters (most provisioning processes require this step).

NOTE: The recommended STATUS polling period is 100 ms. During the 10GBASE-T training phase the handler status register does not change for up to two seconds; avoid issuing commands during training or start polling only after link is up.

§1.24.3 Provisioning and Monitoring Sequences (Figure 15)

Provisioning flow: StartRead Status Register → is Status = CMD_IN_PROGRESS || CMD_SYSTEM_BUSY? If Yes, loop back to read again. If NoWrite Data RegisterWrite Command RegisterRead Status Register → is Status = CMD_COMPLETE_PASS || CMD_COMPLETE_ERROR? If No, loop back to read again. If YesEnd.

Handler field notes (hardware-verified)

  • The handler does not clear DATA registers it does not use — stale values persist across commands. Write every parameter register explicitly before any SET, and see CMD_GET_SNR for a GET that must be issued with no DATA1 write.

§1.25 Command Descriptions

§1.25.1.1 CMD_GET_PAIR_SWAP (0x8000)

  • Description: Gets pair swap values.
  • Input Parameters: None.
  • Return Results: DATA1_REG = Forced/requested current swap pair value. DATA2_REG = Current swap pair value.

§1.25.1.2 CMD_SET_PAIR_SWAP (0x8001)

  • Description: Sets pair swap values.
  • Input Parameters: DATA2_REG = Swap pair value to be forced.
  • Return Results: None.
  • NOTE: CMD_SET_PAIR_SWAP requires autonegotiation to take place in order to take effect.

§1.25.1.3 Pair Swap Values (Table 8)

Bits Description
[15:8] Reserved.
[7:6] PAIR_D_SEL: 00 = Pair A, 01 = Pair B, 10 = Pair C, 11 = Pair D
[5:4] PAIR_C_SEL: 00 = Pair A, 01 = Pair B, 10 = Pair C, 11 = Pair D
[3:2] PAIR_B_SEL: 00 = Pair A, 01 = Pair B, 10 = Pair C, 11 = Pair D
[1:0] PAIR_A_SEL: 00 = Pair A, 01 = Pair B, 10 = Pair C, 11 = Pair D

Field note: on the FS, reading 0x8000 returns DATA2 = 0x00E4 = identity map (A/B/C/D straight through), which verifies MDI wiring.

§1.25.1.4 CMD_GET_1588_ENABLE (0x8004)

  • Description: Returns current value set for internal variable used to enable/disable IEEE 1588 functionality.
  • Input Parameters: None.
  • Return Results: DATA1: 0 = IEEE 1588 is disabled, 1 = IEEE 1588 is enabled. DATA2 to DATA5: Not used.

§1.25.1.5 CMD_SET_1588_ENABLE (0x8005)

  • Description: Sets internal variable used to enable/disable IEEE 1588 functionality. Setting to 1 enables IEEE 1588, 0 disables it. Enable or disable prior to link up. If changing while the link is already up, bring the link down and back up using an AUTONEG restart or similar mechanism.
  • Input Parameters: DATA1: 0 = Disable IEEE 1588, 1 = Enable IEEE 1588. DATA2 to DATA5: Not used.
  • Return Results: None.
  • NOTE: CMD_SET_1588_ENABLE requires autonegotiation to take place to take effect.

§1.25.1.6 GET_LIMITED_REACH_MODE_ENABLE (0x8006)

  • Description: Returns current value set for internal variable used to enable/disable limited reach mode functionality.
  • Input Parameters: None.
  • Return Results:
    • DATA1: 0 = Limited reach mode is disabled, 1 = enabled.
    • DATA2 (only valid when DATA1 = 1): 0 = Dynamically switch to LR power saving mode level 2 based on cable length; 1 = Always forced to LR power saving mode level 1 (most power saving); 2 = Always forced to level 2 (less saving); 3 = Always forced to level 3 (least saving).
    • DATA3 (valid only when DATA1 = 1): 0 = Currently not linked in limited reach mode, 1 = Currently linked in limited reach mode.
    • DATA4 to DATA5: Not used.

Field note: DATA3 = "currently linked in LR mode" is the only handler-visible trace of the DSP's internal cable-length estimate.

§1.25.1.7 SET_LIMITED_REACH_MODE_ENABLE (0x8007)

  • Description: Enables/disables limited reach mode functionality.
  • Input Parameters:
    • DATA1: 0 = Exit limited reach mode, 1 = Enter limited reach mode.
    • DATA2 (only valid when DATA1 = 1): 0 = Dynamically switch to LR power saving mode level 2 based on cable length; 1 = level 1 (most saving); 2 = level 2 (less saving); 3 = level 3 (least saving).
    • DATA3 to DATA5: Not used.
  • Return Results: None.

§1.25.1.8 CMD_GET_EEE_MODE (0x8008)

  • Description: Gets AutogrEEEn parameters.
  • Input Parameters: None.
  • Return Results:
Register Field 5G 2.5G 1G/100M 10G
DATA1_REG Bits 7:6 5:4 3:2 1:0
EEE Disabled 0 0 0 0
Native EEE 1 1 1 1
AutogrEEEn Fixed Latency 2 2 2 2
AutogrEEEn Variable Latency 3 3 N/A 3
DATA2_REG AutogrEEEn High Threshold 0 0 N/A 0
DATA3_REG AutogrEEEn Low Threshold 0x7A12 0x7A12 N/A 0x7A12
DATA4_REG AutogrEEEn Latency 0x480 0x480 N/A 0x480
DATA5_REG Reserved 0 0 0 0
  • NOTE:
    • DATA1_REG bit[11:10] defines how bit[3:2] works: 0 = bit[3:2] for 1G/100TX EEE; 1 = bit[3:2] for 100TX EEE only; 2 = bit[3:2] for 1G EEE only; 3 = bit[3:2] for 1G/100TX EEE.
    • Although the EEE modes can differ between speeds, the AutogrEEEn parameters for 2.5G/5G/10G in DATA2_REGDATA4_REG are shared. The 1G/100M AutogrEEEn parameters are not programmable and are unaffected by DATA2_REGDATA4_REG. DATA1_REG[15:8] = Reserved.
    • Example: When DATA1_REG is 0x00B1, 5G EEE is fixed latency, 2.5G EEE is variable latency, 1G/100M does not advertise EEE, and 10G is native EEE mode. If the data rate is 10G, DATA2_REGDATA4_REG are ignored. If 5G, DATA4_REG is ignored. If 2.5G or 5G, the AutogrEEEn threshold applies.

§1.25.1.9 CMD_SET_EEE_MODE (0x8009)

  • Description: Configures IEEE-EEE and AutogrEEEn.
  • Input Parameters: Same DATA1DATA5 layout as CMD_GET_EEE_MODE (Table above): DATA1_REG per-speed mode fields (5G [7:6], 2.5G [5:4], 1G/100M [3:2], 10G [1:0]; 0 = EEE disabled, 1 = native EEE, 2 = AutogrEEEn fixed latency, 3 = AutogrEEEn variable latency); DATA2_REG = AutogrEEEn high threshold; DATA3_REG = low threshold (default 0x7A12); DATA4_REG = AutogrEEEn latency (default 0x480); DATA5_REG = Reserved. Same NOTE and example as GET.
  • Return Results: None.
  • NOTE: CMD_SET_EEE_MODE requires autonegotiation to take place to take effect.

§1.25.1.10 CMD_GET_EMI_MODE_ENABLE (0x800A)

  • Description: Gets SW Fast Retrain current enable status.
  • Input Parameters: None.
  • Return Results:
    • DATA1: 10G fast retrain enable — 0 = disabled, 1 = enabled.
    • DATA2: 5G fast retrain enable — 0 = disabled, 1 = enabled.
    • DATA3: 2.5G fast retrain enable — 0 = disabled, 1 = enabled.

§1.25.1.11 CMD_SET_EMI_MODE_ENABLE (0x800B)

  • Description: (titled EMI; body reads) Gets/sets SW Fast Retrain enable status.
  • Input Parameters:
    • DATA1: 10G fast retrain — 0 = Disable, 1 = Enable.
    • DATA2: 5G fast retrain — 0 = Disable, 1 = Enable.
    • DATA3: 2.5G fast retrain — 0 = Disable, 1 = Enable.
  • Return Results: None.
  • NOTE: CMD_SET_EMI_MODE_ENABLE requires autonegotiation to take place to take effect.

§1.25.1.12 CMD_GET_SUB_LF_RF_STATUS (0x800D)

  • Description: Gets current status on the substitution of FAULTS with IDLE going to the line direction.
  • Input Parameters: None.
  • Return Results: Status. DATA1: 0 = Copper TX direction LF/RF is passing through, 1 = Copper TX direction LF/RF is replaced with IDLE. DATA2 to DATA5: Not used.

§1.25.1.13 CMD_CLEAR_SUB_LF_RF (0x8010)

  • Description: Disables substitution of FAULTS with IDLE going to the line direction.
  • Input Parameters: None.
  • Return Results: None.

§1.25.1.14 CMD_SET_SUB_LF_RF (0x8011)

  • Description: Enables substitution of FAULTS with IDLE going to the line direction.
  • Input Parameters: None.
  • Return Results: None.

§1.25.1.15 GET_KR_MODE_ENABLE (0x800E)

  • Description: Gets KR mode status setting (enable/disable).
  • Input Parameters: None.
  • Return Results: DATA1: 0 = BCM84891L KR mode is disabled, 1 = enabled. DATA2 to 5: Reserved.

§1.25.1.16 SET_KR_MODE_ENABLE (0x800F)

  • Description: Sets KR mode status setting (enable/disable).
  • Input Parameters: DATA1: 0 = BCM84891L KR mode is disabled, 1 = enabled. DATA2 to 5: Reserved.
  • Return Results: None.

§1.25.1.17 GET_SYNC_E_ENABLE (0x8012)

  • Description: Get SyncE enable setting.
  • Input Parameters: None.
  • Return Results:
    • DATA1: SyncE enable — 0 = disabled, 1 = enabled.
    • DATA2: M0 mux select — 0 = P0 10G clock/lock on M0; 1 = P1 10G/1G; 2 = P2 10G/1G; 3 = P3 10G/1G; 8 = P0 1G clock/lock on M0.
    • DATA3: M1 mux select — 0 = P0 10G clock/lock on M1; 1 = P1 10G/1G; 2 = P2 10G/1G; 3 = P3 10G/1G; 8 = P0 1G clock/lock on M1.
    • DATA4: FW Control SyncE Configuration — 0 = User control, 1 = FW control.
    • DATA5[0]: M0 mux SYNCE_OEN. DATA5[1]: M1 mux SYNCE_OEN — 0 = Output enabled, 1 = Output disable. DATA5[15:2]: Reserved.

§1.25.1.18 SET_SYNC_E_ENABLE (0x8013)

  • Description: Set SyncE enable setting.
  • Input Parameters:
    • DATA1: SyncE enable — 0 = disabled, 1 = enabled.
    • DATA2: M0 mux select — 0 = P0 10G clock/lock on M0 (default); 1 = P1 10G/1G; 2 = P2 10G/1G; 3 = P3 10G/1G; 8 = P0 1G on M0.
    • DATA3: M1 mux select — 0 = P0 10G clock/lock on M1 (default); 1 = P1 10G/1G; 2 = P2 10G/1G; 3 = P3 10G/1G; 8 = P0 1G on M1.
    • DATA4: FW Control SyncE Configuration — 0 = User control (default), 1 = Firmware control.
    • DATA5[0]: M0 mux SYNCE_OEN. DATA5[1]: M1 mux SYNCE_OEN — 0 = Output enabled, 1 = Output disable. DATA5[15:2]: Reserved.
  • Return Results: None.

§1.25.1.19 GET_XFI_TX_FILTERS (0x802B)

  • Description: Gets current XFI TX filter taps.
  • Input Parameters: None.
  • Return Results:
    • DATA2: Bit[0:7] = Pre tap, Bit[8:15] = Main tap.
    • DATA3: Bit[0:7] = Post1 tap, Bit[8:15] = Post2 tap.
    • DATA4: Bit[8:15] = TX HPF.
    • DATA5: Reserved.
  • NOTE: The current link speed is the filter for that speed. If a link is down, the filter tap is invalid.

§1.25.1.20 SET_XFI_TX_FILTERS (0x802C)

  • Description: Sets XFI TX filter taps.
  • Input Parameters:
    • DATA1: Bit[0:7] = Reserved; Bit[8:15] = Speed — 0 = Backward-compatible 10G, 1 = 100BT, 2 = 1G, 3 = 10G, 4 = 2.5G, 5 = 5G.
    • DATA2: Bit[0:7] = Pre tap, Bit[8:15] = Main tap.
    • DATA3: Bit[0:7] = Post1 tap, Bit[8:15] = Post2 tap.
    • DATA4: Bit[8:15] = TX HPF.
    • DATA5: Reserved.
  • Return Results: None.
  • NOTE: Speed = 0 means 10G; this is for backward-compatibility.

§1.25.1.21 GET_XFI_POLARITY (0x802D)

  • Description: Gets XFI polarity.
  • Input Parameters: None.
  • Return Results: DATA2: TX polarity. DATA3: RX polarity.

§1.25.1.22 SET_XFI_POLARITY (0x802E)

  • Description: Sets XFI polarity.
  • Input Parameters: DATA2: TX polarity. DATA3: RX polarity.
  • Return Results: None.

§1.25.1.23 GET_CURRENT_VOLTAGE (0x802F)

  • Description: Gets current voltage.
  • Input Parameters: None.
  • Return Results: DATA1 = For 0.8V measurement. DATA2 = For 0.8V measurement. DATA3 = For 1.88V measurement. DATA4 = Reserved.

Field note: observed in tenths of mV — the 0.8 V rails and a 1.88 V rail.

§1.25.1.24 CMD_GET_SNR (0x8030)

  • Description: Gets SNR value.
  • Input Parameters: DATA1: 0 = Do not display SNR in IEEE registers, 1 = Display SNR in IEEE registers.
  • Return Results: DATA2/10 = SNR for Channel A in dB; DATA3/10 = Channel B; DATA4/10 = Channel C; DATA5/10 = Channel D.

Field note (hardware-verified): on this ODM firmware, write nothing to DATA1 — writing the display flag (either value) makes the firmware return zeros, and the IEEE registers 1.1331.140 never populate (they read a constant 0x8080) regardless. Bare invocation returns live per-pair SNR (~2732 dB on a bench cable, 0.10.4 dB jitter per read). Values are absolute receiver SNR, not IEEE SNR margin, so there is no documented green/orange/red threshold — the 10GBASE-T operating point must be established empirically (the graded-noise correlation run) rather than assumed.

§1.25.1.25 CMD_GET_CURRENT_TEMP (0x8031)

  • Description: Returns the internally derived temperature of the die. DATA1_REG returns the temperature, when supported.
  • Input Parameters: None.
  • Return Results: DATA1_REG = Temperature value.

Field note: observed ~6870 °C on the bench. See also the firmware-reliability caveat — temperature-like values can leak into other commands' DATA1.

§1.25.1.26 CMD_SET_UPPER_TEMP_WARNING_LEVEL (0x8032)

  • Description: Sets the upper-bound of the temperature warning to the value in DATA1_REG.
  • Input Parameters: DATA1: Upper temperature limit in °C (2s compliment). DATA2: Upper temperature limit margin in °C (positive number). DATA3: Enable upper temperature warning — 0 = Disable, 1 = Enable.
  • Return Results: None.

§1.25.1.27 CMD_GET_UPPER_TEMP_WARNING_LEVEL (0x8033)

  • Description: Gets the upper-bound of the temperature warning and saves the value to DATA1_REG.
  • Input Parameters: None.
  • Return Results: DATA1: Upper temperature limit in °C (2s compliment). DATA2: Upper temperature limit margin in °C (positive number). DATA3: Enable upper temperature warning — 0 = Disable, 1 = Enable.

§1.25.1.28 CMD_SET_LOWER_TEMP_WARNING_LEVEL (0x8034)

  • Description: Sets the lower-bound of the temperature warning and saves the value to DATA1_REG.
  • Input Parameters: DATA1: Lower temperature limit in °C (2s compliment). DATA2: Lower temperature limit margin in °C (positive number). DATA3: Enable upper temperature warning — 0 = Disable, 1 = Enable.
  • Return Results: None.

§1.25.1.29 CMD_GET_LOWER_TEMP_WARNING_LEVEL (0x8035)

  • Description: Gets the lower bound of the temperature warning to the value in DATA1_REG.
  • Input Parameters: None.
  • Return Results: DATA1: Lower temperature limit in °C (2s compliment). DATA2: Lower temperature limit margin in °C (positive number). DATA3: Enable upper temperature warning — 0 = Disable, 1 = Enable.

§1.25.1.30 GET_WAP_MODE_FRAME_TYPE (0x8023)

  • Description:
  • Input Parameters: None.
  • Return Results:
    • DATA1: 0 = Reserved; 1 = Priority protocol is IEEE 802.3bz.
    • DATA2: Current link frame type — 0 = Reserved, 1 = IEEE 802.3bz, 2 = NBASE-T, 3 = Reserved.
    • DATA3 to DATA5: Reserved.

§1.25.1.31 SET_WAP_MODE_FRAME_TYPE (0x8024)

  • Description:
  • Input Parameters: DATA1: Frame type priority — 0 = Reserved, 1 = IEEE 802.3bz. DATA2 to DATA5: Reserved.
  • Return Results: None.

§1.25.1.32 GET_XFI_2P5G_5G_MODE (0x8016)

  • Description:
  • Input Parameters: None.
  • Return Results:
    • DATA1: 0 = 10G Idle Stuffing mode for 2.5G; 1 = 2500BASE-X_5000BASE-X mode for 2.5G; 2 = 2500BASE-R_5000BASE-R mode for 2.5G.
    • DATA2: 0 = 10G Idle Stuffing mode for 5G; 1 = 2500BASE-X_5000BASE-X mode for 5G; 2 = 2500BASE-R_5000BASE-R mode for 5G.
    • DATA3 to DATA5: Not used.

§1.25.1.33 SET_XFI_2P5G_5G_MODE (0x8017)

  • Description:
  • Input Parameters:
    • DATA1: 0 = 10G Idle Stuffing mode for 2.5G; 1 = 2500BASE-X_5000BASE-X mode for 2.5G; 2 = 2500BASE-R_5000BASE-R mode for 2.5G.
    • DATA2: 0 = 10G Idle Stuffing mode for 5G; 1 = 2500BASE-X_5000BASE-X mode for 5G; 2 = 2500BASE-R_5000BASE-R mode for 5G.
    • DATA3 to DATA5: Not used.
  • Return Results: None.
  • NOTE: KR mode is not supported when 2500X or 5000X mode is enabled.

§1.25.1.34 SET_EEE_STATISTICS (0x801A)

  • Description: Enable EEE statistics.
  • Input Parameters: None.
  • Return Results: None.
  • NOTE: This command must be issued after the link is up.

§1.25.1.35 GET_EEE_STATISTICS (0x801B)

  • Description:
  • Input Parameters: Counter selection — 0 = Select event counters, 1 = Select time duration.
  • Return Results: DATA2: TX (LOC) counters/time lower 16 bits. DATA3: TX (LOC) counters/time upper 16 bits. DATA4: RX (REM) counters/time lower 16 bits. DATA5: RX (REM) counters/time upper 16 bits.
  • NOTE: PHY selects 10G or 1G based on current link speed.

§1.25.1.36 GET_JUMBO_PACKET (0x801D)

  • Description: Gets jumbo packet status setting (enable/disable).
  • Input Parameters: None.
  • Return Results: DATA1: Current jumbo packet enable status — 0 = disabled, 1 = enabled. DATA2: Jumbo packet size option — 0 = 10K packet, 1 = 18k packet, 2 = 9k packet. DATA3 to DATA5: Not used.

§1.25.1.37 SET_JUMBO_PACKET (0x801C)

  • Description: Sets jumbo packet status setting (enable/disable).
  • Input Parameters: DATA1: Enable or disable jumbo packet — 0 = Disable, 1 = Enable. DATA2: Jumbo packet size option — 0 = 10K packet, 1 = 18k packet, 2 = 9k packet. DATA3 to DATA5: Not used.
  • Return Results: None.

§1.25.1.38 GET_PAUSE_FRAME_MODE (0x801F)

  • Description: Gets the pause frame mode status (enable/disable).
  • Input Parameters: None.
  • Return Results: DATA1: Pause frame enable status — 0 = No pause frame, 1 = Pause frame is enabled. DATA2 to 5: Reserved.
  • NOTE: This is only valid for 2.5/5G Idle Stuffing mode in 10G XFI WAP mode.

§1.25.1.39 SET_PAUSE_FRAME_MODE (0x8020)

  • Description: Sets the pause frame mode status (enable/disable).
  • Input Parameters: DATA1: Pause frame enable status — 0 = No pause frame, 1 = Pause frame is enabled.
  • Return Results: None.
  • NOTE: This is only valid for 2.5/5G Idle Stuffing mode in 10G XFI WAP mode.

§1.25.1.40 GET_LED_TYPE (0x8021)

  • Description: Gets the LED control mode status (enable/disable).
  • Input Parameters: None.
  • Return Results: DATA1: Current LED type — 0 = Firmware control, 1 = User control. DATA2 to DATA5: Reserved.

§1.25.1.41 SET_LED_TYPE (0x8022)

  • Description: Sets the LED control mode status (enable/disable).
  • Input Parameters: DATA1: Current LED type — 0 = FW control, 1 = User control. DATA2 to DATA5: Reserved.
  • Return Results: None.

§1.25.1.42 GET_USXGMII (0x8027)

  • Description: Gets the USXGMII mode and AUTONEG function (enable/disable).
  • Input Parameters: None.
  • Return Results:
    • DATA1: USXGMII enable status — 0 = disabled, 1 = enabled.
    • DATA2: USXGMII autonegotiation enable status (only valid if USXGMII is enabled) — 0 = disabled, 1 = enabled.
    • DATA3: [0:2] = single_max_speed — 1 = 2.5G, 2 = 5G, 4 = 10G.
    • DATA4: Reserved.
    • DATA5: 1 = MAC/PHY frequency unlocked, 0 = MAC/PHY frequency is locked.

§1.25.1.43 SET_USXGMII (0x8026)

  • Description: Sets the USXGMII mode and AUTONEG function (enable/disable).
  • Input Parameters:
    • DATA1: USXGMII enable — 0 = Disable USXGMII, 1 = Enable USXGMII.
    • DATA2: USXGMII autonegotiation enable status (only valid if USXGMII is enabled) — 0 = Disable autonegotiation, 1 = Enable autonegotiation.
    • DATA3: [0:2] = single_max_speed — 1 = 2.5G, 2 = 5G, 4 = 10G.
    • DATA4: Reserved.
    • DATA5: 1 = MAC/PHY frequency unlocked, 0 = MAC/PHY frequency is locked.
  • Return Results: None.

§1.25.1.44 SET_WOL_ENABLE (0x805A)

  • Description: Enable/disable wake-on-LAN (WOL) mode.
  • Input Parameters: DATA1: WOL mode enable — 0 = Disable WOL mode, 1 = Enable WOL mode. DATA2 to DATA5: Reserved.
  • Return Results: None.
  • NOTE: This command takes effect immediately without need of link re-establishment. After WOL mode is set, do a soft reset to the PHY prior to its normal operation. WOL mode is only necessary for 2.5G speed and above.

§1.25.1.45 GET_WOL_ENABLE (0x805B)

  • Description: Get wake-on-LAN (WOL) mode settings.
  • Input Parameters: None.
  • Return Results: DATA1: WOL mode enable — 0 = Disable WOL mode, 1 = Enable WOL mode. DATA2 to DATA5: Reserved.

§1.26 General-Purpose LED Programmability (excerpt start)

The BCM84891L has five LED pins, LED1 through LED5, that can be functionally programmed. Control register words select LED functions for each pin, located in register LED Control (DEVAD = 1, Address = 0xA83B).

  • LED sources are masked in the Control LEDx Mask register. An LED mask bit should be set to 1 to allow the source to drive the LED pin. When multiple bits in the Control LEDx Mask register are set, the LED sources are OR'd together.
  • The LEDs are driven by LED Control (DEVAD = 1, Address = 0xA83B) and LED Control Source (DEVAD = 1, Address = 0xA83C) when the mask associated with the LED is enabled.
  • In 10G mode, each LED is controlled separately by individual bits of PHYC_CTL_LED_CTL. The LEDx_OE_N enables the LEDx output. LEDx_CTL controls the mode:
    • 00 = LED is off.
    • 01 = LED blinks based on the selected source. The blink cycle is programmed by 10GBASE-T Control LEDx bit [3:0].
    • 10 = LED is ON based on the selected source registers.
    • 11 = reserved.
  • Each of the five LEDs has a maskable source register bit (see Table 9 — not in this excerpt).
  • Activity LED: unmask bit 1 (receiver activity) and/or bit 2 (transmitter activity) in the associated Control LEDx Mask register. In LED Control Source (DEVAD = 1, Address = 0xA83C), bit 1 provides receiver activity status and bit 2 provides transmitter activity status. To make the activity pulse visible, set the Stretch_En bit associated with the selected LED pin.

(The excerpt ends here; the LED source table and the remainder of §1.26–§1.28 are not included — see the omitted-chapters list above.)