BCM57785
BCM57785
BCM57785
57785-PG105-R
5300 California Avenue • Irvine, CA 92617 • Phone: 949-926-5000 • Fax: 949-926-5203 March 08, 2012
BCM57785 Programmer’s Reference Guide Revision History
Revision History
Broadcom Corporation
5300 California Avenue
Irvine, CA 92617
Broadcom®, the pulse logo, Connecting everything®, and the Connecting everything logo are among the
trademarks of Broadcom Corporation and/or its affiliates in the United States, certain other countries and/
or the EU. Any other trademarks or trade names mentioned are the property of their respective owners.
BCM57785 Programmer’s Reference Guide Table of Contents
Table of Contents
About This Document...................................................................................................................................42
Purpose and Audience ...........................................................................................................................42
Acronyms and Abbreviations.................................................................................................................42
Document Conventions .........................................................................................................................43
References .............................................................................................................................................43
Technical Support.........................................................................................................................................44
Section 1: Introduction.................................................................................................... 45
Introduction..................................................................................................................................................45
Product Features ..........................................................................................................................................45
Revision Levels .............................................................................................................................................47
Programming the Ethernet Controllers .......................................................................................................48
Section 2: Hardware Architecture.................................................................................... 49
Theory of Operation .....................................................................................................................................49
Receive Data Path.........................................................................................................................................50
RX Engine ...............................................................................................................................................50
RX FIFO...................................................................................................................................................51
Rules Checker.........................................................................................................................................51
RX List Initiator.......................................................................................................................................51
Transmit Data Path.......................................................................................................................................51
TX MAC ..................................................................................................................................................51
TX FIFO ...................................................................................................................................................52
DMA Read.....................................................................................................................................................53
Read Engine ...........................................................................................................................................53
Read FIFO ...............................................................................................................................................53
Buffer Manager......................................................................................................................................54
DMA Write....................................................................................................................................................54
Write Engine ..........................................................................................................................................54
Write FIFO..............................................................................................................................................54
Buffer Manager......................................................................................................................................55
LED Control ...................................................................................................................................................55
Memory Arbiter............................................................................................................................................55
Host Coalescing.............................................................................................................................................56
Host Coalescing Engine ..........................................................................................................................56
MSI FIFO.................................................................................................................................................57
Status Block............................................................................................................................................57
10BT/100BTX/1000BASE-T Transceiver.......................................................................................................58
Auto-Negotiation ...................................................................................................................................58
Automatic MDI Crossover......................................................................................................................58
PHY Control...................................................................................................................................................59
MII Block ................................................................................................................................................59
GMII Block..............................................................................................................................................60
MDIO Register Interface ........................................................................................................................62
Management Data Clock ................................................................................................................62
Management Data Input/Output ................................................................................................... 62
Management Data Interrupt ..........................................................................................................62
Management Register Block...........................................................................................................62
Section 3: NVRAM Configuration..................................................................................... 63
Overview.......................................................................................................................................................63
Self-Boot .......................................................................................................................................................64
Section 4: Common Data Structures ................................................................................ 65
Theory of Operation .....................................................................................................................................65
Descriptor Rings............................................................................................................................................65
Producer and Consumer Indices ............................................................................................................66
Ring Control Blocks ................................................................................................................................67
Send Rings..............................................................................................................................................67
Send Buffer Descriptors..................................................................................................................69
Standard (Not Large Segment Offload) Send BD ....................................................................69
Large Segment Offload (LSO) Send BD....................................................................................70
Receive Rings .........................................................................................................................................70
Send Buffer Descriptors..................................................................................................................73
Standard (Not Large Segment Offload) Send BD ....................................................................73
Large Segment Offload (LSO) Send BD....................................................................................74
Receive Rings .........................................................................................................................................74
Receive Producer Ring ....................................................................................................................76
Receive Return Rings ......................................................................................................................76
Receive Buffer Descriptors .............................................................................................................76
Status Block ..................................................................................................................................................80
Status Block Format ...............................................................................................................................81
INTx/MSI — Legacy Mode Status Block Format..............................................................................81
Single-Vector or INTx — RSS Mode Status Block Format................................................................82
Jumbo Producer Ring Host Address High Register (offset: 0x2440) .............................................131
Jumbo Producer Ring NIC Address Register (offset: 0x2444).......................................................132
Jumbo Producer Length/Flags Register (offset: 0x2448)..............................................................132
Jumbo Producer Ring NIC Address Register (offset: 0x244C).......................................................132
Receive Diagnostic Data and Receive BD Ring Initiator Local NIC Jumbo Receive BD Consumer Index
(offset: 0x2470).........................................................................................................................132
Receive BD Initiator Local NIC Jumbo Receive BD Producer Index (offset: 0x2C08) ....................133
Jumbo Receive BD Producer Ring Replenish Threshold Register (offset: 0x2C1C).......................133
NIC Jumbo Receive BD Producer Index Register (offset: 0x3008) ................................................133
NIC Receive BD Consumer Index Register (offset: 0x3C50 – 0x3C58) ...........................................134
NIC Diag Receive Return Ring BD 0 Index Register (offset: 0x3C80) ............................................134
Receive BD Jumbo Producer Ring Index Register (offset: 0x5870-5877) .....................................134
RDI Mode Register (Offset: 0x2400) .............................................................................................135
NIC Ring Addresses .......................................................................................................................135
Summary of Register Settings to Support Jumbo Frames ...................................................................136
Scatter/Gather............................................................................................................................................137
VLAN Tag Insertion .....................................................................................................................................138
TX Data Flow Diagram ................................................................................................................................138
Reset ...........................................................................................................................................................141
MAC Address Setup/Configuration............................................................................................................142
Packet Filtering ...........................................................................................................................................142
Multicast Hash Table Setup/Configuration..........................................................................................142
Ethernet CRC Calculation .....................................................................................................................143
Generating CRC....................................................................................................................................143
Checking CRC .......................................................................................................................................143
Initializing the MAC Hash Registers .....................................................................................................144
Promiscuous Mode Setup/Configuration ............................................................................................145
Broadcast Setup/Configuration ...........................................................................................................145
Section 7: Device Control .............................................................................................. 146
Initialization Procedure ..............................................................................................................................146
Energy Efficient Ethernet™.........................................................................................................................155
Section 8: PCI ................................................................................................................ 158
Configuration Space ...................................................................................................................................158
Description...........................................................................................................................................158
Functional Overview ............................................................................................................................161
PHY Auto-Negotiation...................................................................................................................207
Power Management .....................................................................................................................207
Integrated MACs...........................................................................................................................208
WOL Data Flow Diagram......................................................................................................................209
Flow Control ...............................................................................................................................................211
Description...........................................................................................................................................211
Operational Characteristics .................................................................................................................211
Transmit MAC ...............................................................................................................................212
Receive MAC.................................................................................................................................212
Statistics Block ..............................................................................................................................213
PHY Auto-Negotiation...................................................................................................................214
Integrated MACs...........................................................................................................................214
Flow Control Initialization Pseudocode ...............................................................................................215
Section 10: Interrupt Processing.................................................................................... 217
Host Coalescing...........................................................................................................................................217
Description...........................................................................................................................................217
Operational Characteristics .................................................................................................................217
Registers ..............................................................................................................................................218
MSI ..............................................................................................................................................................219
Traditional Interrupt Scheme...............................................................................................................219
Message Signaled Interrupt .................................................................................................................221
PCI Configuration Registers .................................................................................................................222
MSI Address ..................................................................................................................................222
MSI Data .......................................................................................................................................222
Host Coalescing Engine ........................................................................................................................223
Firmware..............................................................................................................................................223
MSI-X...........................................................................................................................................................223
MSI-X Vectoring ...................................................................................................................................223
PCIe Mandated Data Structures ...................................................................................................227
MSI-X Capability Structure ....................................................................................................227
MSI-X Data Structures...........................................................................................................228
MSI-X Host Coalescing ..................................................................................................................229
End of Receive Stream Interrupt ..................................................................................................231
Misc MSI-X Controls......................................................................................................................232
MSI-X One Shot Mode...........................................................................................................232
Coalesce Now or Forced Update...........................................................................................232
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) – Function 1 ............286
Base Address Register 1 (offset: 0x10) – Function 1 ....................................................................286
Base Address Register 2 (offset: 0x14) – Function 1 ....................................................................287
Base Address Register 3 (offset: 0x18) – Function 1 ....................................................................287
Base Address Register 4 (offset: 0x1c) – Function 1.....................................................................288
Base Address Register 5 (offset: 0x20) – Function 1 ....................................................................288
Base Address Register 6 (offset: 0x24) – Function 1 ....................................................................289
Cardbus CIS Pointer Register (offset: 0x28) – Function 1 .............................................................289
Subsystem ID/Vendor ID Register (offset: 0x2C) – Function 1 .....................................................289
Expansion ROM Base Address Register (offset: 0x30) – Function 1 .............................................290
Capabilities Pointer Register (offset: 0x34) – Function 1 .............................................................290
Interrupt Register (offset: 0x3C) – Function 1 ..............................................................................291
Slot Information Register (offset: 0x40) – Function 1 ..................................................................291
Power Management Capability Register (offset: 0x48) – Function 1 ...........................................292
Power Management Control/Status Register (offset: 0x4C) – Function 1 ...................................292
PCIe Capabilities Register (offset: 0xAC) – Function 1..................................................................294
Device Capabilities Register (offset: 0xB0) – Function 1 ..............................................................295
Device Status Control Register (offset: 0xB4) – Function 1 ..........................................................297
Link Capability Register (offset: 0xB8) – Function 1 .....................................................................298
Link Status_Control Register (offset: 0xBC) – Function 1 .............................................................301
Slot Capability Register (offset: 0xC0) – Function 1......................................................................302
Slot Control_Status Register (offset: 0xC4) – Function 1..............................................................303
Root_Capability Control Register (offset: 0xC8) – Function 1 ......................................................303
Root_Status Register (offset: 0xCC) – Function 1.........................................................................303
Device Capability 2 Register (offset: 0xD0) – Function 1..............................................................303
Device Status_Control 2 Register (offset: 0xD4) – Function 1......................................................304
Link Capability 2 Register (offset: 0xD8) – Function 1 ..................................................................304
Link Status_Control 2 Register (offset: 0xDC) – Function 1 ..........................................................305
Slot Capability 2 Register (offset: 0xE0) – Function 1 ...................................................................306
Slot Status_Control 2 Register (offset: 0xE4) – Function 1...........................................................306
Extended PCIe Configuration Space – Function 1.........................................................................306
MS Card-Reader Configuration Registers — Function 2 ......................................................................306
Device ID and Vendor ID Register (offset: 0x00) – Function 2......................................................306
Status and Command Register (offset: 0x04) – Function 2 ..........................................................307
PCI Classcode and Revision ID Register (offset: 0x8) – Function 2 ...............................................309
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) – Function 2 ............309
Base Address Register 1 (offset: 0x10) – Function 2 ....................................................................310
Base Address Register 2 (offset: 0x14) – Function 2 ....................................................................310
Base Address Register 3 (offset: 0x18) – Function 2 ....................................................................311
Base Address Register 4 (offset: 0x1c) – Function 2.....................................................................311
Base Address Register 5 (offset: 0x20) – Function 2 ....................................................................312
Base Address Register 6 (offset: 0x24) – Function 2 ....................................................................312
Cardbus CIS Pointer Register (offset: 0x28) – Function 2 .............................................................313
Subsystem ID/Vendor ID Register (offset: 0x2C) – Function 2 .....................................................313
Expansion ROM Base Address Register (offset: 0x30) – Function 2 .............................................313
Capabilities Pointer Register (offset: 0x34) – Function 2 .............................................................314
Interrupt Register (offset: 0x3C) – Function 2 ..............................................................................314
Slot Information Register (offset: 0x40) – Function 2 ..................................................................314
Power Management Capability Register (offset: 0x48) – Function 2 ...........................................315
Power Management Control/Status Register (offset: 0x4C) – Function 2 ...................................316
PCIe Capabilities Register (offset: 0xAC) – Function 2..................................................................318
Device Capabilities Register (offset: 0xB0) – Function 2 ..............................................................319
Device Status Control Register (offset: 0xB4) – Function 2 ..........................................................321
Link Capability Register (offset: 0xB8) – Function 2 .....................................................................323
Link Status_Control Register (offset: 0xBC) – Function 2 .............................................................325
Slot Capability Register (offset: 0xC0) – Function 2......................................................................326
Slot Control_Status Register (offset: 0xC4) – Function 2..............................................................327
Root_Capability Control Register (offset: 0xC8) – Function 2 ......................................................327
Root_Status Register (offset: 0xCC) – Function 2.........................................................................327
Device Capability 2 Register (offset: 0xD0) – Function 2..............................................................327
Device Status_Control 2 Register (offset: 0xD4) – Function 2......................................................328
Link Capability 2 Register (offset: 0xD8) – Function 2 ..................................................................328
Link Status_Control 2 Register (offset: 0xDC) – Function 2 ..........................................................329
Slot Capability 2 Register (offset: 0xE0) – Function 2 ...................................................................330
Slot Status_Control 2 Register (offset: 0xE4) – Function 2...........................................................330
Extended PCIe Configuration Space – Function 2.........................................................................330
xD Card-Reader Configuration Registers – Function 3.........................................................................330
Device ID and Vendor ID Register (offset: 0x00) – Function 3......................................................330
Status and Command Register (offset: 0x04) – Function 3 ..........................................................331
PCI Classcode and Revision ID Register (offset: 0x8) – Function 3 ...............................................332
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) – Function 3 ............333
Base Address Register 1 (offset: 0x10) – Function 3 ....................................................................333
Base Address Register 2 (offset: 0x14) – Function 3 ....................................................................334
Base Address Register 3 (offset: 0x18) – Function 3 ....................................................................334
Base Address Register 4 (offset: 0x1c) – Function 3.....................................................................335
Base Address Register 5 (offset: 0x20) – Function 3 ....................................................................336
Base Address Register 6 (offset: 0x24) – Function 3 ....................................................................336
Cardbus CIS Pointer Register (offset: 0x28) – Function 3 .............................................................337
Subsystem ID/Vendor ID Register (offset: 0x2C) – Function 3 .....................................................337
Expansion ROM Base Address Register (offset: 0x30) – Function 3 .............................................337
Capabilities Pointer Register (offset: 0x34) – Function 3 .............................................................338
Interrupt Register (offset: 0x3C) – Function 3 ..............................................................................338
Slot Information Register (offset: 0x40) – Function 3 ..................................................................338
Power Management Capability Register (offset: 0x48) – Function 3 ...........................................339
Power Management Control/Status Register (offset: 0x4C) – Function 3 ...................................340
PCIe Capabilities Register (offset: 0xAC) – Function 3..................................................................342
Device Capabilities Register (offset: 0xB0) – Function 3 ..............................................................342
Device Status Control Register (offset: 0xB4) – Function 3 ..........................................................345
Link Capability Register (offset: 0xB8) – Function 3 .....................................................................347
Link Status_Control Register (offset: 0xBC) – Function 3 .............................................................349
Slot Capability Register (offset: 0xC0) – Function 3......................................................................350
Slot Control_Status Register (offset: 0xC4) – Function 3..............................................................351
Root_Capability Control Register (offset: 0xC8) – Function 3 ......................................................351
Root_Status Register (offset: 0xCC) – Function 3.........................................................................351
Device Capability 2 Register (offset: 0xD0) – Function 3..............................................................351
Device Status_Control 2 Register (offset: 0xD4) – Function 3......................................................352
Link Capability 2 Register (offset: 0xD8) – Function 3 ..................................................................352
Link Status_Control 2 Register (offset: 0xDC) – Function 3 ..........................................................353
Slot Capability 2 Register (offset: 0xE0) – Function 3 ...................................................................354
Slot Status_Control 2 Register (offset: 0xE4) – Function 3...........................................................354
Extended PCIe Configuration Space – Function 3.........................................................................354
SD Host Standard Register .........................................................................................................................355
Summary of SD Register Set ................................................................................................................355
MS Host Standard Register ........................................................................................................................357
Summary of MS Register Set ...............................................................................................................357
High-Priority Mailbox Registers .................................................................................................................359
EAV: Real-TimeSend BD Diagnostic Initiator Local NIC BD N Producer Index Registers (offset: 0x1888 –
0x18C4) ............................................................................................................................................408
Send BD Completion Control Registers .....................................................................................................408
Send BD Completion Mode Register (offset: 0x1C00) .........................................................................408
Send BD Completion Debug Register (offset: 0x1C04) ........................................................................408
EAV: Real-TimeSend BD Completion Mode Register (offset: 0x1C80) ................................................409
EAV: Real-TimeSend BD Completion Debug Register (offset: 0x1C84)................................................409
Receive List Placement Registers ...............................................................................................................410
Receive List Placement Mode Register (offset: 0x2000) .....................................................................410
Receive List Placement Status Register (offset: 0x2004) .....................................................................410
Receive Selector Non-Empty Bits Register (offset: 0x200C) ................................................................411
Receive List Placement Configuration Register (offset: 0x2010) .........................................................411
Receive List Placement Statistics Control Register (offset: 0x2014)....................................................411
Receive List Placement Statistics Enable Mask Register (offset: 0x2018) ...........................................412
Receive List Placement Statistics Increment Mask Register (offset: 0x201C) .....................................413
Receive Selector List Head and Tail Pointers (offset: 0x2100).............................................................413
Receive Selector List Count Registers (Offset of List N: 0X2108 + 16*[N-1]).......................................413
Local Statistics Counter Registers (offset: 0x2200-0x2258).................................................................414
Receive Data and Receive BD Initiator Control Registers .........................................................................414
Receive Data and Receive BD Initiator Mode Register (offset: 0x2400)..............................................414
Receive Data and Receive BD Initiator Status Register (offset: 0x2404) .............................................414
Jumbo Receive BD Ring RCB Registers (offset: 0x2440) ......................................................................415
Standard Receive BD Ring RCB Registers.............................................................................................415
Receive Producer Ring Host Address High Register (offset: 0x2450) ...........................................415
Receive Producer Ring Host Address Low Register (offset: 0x2454)............................................415
Receive Producer Length/Flags Register (offset: 0x2458) ............................................................415
Receive Producer Ring NIC Address Register (offset: 0x245C) .....................................................416
Receive Diagnostic Data and Receive BD Ring Initiator Local NIC Standard Receive BD Consumer Index
(offset: 0x2474)................................................................................................................................416
Receive Diagnostic Data and Receive BD Ring Initiator Local NIC Mini Receive BD Consumer Index
(offset: 0x2478)................................................................................................................................416
Receive Data and Receive Diagnostic BD Initiator Local Receive Return Producer Index Register (offset:
0x2480 – 0x24BC) ............................................................................................................................416
Receive Data and Receive BD Initiator Hardware Diagnostic Register (offset: 0x24C0)......................416
Receive Data Completion Control Registers..............................................................................................417
Receive Data Completion Mode Register (offset: 0x2800)..................................................................417
Receive BD Initiator Control Registers.......................................................................................................417
List of Figures
Figure 1: Functional Block Diagram..................................................................................................................49
Figure 2: Receive Data Path..............................................................................................................................50
Figure 3: Transmit Data Path............................................................................................................................52
Figure 4: DMA Read Engine..............................................................................................................................53
Figure 5: DMA Write Engine.............................................................................................................................54
Figure 6: Host Coalescing Engine......................................................................................................................56
Figure 7: Media Independent Interface ...........................................................................................................59
Figure 8: GMII Block .........................................................................................................................................61
Figure 9: MDI Register Interface ......................................................................................................................62
Figure 10: Generic Ring Diagram......................................................................................................................66
Figure 11: Transmit Ring Data Structure Architecture Diagram.......................................................................68
Figure 12: Receive Return Ring Memory Architecture Diagram ......................................................................71
Figure 13: Transmit Ring Data Structure Architecture Diagram.......................................................................72
Figure 14: Receive Return Ring Memory Architecture Diagram ......................................................................75
Figure 15: Receive Buffer Descriptor Cycle ......................................................................................................90
Figure 16: Receive Producer Ring RCB Setup ...................................................................................................92
Figure 17: Class of Service Example .................................................................................................................99
Figure 18: Overview Diagram of RX Flow .......................................................................................................101
Figure 19: RSS Receive Processing Sequence .................................................................................................103
Figure 20: Relationships Between All Components of a Send Ring................................................................107
Figure 21: Max_Len Field in Ring Control Block .............................................................................................108
Figure 22: Relationship Between Send Buffer Descriptors ............................................................................109
Figure 23: Send Buffer Descriptor ..................................................................................................................113
Figure 24: Extended RX Buffer Descriptor......................................................................................................119
Figure 25: Ring Control Block .........................................................................................................................122
Figure 26: Send Buffer Descriptor ..................................................................................................................124
Figure 27: Send Driver Interface.....................................................................................................................127
Figure 28: Receive Producer Interface ...........................................................................................................129
Figure 29: Receive Return Interface ...............................................................................................................130
Figure 30: Scatter Gather of Frame Fragments..............................................................................................137
Figure 31: Transmit Data Flow .......................................................................................................................139
Figure 32: Basic Driver Flow to Send a Packet................................................................................................140
Figure 33: Local Contexts ...............................................................................................................................160
Figure 34: Header Type Register 0xE..............................................................................................................161
Figure 35: Register Indirect Access.................................................................................................................164
List of Tables
Table 1: Product Features ................................................................................................................................45
Table 2: Family Revision Levels ........................................................................................................................47
Table 3: On-chip One-Time-Programmable Memory (OTP) Configuration Options ........................................63
Table 4: Ring Control Block Format ..................................................................................................................67
Table 5: Flag Fields for a Ring ...........................................................................................................................67
Table 6: Send Buffer Descriptors Format .........................................................................................................69
Table 7: Defined Flags for Send Buffer Descriptors..........................................................................................69
Table 8: Send Buffer Descriptors Format .........................................................................................................73
Table 9: Defined Flags for Send Buffer Descriptors..........................................................................................73
Table 10: Receive Return Rings ........................................................................................................................76
Table 11: Receive Descriptors Format..............................................................................................................76
Table 12: Defined Flags for Receive Buffers .....................................................................................................77
Table 13: Defined Error Flags for Receive Buffers............................................................................................79
Table 14: Status Block Format (MSI-X Single-Vector or INTx — RSS Mode) .....................................................81
Table 15: Status Block Format (MSI-X Single-Vector or INTx — RSS Mode) .....................................................82
Table 16: Status Block Format (MSI-X Single-Vector or INTx — EAV Mode) ....................................................82
Table 17: Status Block [0] Format (MSI-X Multivector RSS Mode)...................................................................84
Table 18: Status Blocks [1 thru 4] Formats (MSI-X Multivector RSS Mode) .....................................................84
Table 19: Status Block [0] Format (MSI-X Multivector EAV Mode) ..................................................................85
Table 20: Status Block [1 thru 4] Format (MSI-X Multivector EAV Mode) .......................................................85
Table 21: Status Block [5] Format (MSI-X multivector EAV Mode) ..................................................................86
Table 22: Status Block Host Addresses and INT MailBox Addresses ................................................................86
Table 23: Status Word Flags .............................................................................................................................87
Table 24: Mailbox Registers .............................................................................................................................94
Table 25: Receive Rules Configuration Register ...............................................................................................96
Table 26: Receive BD Rules Control Register ...................................................................................................97
Table 27: Receive BD Rules Value/Mask Register ............................................................................................98
Table 28: Frame Format with 802.1Q VLAN Tag Inserted ..............................................................................100
Table 29: Send Data Initiator Mode Register (Offset: 0xC00) ........................................................................112
Table 30: ISO Send Data Initiator Mode Register (Offset: 0xD00) .................................................................112
Table 31: Read DMA Mode Register (offset: 0x4800) ....................................................................................112
Table 32: ISO Read DMA Mode Register (Offset: 0x4A00).............................................................................112
Table 33: Flag Field Description......................................................................................................................114
Table 34: Receive BD Error Flags ....................................................................................................................120
Table 35: Receive BD Flags ............................................................................................................................121
Some members of this family of Ethernet controllers add two new areas of fully integrated functionality:
• Card Reader (SD2.0, SD3.0, MS Pro, xD-Picture)
• Ethernet Audio Video (EAV) low-level hardware support (BCM57761, BCM57765, BCM57765X)
The document focuses on the registers, control blocks, and software interfaces necessary for host software
programming. It is intended to complement the data sheet for the appropriate member of the NetXtreme/
NetLink Ethernet controller family. The errata documentation (see “Revision Levels” on page 47) complements
this document.
For a comprehensive list of acronyms and other terms used in Broadcom documents, go to:
http://www.broadcom.com/press/glossary.php.
Document Conventions
The following conventions may be used in this document:
Convention Description
Bold User input and actions: for example, type exit, click OK, press Alt+C
Monospace Code: #include <iostream>
HTML: <td rowspan = 3>
Command line commands and parameters: wl [-l] <command>
<> Placeholders for required elements: enter your <username> or wl <command>
[] Indicates optional command-line parameters: wl [-l]
Indicates bit and byte ranges (inclusive): [0:3] or [7:0]
References
The references in this section may be used in conjunction with this document.
Note: Broadcom provides customer access to technical documentation and software through its
Customer Support Portal (CSP) and Downloads & Support site (see Technical Support).
For Broadcom documents, replace the “xx” in the document number with the largest number available in the
repository to ensure that you have the most current version of the document.
Refer to the following Broadcom documents for additional information on the Ethernet controllers:
• BCM57XX NetXtreme® Programmer’s Guide: Programming details for the BCM5700, BCM5701, BCM5702,
BCM5703, BCM5704, BCM5705, BCM5721, BCM5751, BCM5752, BCM5714, BCM5715, and BCM57XX
devices
• Data sheets documentation of following devices: BCM57785 family
• Applicable BCM57785 family errata documentation (each BCM57785 Family controller SKU has its own
errata document) .
Technical Support
Broadcom provides customer access to a wide range of information, including technical documentation,
schematic diagrams, product bill of materials, PCB layout information, and software updates through its
customer support portal (https://support.broadcom.com). For a CSP account, contact your Sales or Engineering
support representative.
In addition, Broadcom provides other product support through its Downloads & Support site
(http://www.broadcom.com/support/).
Section 1: Introduction
Introduction
The NetXtreme and NetLink family of Media Access Controller (MAC) devices are highly-integrated, single-chip
gigabit Ethernet LAN controller solutions for high-performance network applications. These devices integrate
the following major functions to provide a single-chip solution for gigabit LAN-on-motherboard (LOM) and
network interface card (NIC) applications.
• Triple-speed IEEE 802.3-compliant MAC functionality
• Triple-speed IEEE 802.3-compliant Ethernet PHY transceiver
• PCI Express® (PCIe™) bus interface
• On-chip packet buffer memory
• On-chip RISC processor for custom frame processing
Product Features
Table 1: Product Features
Revision Levels
See Table 2 for the revision levels of the Ethernet controllers covered by this document. Host software can use
the PCI Revision ID and Chip ID information in the PCI configuration registers to determine the revision level of
the Ethernet controller on the board, and then load the appropriate workaround described in the errata sheets.
The Broadcom PCI vendor ID is 0x14E4. Table 2 shows the default values of PCI device IDs. These values may
be modified by firmware in accordance with the manufacturing information supplied in NVRAM (see “NVRAM
Configuration” on page 63 for more details).
The reference documents for Ethernet controller software development include this manual and the errata
documentation (see “Revision Levels” on page 47) that provide the necessary information for writing a host-
based device driver. The Broadcom Linux® driver (a.k.a. “tg3”) is also a very good reference source for writing
your own driver.
The programming model for the NetXtreme/NetLink Ethernet controllers does not depend on OS or processor
instruction sets. Programmers using Motorola® 68000, Intel® x86, or DEC Alpha host instruction sets can
leverage this document to aid in device driver development. Concepts provided in this document are also
applicable to device drivers native to any operating system (i.e., DOS, UNIX®, Microsoft®, or Novell®).
Theory of Operation
Figure 1 shows the major functional blocks and interfaces of the Ethernet controllers covered in this document.
There are two packet flows: MAC-transmit and receive. The device’s DMA engine bus-masters packets from
host memory to device local storage, and vice-versa. The host bus interface is compliant with PCIe standards.
The RX MAC moves packets from the integrated PHY into device internal memory. All incoming packets are
checked against a set of QOS rules and then categorized. When a packet is transmitted, the TX MAC moves data
from device internal memory to the PHY. Both flows operate independently of each other in full-duplex mode.
An on-chip RISC processor is provided for running value-added firmware that can be used for custom frame
processing. The on-chip RISC operates independently of all the architectural blocks; essentially, RISC is available
for the auxiliary processing of data streams.
Rx Frame Buffer
Memory/RISC
Receive Transmit Scratch Pad Memory
GMII GMII
Queue
Memory
Tx Frame Buffer
Receive Rx Memory
MAC FIFO
Send BD RING
Rule Registers
Physical Layer Check Receive BD RING
Transceiver Statistics
DMA Descriptor
Frame Buffer
Manager Config
Transmit Tx Memory
MAC FIFO Arbiter
Read Read
DMA FIFO
PCIe Bus
RISC PCIe
Processor
Write Write
DMA FIFO
Boot ROM
Ring Controllers
Host Coalescing
Queue Management
LED
PLL Control EEPROM Control
RX Engine
The receive engine (see Figure 2) activates whenever a packet arrives from the PHY.
Empty BD
Host RX
Return
Ring
List
Initiator
BD
BD
BD
BD
BD
Rx Return
Rx Return
Rx Return
Rx Return
Rx Return
RX Rx Frame
Rules Checker Full BD
Engine FIFO Buffers DMA
RX FIFO
The RX FIFO provides elasticity while data is read from PHY transceiver and written into internal memory. There
are no programmable settings for the RX FIFO. This FIFO’s operation is completely transparent to host software.
Rules Checker
The rules checker examines frames. After a frame has been examined, the appropriate classification bits are
set in the buffer descriptor. The rules checker is part of the RX data path and the frames are classified during
data movement to NIC memory. The following frame positions may be established by the rules checker:
• IP Header Start Pointer
• TCP/UDP Header Start Pointer
• Data Start Pointer
RX List Initiator
The RX List Initiator function activates whenever the receive producer index for any of receive buffer descriptor
(BD) rings is written. This value is located in one of the receive BD producer mailboxes. The host software writes
to the producer mailbox and causes the RX Initiator function to enqueue an internal data structure/request,
which initiates the DMA of one or more new BDs to the NIC. The actual DMAs generated depend on the
comparison of the value of the received BD host producer index mailbox, the NIC copy of the received BD
consumer index, and the local copy of the received BD producer index.
TX MAC
The Read DMA engine moves packets from host memory into internal NIC memory (see Figure 3). When the
entire packet is available, the transmit MAC is activated.
Send BD
TX Data
TX Data
TX Data Buffer0
DMA Buffer1 Tx TX
Buffer2
FIFO MAC
TX Data Buffer3
Buffer4
Buffer5
Consumer
Index
Update
TX FIFO
The TX FIFO provides elasticity while data is moved from device internal memory to PHY. There are no
programmable settings for the TX FIFO. This FIFO’s operation is completely transparent to host software.
DMA Read
Read Engine
The DMA read engine (see Figure 4) activates whenever a host read is initiated by the send or receive data
paths.
Buffer Manager
DMA
Read Host Send Buffer
Frame Classify & FIFO
TX TX TX Frame Tx Checksum Memory
IO RMII MAC Mod FIFO Calculation
16 64 Packet Data #1
text
Frame Header #1
text
TX Packet Data #1
GMII
Statistics
NIC Buffer
Memory
The DMA read engine de-queues an internal data structure/request and performs the following functions:
• DMAs the data from the host memory to an internal Read DMA FIFO
• Moves the data from the Read DMA FIFO to NIC internal memory
• Classifies the frame
• Performs checksum calculations
• Copies the VLAN tag field from the DMA descriptor to the frame header
Read FIFO
The read FIFO provides elasticity during data movement from host memory to device local memory. The
memory arbiter is a gatekeeper for multiple internal blocks; several portions of the architecture may
simultaneously request internal memory. The PCI read FIFO provides a small buffer for the data read from host
memory while the Read DMA engine requests internal memory via the memory arbiter. The data is moved out
of the read DMA FIFO into device local memory once a memory data path is available. The FIFO isolates the PCI
clock domain from the device clock domain. This reduces latency internally and externally on the PCI bus. The
PCIe Read DMA FIFO holds 1024 bytes. The operation of the read DMA FIFO is transparent to host software.The
Read DMA engine makes sure there is enough space in internal TX Packet Buffer Memory before initiating a
DMA request for transfer of TX packet data from host memory to device internal packet memory.
Buffer Manager
The buffer manager maintains pools of internal memory used by transmit and receive engines. The buffer
manager has logic blocks for allocation, free, control, and initialization of internal memory pools. The DMA read
engine requests internal memory for BDs and frame data. Figure 4 on page 53 shows the transmit data path
using the DMA Read Engine. The read DMA engine also fetches RX BDs for the receive data path.
DMA Write
Write Engine
The DMA write engine, as shown in Figure 5, activates when a host write is initiated by the send or receive data
paths.
Frame Header #1
RX RX RX Frame Rx text
Packet Data #1
IO RMII MAC Mod FIFO
DMA Write
Packet Data #1
FIFO
WOL Power
NIC
RX
GMII
Filter Management BufferMemory
Host Receive Buffer
Memory
Statistics
The DMA write engine de-queues an internal request and performs the following functions:
• Gathers the data from device internal memory into the write DMA FIFO
• DMAs the data to the host memory from the write FIFO
• Performs byte and word swapping
• Interrupts the host using a line or message signaled interrupt
Write FIFO
The write FIFO provides elasticity during data movement from device memory to the host memory. The write
FIFO absorbs small delays created by PCIe bus arbitration. The NetXtreme family uses the write FIFO to buffer
data, so internal memory arbitration is efficient. Additionally, the FIFO isolates the PCI clock domain from the
device’s clock domain. This reduces latency on the PCI bus during the write operation (wait states are not
inserted while data is fetched from internal memory). The operation of the write DMA FIFO is transparent to
host software.
Buffer Manager
The buffer manager maintains pools of internal memory used in transmit and receive functions. The buffer
manager has logic blocks for allocation, free, control, and initialization of internal memory pools. The receive
MAC requests NIC RX Mbuf memory so inbound frames can be buffered. The read DMA engine requests the
device TX Mbuf memory for buffering the packets from host memory before they are sent out on the wire. The
DMA write engine requests a small amount of internal memory for DMA and interrupt operations. The usage
of this internal memory is transparent to host software, and does not affect device/system performance.
LED Control
Refer to section “LED Control” in the applicable data sheet.
Memory Arbiter
The Memory Arbiter (MA) is a gatekeeper for internal memory access. The MA is responsible for decoding the
internal memory addresses that correspond to Ethernet controller data structures and control maps. If a
functional block faults or traps during access to internal memory, the MA handles the failing condition and
reports the error in a status register. In addition to architectural blocks, the MA provides a gateway for the RISC
processor to access local memory. The RISC has an MA interface that pipelines up to three access requests. The
MA negotiates local memory access, so all portions of the architecture are provided with fair access to memory
resources. The MA prevents starvation and bounds access latency. Host software may enable/disable/reset the
MA, and there are no tunable parameters.
Host Coalescing
Status Block
DMA
Status Buffer Write
Write
Memory Manager FIFO
Engine
...
PCIe
Interface
Tick BD
Counter Counter MSI
Mailbox
MSI
FIFO
Host
Coalescing
Engine
IRQ Host
I/O Interrupt
Driver Controller
MSI FIFO
This FIFO is eight entries deep and four bits wide. This FIFO is used to send MSIs via the PCI interface. The host
coalescing engine uses this FIFO to enqueue requests for the generation of MSI. There are no configurable
options for this FIFO and this FIFOs operation is completely transparent to host software.
Status Block
This data structure contains consumer and producer indices/values. Host software reads this control block, to
assess hardware updates in the send and receive rings. Two copies of the status block exist. The local copy is
DMAed to host memory by the DMA write engine. Host software does not want to generate PCI transactions
to read ring status; rather quicker memory bus transactions are desired. The host coalescing engine enqueues
a request to the DMA write engine, so host software gets a refreshed copy of status. The status block is
refreshed before a line IRQ or MSI is generated. See “Status Block Format” on page 81 for a complete discussion
of the status block.
10BT/100BTX/1000BASE-T Transceiver
Auto-Negotiation
The Ethernet controller devices negotiate their mode of operation over the twisted-pair link using the auto-
negotiation mechanism defined in the IEEE 802.3u and IEEE 802.3ab specifications. Auto-negotiation can be
enabled or disabled by hardware or software control. When the auto-negotiation function is enabled, the
Ethernet controllers automatically choose the mode of operation by advertising its abilities and comparing
them with those received from its link partner. The Ethernet controllers can be configured to advertise
1000BASE-T full-duplex and/or half-duplex, 100BASE-TX full-duplex and/or half-duplex, and 10BASE-T full-
duplex and/or half-duplex. The transceiver negotiates with its link partner and chooses the highest operating
speed and duplex that are common between them. Auto-negotiation can be disabled for testing or for forcing
100BASE-TX or 10BASE-T operation, but is always required for normal 1000BASE-T operation.
PHY Control
The NetXtreme/NetLink Ethernet controller supports the following physical layer interfaces:
• The MII is used in conjunction with 10/100 Mbps copper Ethernet transceivers.
• GMII supports 1000 Mbps copper Ethernet transceivers.
MII Block
The MII interconnects the MAC and PHY sublayers (as shown in Figure 7 on page 59).
RXD /4
RX_CLK1 RX Media
RX Rx Data RX
Access Decapsulation
RX_ER I/O MAC
Mgmnt
Symbol RX RX_DV
Decoder I/O
COL
CRS Media
Status
I/O
LED LED LNKRDY
Control I/O
TXD /4
TX
Symbol TX MII_TXCLK TX Media Tx Data TX
Encoder I/O TX_ER I/O Access Encapsulation MAC
TX_EN Mgmnt
The specifics of MII may be located in section 22 of the IEEE 802.3 specification. RXD[3:0] are the receive data
signals; TXD[3:0] are the transmit data signals. MII operates at both 10-Mbps and 100-Mbps wire-speeds.
(Gigabit Ethernet uses the GMII standard.) When MAC and PHY are configured for 10 Mbps operation, the
RX_CLK1 and MII_TXCLK clocks run at 2.5 MHz. Both RX_CLK1 and MII_TXCLK are sourced by the PHY. 100
Mbps wire speed requires RX_CLK1 and MII_TXCLK to provide a 25 MHz reference clock. Receive Data Valid
(RX_DV) is asserted when valid frame data is received; at any point during data reception, the PHY may assert
Receive Error (RX_ER) to indicate a receive error. The MAC will record this error in the statistics block. The MAC
may discard a bad RX frame—exception being sniffer/promiscuous modes (see Allow_Bad_Frames bit in MAC
mode register). The Transmit Enable (TX_EN) signal is asserted when the MAC presents the PHY with a valid
frame for transmission. The MAC may assert TX_ER to indicate the remaining portion of frame is bad. The PHY
will insert Bad Code symbols into the remaining portion of the frame. A detected collision in half-duplex mode
may be such a scenario where TX_ER is asserted. The PHY will assert COL when a collision is detected. The COL
signal is routed to both the RX and TX MACs. The transmit MAC will back off transmission and the RX MAC will
throw away partial frames.
The 10 Mbps physical layer uses Differential Manchester encoding on the wire. Manchester encoding uses two
encoding levels: 0 and 1. 100 Mbps Ethernet requires MLT-3 waveshaping on the transmission media. MLT-3
uses three encoding levels: – 1, 0, and 1. Both physical signaling protocols are transparent to the MAC sublayer
and are digitized by the PHY. The PHY encodes/decodes analog waveforms at its lower edge while the PHY
presents digital data at its upper edge (MII).
GMII Block
The GMII is full-duplex (see Figure 8 on page 61); the send and receive data paths operate independently.
The transmit signals TXD[7:0] create a eight-bit wide data path. The TXD[7:0] signals are synchronized to the
reference clockTX_CLK0. The TX_CLK0 clock runs at 125 MHz and is sourced by the MAC sublayer. Transmit
Error (TX_ER) is asserted by the MAC sublayer. The PHY will transmit a bad code until TX_ER is de-asserted by
the MAC. TX_ER is driven synchronously with TX_CLK0. The Transmit Enable (TX_EN) indicates that valid data
is presented on the TXD lines. The TXD[7:0] data is framed on the rising edge of TX_EN.
The receive data path is also eight bits wide. RXD[7:0] are sourced by the PHY. When valid data is presented to
the MAC sublayer, the PHY will also assert Receive Data Valid (RX_DV). The rising edge of RX_DV indicates the
beginning of a frame sequence. The PHY drives the reference clock RX_CLK1, so the MAC sublayer can
synchronize data sampling on RXD[7:0]. The PHY may assert RX_ER to indicate frame data is invalid; the MAC
sublayer must consider frames in progress incomplete.
When the MAC operates in half-duplex mode, a switch or node may transmit a jamming pattern. The PHY will
drive the Collision (COL) signal so the MAC may back off transmission and throw away partially received
packet(s). The COL signal will also cause the TX MAC to stop the transmission of a packet. The COL signal is not
driven for full-duplex operation since collisions are undefined. The PHY will drive Carrier Sense (CRS) as a
response to traffic being sent/received. The MAC sublayer can monitor traffic and subsequently drive traffic
LEDs.
Pulse Amplitude Modulated Symbol (PAM5) encoding is leveraged for Gigabit Ethernet wire transmissions.
PAM5 uses five encoding levels: – 2, – 1, 0, 1, and 2. Four symbols are transmitted in parallel on the four
twisted-wire pairs. The four symbols create a code group (an eight-bit octet). The process of creating the code-
group is called 4D-PAM5. Essentially, eight data bits are represented by four symbols. Table 40-1 in the IEEE
802.3ab specification shows the data bit to symbol mapping. The code group representation is also referred to
as a quartet of quinary symbols {TA, TB, TC, TD}. The modulation rate on the wire is measured at 125 Mbaud.
The resultant bandwidth is calculated by multiplying 125 MHz by eight bits, for
1000 Mbps wire speed.
RXD /8
RX_CLK1 RX Media
RX Rx Data RX
Access Decapsulation
RX_ER I/O MAC
Mgmnt
Symbol RX RX_DV
Decoder I/O
COL
CRS
Media
Status
I/O
LED LED
LNKRDY
Control I/O
TXD /8
TX_CLK0 TX Media
Symbol TX TX Tx Data TX
Access
Encoder I/O TX_ER I/O Encapsulation MAC
Mgmnt
TX_EN
Mgmnt
MDC
Control Mgmnt
Mgmnt Mgmnt
MDIO Control
I/O I/O
(MII & GMII)
MDINT
MDI
Register
block
Overview
Broadcom NetXtreme and NetLink controllers require the use of an external non-volatile memory (NVRAM)
device (Flash or SEEPROM), which contains a boot code program that the controller's on-chip CPU core loads
and executes upon release from reset. This external NVRAM device also contains many configuration items that
direct the behavior of the controller, enable/disable various management and/or value-add firmware
components, etc.
All configuration settings are default-configured in the official release binary image files provided in
Broadcom's CD software releases. However, the settings chosen as default by Broadcom may not be what best
suits a particular OEM's application, so some settings may need to be changed by the OEM.
The BCM57785 family introduces a new feature which involves a limited amount of on-chip OTP containing the
following configuration items (with limitations regarding how many times they may be reprogrammed).
The BCM57785 family architecture utilizes a fixed number of OTP bits for each configuration item. The number
of OTP bits allocated for each configuration item exceeds the minimum required number of bits to house a
value for each configuration item. This method allows for a scheme to offer “reprogrammability” of
configuration items (similar to legacy NVRAM), but with a strict limitation to the total number of reprogram
cycles. Each time you reprogram a specific configuration item you use up one subset of the allocated OTP bits
for that item.
Note: All 0's or all 1's cannot be used as valid values for PCI device ID/subsystem ID/sub vendor ID/
MAC address if using internal OTP to store these items.
Details relating to the legacy style NVRAM organization can be found in NetXtreme/NetLink NVRAM Access
Broadcom application note (Netxtreme-AN50X-R). Some of the topics addressed by this application note
include the following:
• Programming NVRAM (sample C code, x86 assembly)
• NVRAM map
• Configuration settings
• Boot code
• Multiple boot agent (MBA), PXE, etc.
Note: NVRAM CRC-32: There are multiple distinct regions contained within the NVRAM map. Each of
these regions has its own CRC-32 checksum value associated with it. If any data element contained
within a region is modified, then that region's CRC-32 value must also be updated. Details relating to
calculating the CRC-32 can be found in Calculating CRC32 Checksums for Broadcom NetLink,
NetXtreme, and NetXtreme II Controllers Broadcom application note (NetXtreme_NetXtremeII-
AN20X-R).
Self-Boot
Some NetLink controllers offer a capability known as self-boot. Self-boot allows the controller to use a very
small, low-cost, external NVRAM device that contains only a very condensed amount of configuration
information, along with any small boot code patches that may be necessary to optimize the functionality of a
particular controller.
Details relating to self-boot can be found in Self Boot Option (5754X_5787X-AN10X-R) and NetXtreme/NetLink
Software Self-Boot NVRAM (NetXtreme-AN40X-R) Broadcom application notes.
Theory of Operation
Several device data structures are common to the receive, transmit, and interrupt processing routines. These
data structures are hardware-related and are used by device drivers to read and update state information.
Descriptor Rings
In order to send and receive packets, the host and the controller use a series of shared buffer descriptor (BD)
rings to communicate information back and forth. Each ring is composed of an array of buffer descriptors that
reside in host memory. These buffer descriptors point to either send or receive packet data buffers. The largest
amount of data that a single buffer may contain is 65535 (64K-1) bytes (The length field in BD is 16 bits).
Multiple descriptors can be used per packet in order to achieve scatter-gather DMA capabilities.
Note: The maximum number of Send BDs for a single packet is (0.75)*(ring size).
The drawing shows a generic host descriptor ring (could be either a send ring or a receive
ring), and demonstrates how the consumer and producer indices are used to determine
which descriptors in the ring are valid at any given moment in time.
1st
Cons
Prod
Offset (bytes) 31 16 15 0
0x00 Host Ring Address
0x04
0x08 Max_len Flags
0x0c NIC Ring Address
• The Max_len field has a different meaning for different types of rings.
– This field indicates the number elements in the ring.
– The valid values for this field are 32, 64, 128, 256, and 512.
• The NIC Ring Address field contains the address where the BD cache is located in the internal NIC address
space. This address is only valid for Receive Producer Rings. The Send Rings and Receive Return Rings do
not require this field to be populated. The location within the NIC address map for Receive Producer Ring
is provided in Section 8: “PCI,” on page 158.
Send Rings
The controller devices covered in this document support only one host based Send Ring.
The Send Ring Producer Index is incremented by host software to add descriptors to the Send Ring (see Figure 11: “Transmit Ring Data Structure
Architecture Diagram,” on page 69). By adding descriptors to the ring, the device is instructed to transmit packets that are composed of the buffers
pointed to by the descriptors. A single transmit packet may be composed of multiple buffers that are pointed to by multiple send descriptors. The
maximum number of send descriptors for a single packet is (0.75)*(ring size).
Transmit Ring Data Scructure is located in the host (as shown below), and the device will keep a local (not shown) copy of the rings.
Send Buffer
Descriptor
Host
Address
length flags Ring Control Block
Host Memory rsvd for firmware VLAN tag
Host Send Ring #1
Host Ring
Address
max_len flags
Host Buffer
Cons NIC Ring Address
RCB
Prod
Mailbox Registers
Offset (Bytes) 31 16 15 0
0x00 Host Address [63:0]
0x04
0x08 Length [15:0] Flags [15:0]
0x0c Reserved VLAN Tag
Note: The UDP checksum engine does not span IP fragmented frames.
• The Length field specifies the length of the data buffer. The lengths for the buffers associated with a given
packet will add up to the length of the packet.
Note: The Ethernet controller does not validate the value of the Length field and may generate an
error on the PCI bus if the Length field has a value of 0. The host driver must ensure that the
Length field is nonzero before enqueueing the BD onto the Send Ring.
• The VLAN Tag field is only valid when the VLAN_TAG bit of Flags field is set. This VLAN Tag field contains
the 16-bit VLAN tag that is to be inserted into an IEEE 802.1Q (and IEEE 802.3ac)-compliant packet by the
controller. If VLAN tag insertion is desired, this field (and the flag) should be set in the first descriptor for
that packet (i.e., the descriptor that points to the buffer that contains the Ethernet header).
Receive Rings
The Ethernet controllers support two types of Receive Descriptor Rings: Producer Rings and Return Rings (see
Figure 12 on page 71). Descriptors in the Producer Rings point to free buffers in the host. When the controller
receives a packet and consumes a receive buffer, the controller will modify and write back the descriptor for
the consumed buffer into the given Receive Return Ring. Basically the Producer Rings contain descriptors that
point to buffers that the controller is free to use, whereas the Return Rings contain descriptors that the device
has used and await processing from host software.
Host
Address
index len
type flags
ip chksum tcp_udp_chsum
error flag vlan tag
reserved
Host Memory
opaque
Ring Control Block
Receive Ring #1
Host Ring Address
max_len flags
Host Buffer
Prod NIC Ring Address
1-(64K-1) Bytes RX BD
1st
RCB #1
Cons
RCB #4
Receive Ring #4
Transmit Ring Data Scructure is located in the host (as shown below), and the device will keep a local (not shown) copy of the rings.
Send Buffer
Descriptor
Host
Address
length flags Ring Control Block
Host Memory rsvd for firmware VLAN tag
Host Send Ring #1
Host Ring
Address
max_len flags
Host Buffer
Cons NIC Ring Address
RCB
Prod
Mailbox Registers
Offset (Bytes) 31 16 15 0
0x00 Host Address [63:0]
0x04
0x08 Length [15:0] Flags [15:0]
0x0c Reserved VLAN Tag
The fields are defined as follows:
• The Host Address field contains the 64-bit host address of the buffer that the descriptor points to. A length
of 0 indicates that the descriptor does not have a buffer associated with it.
• The Flags field contains bits flags that contain control information for the device for transmitting the
packets. The defined flags are listed in Table 7.
Note: The UDP checksum engine does not span IP fragmented frames.
• The Length field specifies the length of the data buffer. The lengths for the buffers associated with a given
packet will add up to the length of the packet.
Note: The Ethernet controller does not validate the value of the Length field and may generate an
error on the PCI bus if the Length field has a value of 0. The host driver must ensure that the
Length field is nonzero before enqueueing the BD onto the Send Ring.
• The VLAN Tag field is only valid when the VLAN_TAG bit of Flags field is set. This VLAN Tag field contains
the 16-bit VLAN tag that is to be inserted into an IEEE 802.1Q (and IEEE 802.3ac)-compliant packet by the
controller. If VLAN tag insertion is desired, this field (and the flag) should be set in the first descriptor for
that packet (i.e., the descriptor that points to the buffer that contains the Ethernet header).
Receive Rings
The Ethernet controllers support two types of Receive Descriptor Rings: Producer Rings and Return Rings (see
Figure 12 on page 71). Descriptors in the Producer Rings point to free buffers in the host. When the controller
receives a packet and consumes a receive buffer, the controller will modify and write back the descriptor for
the consumed buffer into the given Receive Return Ring. Basically the Producer Rings contain descriptors that
point to buffers that the controller is free to use, whereas the Return Rings contain descriptors that the device
has used and await processing from host software.
Host
Address
index len
type flags
ip chksum tcp_udp_chsum
error flag vlan tag
reserved
Host Memory
opaque
Ring Control Block
Receive Ring #1
Host Ring Address
max_len flags
Host Buffer
Prod NIC Ring Address
1-(64K-1) Bytes RX BD
1st
RCB #1
Cons
RCB #4
Receive Ring #4
Offset (bytes) 31 16 15 0
0x00 Host Address
0x04
0x08 Index Length
0x0c Typea Flags
0x10 IP_Cksuma TCP_UDP_Cksum
0x14 Error_Flags VLAN tag
Offset (bytes) 31 16 15 0
0x18 RSS Hashb
0x1C Opaque
a. Reserved if using EAVc mode
b. Receive Time Stamp if using EAVc mode
c. Ethernet Audio Video
• Type — Used internally by the controller. In producer rings it should be set to 0, and in return rings it
should be ignored by host software.
• TCP_UDP_Cksum — Holds the TCP/UDP checksum that the controller calculated for all data following the
IP header given the length defined in the IP header. If the Receive No Pseudo-header Checksum bit is set
(see “Mode Control Register (offset: 0x6800)” on page 524) to 1, then the pseudo-header checksum value
is not added to this value. Otherwise, the TCP_UDP_Cksum field includes the pseudo-header in the
controller’s calculation of the TCP or UDP checksum. If the packet is not a TCP or UDP packet, this field has
no meaning. Host software should zero this value in the producer ring descriptors. If the host is capable of
TCP or UDP checksum off load, then host software may examine this field in the return rings to determine
if the TCP or UDP checksum was correct.
• IP_Cksum — Holds the IPv4 checksum that the controller calculated for the IPv4 header of the received
packet. If the packet is not an IPv4 packet, this field has no meaning. Host software should zero this value
in the producer ring descriptors. If the host is capable of IPv4 checksum off load, then host software may
examine this field in the return rings to determine if the IPv4 checksum was correct. A correct value would
be 0 or 0xFFFF.
• VLAN — Only valid when the VLAN_TAG bit is set. This field contains the 16-bit VLAN ID that was extracted
from an incoming packet that had an IEEE 802.1Q (and IEEE 802.3ac) -compliant header.
• Error_Flags — Contains bits flags that contain error information about an incoming packet that the
descriptor is associated with. The bits in this field are only valid if the FRAME_HAS_ERROR bit is set in the
Flags field in the descriptor. The defined error flags are listed in Table 13 on page 79.
• When the RSS Hash Valid flag bit is 1, the RSS Hash field holds the 32-bit RSS hash value calculated for a
packet. This field should be ignored when the RSS Hash Valid flag bit is zero.
• The Opaque field is reserved for the host software driver. Any data placed in this field in a producer ring
descriptor will be passed through unchanged to the corresponding return ring descriptor.
Status Block
The Status Block is another shared memory data structure that is located in host memory. The Status Block is
32 bytes in length. Host software will need to allocate 32 bytes of non-paged memory space for the Status Block
and set the Status Block Host Address register to point to the host memory physical address reserved for this
structure.
The controller will update the Status Block to host memory prior to a host coalescing interrupt or MSI. The
frequency of these Status Block updates is determined by the host coalescing logic (see “Host Coalescing
Engine” on page 223). Using the software configurable coalescing parameters, the device driver can optimize
the frequency of status block updates for a particular application or operating system.
The Status Block contains some of the Producer and Consumer indices for the rings described in “Descriptor
Rings” on page 65. These Producer and Consumer indices allow host software to know what the current status
of the controller is regarding its processing of the various send and receive rings. From information in the status
block a software driver can determine:
• Whether the Status Block has been recently updated (via a bit in the status word).
• Whether the Link State has changed (via a bit in the status word).
• Whether the controller has recently received a packet and deposited that packet into host memory for a
given ring (via the Receive Return Ring Producer Indices).
• Which host receive descriptors that controller has fetched, and it will consume when future packets are
received (via the Receive Producer Ring Consumer Indices).
• Whether the controller has recently completed a transmit descriptor buffer DMA for a given ring (via the
Send Ring Consumer Indices).
Each MSI-X vector is associated with a status-block structure. A status block is DMAed to the host memory
immediately prior to raising a legacy style interrupt (INTx, MSI) or MSI-X interrupt. Status block formats vary
depending on RSS, EAV mode choices, as well as MSI-X vector number.
Table 14: Status Block Format (MSI-X Single-Vector or INTx — RSS Mode)
Offset 31 16 15 0
0x00 Status Word
0x04 [31:8] Reserved 0x0 [7:0]Status Tag
0x08 Receive Standard Producer Ring Consumer Reserved 0x0
Index
0x0C Reserved 0x0 Reserved 0x0
0x10 Send BD Consumer Index Receive Return Ring Producer Index
0x14 Reserved 0x0 Receive Jumbo Producer Ring Consumer Index
Table 15: Status Block Format (MSI-X Single-Vector or INTx — RSS Mode)
Offset 31 16 15 0
0x00 Status Word
0x04 [31:8] Reserved 0x0 [7:0]Status Tag
0x08 Receive Standard Producer Ring Consumer Receive Return Ring 1 Producer Index
Index
0x0C Receive Return Ring 2 Producer Index Receive Return Ring 3 Producer Index
0x10 Send BD Consumer Index Receive Return Ring 0 Producer Index
0x14 Reserved 0x0 Receive Jumbo Producer Ring Consumer Index
Table 16: Status Block Format (MSI-X Single-Vector or INTx — EAV Mode)
Offset 31 16 15 0
0x00 Status Word
0x04 [31:8] Reserved 0x0 [7:0]Status Tag
0x08 Receive Standard Producer Ring Consumer Receive Return Ring 1 Producer Index
Index
0x0C Receive Return Ring 2 Producer Index Receive Return Ring 3 Producer Index
0x10 Send BD Ring 1 Consumer Index Receive Return Ring 0 Producer Index
0x14 Send BD Ring 2 Consumer Index Receive Jumbo Producer Ring Consumer Index
Table 17: Status Block [0] Format (MSI-X Multivector RSS Mode)
Offset 31 16 15 0
0x00 Status Word
0x04 [31:8] Reserved 0x0 [7:0]Status Tag
0x08 Receive Standard Producer Ring Consumer Reserved 0x0
Index
0x0C Reserved 0x0 Reserved 0x0
0x10 Send BD Consumer Index Reserved 0x0
0x14 Reserved 0x0 Receive Jumbo Producer Ring Consumer Index
Table 18: Status Blocks [1 thru 4] Formats (MSI-X Multivector RSS Mode)
Offset 31 16 15 0
0x00 Status Word {Valid for all Status Blocks}
0x04 [31:8] Reserved 0x0 [7:0] Status Tag[n]
{independent for
each status blocks}
0x08 Reserved 0x0 Receive Return Ring 1 Producer Index
Valid only for Status Block2 else RSVD 0x0
0x0C Receive Return Ring 2 Producer Index Receive Return Ring 3 Producer Index
Valid only for Status Block3 else RSVD 0x0 Valid only for Status Block4 else RSVD 0x0
0x10 Reserved 0x0 Receive Return Ring 0 Producer Index
Valid only for Status Block1 else RSVD 0x0
0x14 Reserved 0x0 Reserved 0x0
Table 19: Status Block [0] Format (MSI-X Multivector EAV Mode)
Offset 31 16 15 0
0x00 Status Word
0x04 [31:8] Reserved 0x0 [7:0]Status Tag
0x08 RBD Standard Producer Ring Consumer Index Reserved 0x0
0x0C Reserved 0x0 Reserved 0x0
0x10 Send BD Ring 1 Consumer Index Reserved 0x0
0x14 Reserved 0x0 Receive Jumbo Producer Ring Consumer Index
Table 20: Status Block [1 thru 4] Format (MSI-X Multivector EAV Mode)
Offset 31 16 15 0
0x00 Status Word {Valid for all Status Blocks}
0x04 [31:8] Reserved 0x0 [7:0] Status Tag[n]
{independent for
each status blocks}
0x08 Reserved 0x0 Receive Return Ring 1 Producer Index
Valid only for Status Block2 else RSVD 0x0
0x0C Receive Return Ring 2 Producer Index Receive Return Ring 3 Producer Index
Valid only for Status Block3 else RSVD 0x0 Valid only for Status Block4 else RSVD 0x0
0x10 Reserved 0x0 Receive Return Ring 0 Producer Index
Valid only for Status Block1 else RSVD 0x0
0x14 Reserved 0x0 Reserved 0x0
Table 21: Status Block [5] Format (MSI-X multivector EAV Mode)
Offset 31 16 15 0
0x00 Status Word
0x04 [31:8] Reserved 0x0 [7:0]Status Tag
0x08 Reserved 0x0 Reserved 0x0
0x0C Reserved 0x0 Reserved 0x0
0x10 Send BD Ring 2 Consumer Index Reserved 0x0
0x14 Reserved 0x0 Reserved 0x0
Table 22: Status Block Host Addresses and INT MailBox Addresses
Table 22: Status Block Host Addresses and INT MailBox Addresses
The Status word field contains bit flags that contain error information about the status of the controller. The
defined flags are listed in Table 23 on page 87.
Introduction
The RX MAC pulls BDs from RX producer rings. The RX BD specifies the location(s) in host memory where packet
data may be written. Figure 15 on page 90 shows the receive buffer descriptor cycle.
All ingress Ethernet frames are classified by the RX rules engine. A class ID is associated to each frame based
on QOS rules setup in the RX MAC (see “Receive Rules Setup and Frame Classification” on page 96). The Receive
List Placement and Receive List Initiator portions of the MAC architecture move BDs to the RX return rings; the
class ID associated to the packet is examined to route the BD to a specific RX return ring.
Once the packet is queued to the RX return ring, the device driver will wait for indication of the same through
the status block update and interrupt from the host coalescing engine. The host coalescing engine will update
the status block and generate a line interrupt or MSI (see “Host Coalescing” on page 217 for further details
regarding interrupts) when a specified host coalescence criteria is met. Once the interrupt is generated, the
host device driver will service the interrupt. The ISR will determine if new BDs have been completed on the RX
Return Rings. Next, the device driver will indicate to the network protocol that the completed RX packets are
available. The network protocol will consume the packets and return physical buffers to the network driver at
a later point.
The BDs may then be reused for new RX frames. The device driver must return the BD to an RX producer ring.
For this purpose, the driver should fill out either the opaque field or index field of the RX BD when inserting/
initializing the BD in an RX Producer ring. When the BD is returned by the device through Return Ring, the
opaque or index data field of the BD will be used by the driver to identify the BD in Producer Ring that
corresponds to the Returned BD in Return Ring. The device driver will then reinitialize the identified BD in
Producer Ring with a new allocated buffer and replenish the Receive Producer Ring with this BD.
RX
Standard
Producer
Ring
Device
MAC
Driver
RX Indicate
DMA Write Engine
Available
RX
Return
Ring 1
RX
Return
Ring 2
RX
Return
Ring 3
RX
Return
Ring 4
A receive producer ring contains a series of buffer descriptors which in turn contain information of host
memory locations to where packets are placed by the Ethernet controller at reception. The limit on the number
of buffer descriptors in receive producer ring is 512.
Figure 16 shows the standard ring RCB for the setup of a host-based standard producer ring.
Receive Buffer Descriptors (BDs) begin on the Receive Producer Ring. The host device driver will populate the
receive producer ring with a specified number of BDs supported by the receive producer ring (see “Receive
Producer Ring” on page 91). When a packet is received, the RX MAC moves the packet data into internal
memory. The Receive MTU Size register (see “Receive MTU Size Register (offset: 0x43C)” on page 367)
specifies the largest packet accepted by the RX MAC; packets larger than the Receive MTU are marked
oversized and are discarded.
511
Offset 31 16 15 0 512
Unlike send buffer descriptors, the receive buffer descriptors cannot be chained to support multiple fragments.
Status Block
The host software manages the producer rings through the Mailbox registers and by using the status block. It
does this by writing to the Mail Box registers when a BD is available to DMA to the Ethernet controller and
reading the status block to see how many BDs have been consumed by the Ethernet controller. The status block
can be seen in “Status Block” on page 80.
The status block is controlled and updated by the Ethernet controller. The status block in host memory is
constantly updated through a DMA copy by the Ethernet controller from an internal status block. The updates
occur at specific intervals and host coalescence conditions that are specified by host software during
initialization of the Ethernet controller. The registers for setting the intervals and conditions are in the Host
Coalescing Control registers (see “Host Coalescing” on page 217) starting at memory offset 0x3c00. The
Ethernet controller DMAs an updated status block to the 32-bit address that is set by the host software in the
Host Coalescing Control registers, 0x3c38.
Among other status, the status block displays the last 16-bit value, BD index that was DMAed to the Ethernet
controller from receive producer ring. The Ethernet controller updates these indices as the recipient or
consumer of the BD from the producer rings.
Mailbox
The host software is responsible for writing to the Mailbox registers (see Table 24: “Mailbox Registers,” on
page 94) when a BD is available from the producer rings for use by the Ethernet controller. Host software
should use the high-priority mailbox region from 0x200– 0x3FF for host standard and the low-priority mailbox
region from 0x5800–0x59FF for indirect register access mode.
The Mailbox registers (starting at memory offset 0x200 for host standard and offset 0x5800 for indirect mode)
contain the following receive producer index register.
Offset Offset
(High-Priority (Low-Priority
Mailboxes for Host Mailboxes for
Standard Mode) Indirect Mode) Register Access
0x200 - 0x207 0x5800 - 0x5807 Interrupt Mailbox 0 RW
0x208 - 0x20F 0x5808 - 0x580F Interrupt Mailbox 1 RW
0x268 - 0x26F 0x5868 - 0x586F Receive BD Standard Producer Ring Producer Index RW
0x280 - 0x287 0x5880 - 0x5887 Receive BD Return Ring 1 Consumer Index RW
0x288 - 0x28F 0x5888 - 0x588F Receive BD Return Ring 2 Consumer Index RW
0x290 - 0x297 0x5890 - 0x5897 Receive BD Return Ring Consumer Index RW
The Receive Producer Ring Producer Index register contains the index value of the next buffer descriptor from
the producer ring that is available for DMA to the Ethernet controller from the host. When the host software
updates the Receive Producer Ring Producer Index, the Ethernet controller is automatically signaled that a new
BD is waiting for DMA. At initialization time, these values must be initialized to zero. These indices are 64-bit
wide; however, the highest index value is only 512 for the receive Producer Ring.
Return rings are the exact opposite of producer rings, except that they are not categorized by the maximum
length receive packets supported. They are actually categorized by priority or class of received packet. The
highest priority return ring is ring 1, and the lowest priority is the last ring (Return Ring 2–Return Ring 4
depending on how many rings are set up by the host software). The Receive Return Ring is configurable to a
value of either 32, 64, 128, 256, or 512.
The Receive Return Ring RCBs are used to set up return rings in much the same way the Receive Producer Ring
RCB is used to set up the receive producer ring. These RCBs for the return rings are set in the Miscellaneous
memory region (SSRAM) at offset 0x200 (this region should not be confused with the register space in the
chip). The RCB max_len field is used to indicate the number of buffer descriptor entries in a return ring. If an
invalid value is set, the Ethernet controller indicates an attention error in the Flow Attention register.
When a packet is received from the LAN, the Ethernet controller DMAs the packet to a location in the host, and
then DMAs the related BD to a return ring. As the producer of this packet to the host, the Ethernet controller
updates the status block producer indices for the related return ring (i.e., return ring 1 to return ring 4 that was
DMAed the BD received packet). These return ring indices can then be read by the host software to determine
the last BD index value of a particular ring that has information of the last received packet.
As the consumer of the received packet, the host software must update the return ring consumer indices in
Mailbox registers Receive BD Return Ring 1 Consumer Index (memory offset 0x280–0x287 for host standard
and 0x5880–0x5887 for indirect mode) through Receive BD Return Ring 4 Consumer Index.
A packet can be accepted or rejected based on the rules initialized into two rules register areas. The packets
can also be classified into groups of packets of higher to lower priority using the rules registers. This occurs
when the packet is directed to a specific return ring. Return rings 1–4 have an inherent priority associated with
them. The priority is from lowest ring number to highest ring number; return ring 1 being the highest priority
ring and return ring 4 being the lowest. The implementation of priority class is based on how many rings the
host software has initialized and made available to the Ethernet controller. As packets arrive, the Ethernet
controller may classify each packet based on the rules. When the host services the receive packet, it can service
the lower numbered rings first.
A rule can be changed by first disabling it by setting 0 into Enable bit (bit 31) in Receive BD Rules Control register
(see Table 26). Wait about 20 receive clocks (rx_clock) and then reenable it when it is programmed with a new
rule. Otherwise, changing the rules dynamically during runtime may cause the rule checker to output
erroneous results because the rule checker is a pipelined design and uses the various fields of the rules at
different clock cycles.
Note: Receive rules cannot be used to match VLAN headers because the VLAN tag is stripped from
the Ethernet frame before the rule checker runs.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Header Class Offset
Defaul
Bit Name R/W Description t
31 E R/W Enable. Enabled if set to 1 –
30 & R/W And With Next. This rule and next must both be true to match. The class –
fields must be the same. A disabled next rule is considered true.
Processor activation bits are specified in the first rule in a series.
29 P1 R/W If the rule matches, the processor is activated in the queue descriptor for –
the Receive List Placement state machine.
28 P2 R/W If the rule matches, the processor is activated in the queue descriptor for –
the Receive Data and Receive BD Initiator state machine.
27 P3 R/W If the rule matches, the processor is activated in the queue descriptor for –
the Receive Data Completion state machine.
26 M R/W Mask If set, specifies that the value/mask field is split into a 16-bit value –
and 16-bit mask instead of a 32-bit value.
25 D R/W Discard Frame if it matches the rule. –
24 Map R/W Map Use the masked value and map it to the class. –
23:18 Reserved R/W Must be set to zero. 0
17:16 Op R/W Comparison Operator specifies how to determine the match: –
• 00 = Equal
• 01 = Not Equal
• 10 = Greater than
• 11 = Less Than
Defaul
Bit Name R/W Description t
15:13 Header R/W Header Type specifies which header the offset is for: –
• 000: Start of Frame (always valid)
• 001: Start of IP Header (if present)
• 010: Start of TCP Header (if present)
• 011: Start of UDP Header (if present)
• 100: Start of Data (always valid, context sensitive)
• 101–111: Reserved
12:8 Class R/W The class this frame is placed into if the rule matches. 0:4, where 0 means –
discard. The number of valid classes is the Number of Active Queues
divided by the Number of Interrupt Distribution Groups. Ring 1 has the
highest priority and Ring 4 has the lowest priority.
7:0 Offset R/W Number of bytes offset specified by the header type. –
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Value
Checksum Calculation
Whether the host software NOS supports checksum offload or not, the Ethernet controller automatically
calculates the IP, TCP, and UDP of received packets as described in RFC 791, RFC 793, and RFC 768, respectively.
Which protocol checksum value is produced can be determined by reading the status flag field in the Receive
Return Ring. The valid flag values in the status flag field are IP_CHECKSUM and TCP_UDP_CHECKSUM. When a
valid checksum is produced, the values of the checksums are found in the corresponding receive buffer
descriptor register. These values should be 0xFFFF for a valid checksum or any other value if the checksum was
incorrectly calculated. Assert the Receive No Pseudo-header Checksum bit of the Mode Control register (see
“Mode Control Register (offset: 0x6800)” on page 524) to not to include Pseudo-header in TCP/UDP
checksums.
In the Receive MAC Mode register (offset 0x468–0x46b), the Keep VLAN Tag Diag Mode bit (bit 10) can be set
to force the Ethernet controller to not strip the VLAN tag from the packet. This is only for diagnostic purposes.
Table 28 shows the frame format with IEEE 802.1Q VLAN tag inserted.
Offset Description
0:5 MAC destination address
6:11 MAC source address
12:13 Tag Protocol ID (TPID)—0x8100
14:15 Tag Control Information (TCI):
• Bit 15:13—IEEE 802.1P priority
• Bit 12—CFI bit
• Bit 11:0—VLAN ID
16:17 The original EtherType
18:1517 Payload
2 Status Block
status word
MailBox Registers unused
Rcv BD Std Producer Ring Index 3 rcv std cons unused
unused unused
TX cons #1 RX prod #1
BCM570X
Family Receive Return Rings in
4 host memory
6
Network 5
Host Memory BD n
The host software must create an array of BD structures in host memory, referred to as a receive producer ring.
Each receive buffer descriptor within a producer ring describes, among other things, the location of a host
memory buffer that is used to store the packets received from the network. When the host software (as the
producer) updates the mailbox register’s producer ring index that corresponds to the receive producer ring,
the Ethernet controller automatically DMAs the BD to itself from the host. When the DMA is completed, the
Ethernet controller (as the consumer) updates the status block’s receive consumer ring index to signal it
successfully consumed the BD. The Ethernet controller keeps this BD in internal memory to know where to put
a packet that is received from the network.
When a packet is received from the network, a BD gets updated with information regarding the received packet
and the packet is DMAed to a location in host memory described by the BD. The Ethernet controller (as the
producer) then updates the receive return ring producer index in the Status Block register corresponding to
one of host memory’s receive return rings, and DMAs the BD to that receive return ring.
It is the responsibility of the host software to setup, initialize, and manage the data structures in host memory,
namely, the receive producer rings and the receive return rings. The producer/consumer indices in the mailbox
and status block are read and updated by the host and Ethernet controller for this purpose.
Overview
RSS is a scalable networking technology that enables receive packet processing to be balanced across multiple
processors in the system while maintaining in-order delivery of the data. The RSS enables packets from a single
network adapter to be processed in parallel on multiple CPUs/cores while preserving in-order delivery to TCP
connections.
Functional Description
The figure below shows the processing of received packets when RSS is enabled. The RSS algorithm is based on
a load-sharing algorithm and performs the following steps.
• Computes a hash on the incoming packet to produce a 32-bit Hash result.
• Performs a lookup in the load balancing table (also called indirection table) using the one to seven least
significant bits of the Hash result to determine which of the n CPUs are processing the packet, where n is
the number of CPUs assigned to process received packets.
• Adds a Base CPU Number to determine the exact CPU that will process the packet.
Indirection
Table
CPU Masked
Result Hash Result
1-7 Bits Hash Hash Result Hash
+ Mask Incoming Packets
(32 Bits) Function
The devices implement the above RSS algorithm in hardware except for the step of adding the Base CPU
Number to the value from Indirection Table. If required, the step of adding the Base CPU Number to the CPU
Result can be done in the main Interrupt Service Routine to determine which CPU will process the packet.
RSS Parameters
Hash Function
The default hash function is the Toeplitz hash. No other hash functions are currently supported, so there is no
configurable parameter.
Hash Type
The fields that are used to hash across the incoming packet. The 5 devices support all the four hash types given
below and the configuration bits for enabling/disabling these hash types are provided in Receive MAC Mode
register at offset 0x468. Any combination of these hash types can be enabled:
• Four-tuple of source TCP Port, source IP version 4 (IPv4) address, destination TCP port, and destination
IPv4 address.
• Four-tuple of source TCP Port, source IP version 6 (IPv6) address, destination TCP port, and destination
IPv6 address.
• Two-tuple of source IPv4 address and destination IPv4 address.
• Two-tuple of source IPv6 address and destination IPv6 address.
Hash Mask
The RSS Hash Mask bits (bits 22:20 of the Receive MAC Mode register at offset 0x468) allow the configuration
of number of hash-result bits that are used to index into the indirection table.
Indirection Table
The table of CPU numbers used for balancing the receive traffic across multiple processors. The Indirection
Table registers 0–15 at offset 0x630–0x66F are implemented for the required 128 entries of the Indirection
Table. The devices support only four Receive Return Rings so each entry of Indirection Table is implemented as
2 bits.
RSS Initialization
The host protocol stack should configure the above RSS parameters before enabling the RSS engine. The RSS
can be enabled by setting the bit-23 of the Receive MAC Mode register at offset 0x468. Normally the RSS
parameters except the Indirection Table are static and will be initialized only during device driver initialization.
Though extremely rare, the protocol stack may change the RSS parameters any time. The devices require a
reset to change any of the hash type, hash mask, and hash key parameters.
If the hash type flags in Receive MAC Mode register (offset 0x468) enable only one type of hash, then any
received packet that does not match the enabled hash type is not hashed. If multiple flags are set, such as If
the TCP/IPv4 and IPv4 hash types (bits 17 and 16 of Receive MAC Mode register at offset 0x468) are enabled,
then if the packet is not a TCP/IPv4 packet but is an IPv4 packet, the hash is performed on just the IPv4 2-tuple.
Further, for this setting of the hash type flags, if the incoming packet is not an IPv4 packet, then no hash is
performed. Because a variety of hash types can be applied on a per-packet basis (including no hash), the hash
type is indicated to the host protocol stack on a per-packet basis. If no hash was performed, then none of the
hash type flags in the receive BD will be set.
Once RSS is initialized and enabled, data transfer can begin. Over a period of time, the host protocol stack may
modify the indirection table to rebalance the processing load. When the indirection table is changed, it is
possible for a short period of time (while the current receive descriptor queues are being processed) for
packets to be processed on the wrong CPU. This is a normal transient condition and should not be a problem.
Introduction
Send Buffer Descriptors (BDs) begin on the Send Producer rings. The device driver updates the Mailbox to
reflect available Send BDs.
• The MAC moves the available Send BDs to device local memory—a cache.
• Next, the MAC selects a BD from the internal cache using priority scheduling.
The physical address, programmed in the Send BD by the host device driver prior to the Mailbox update,
contains the host memory location of the TX packet buffer. The MAC reads the address from Send BD and
schedules a bus master DMA for reading the packet data from host buffer. The packet data will be moved into
device internal buffers from host buffers by Read DMA engine, and all the read buffers of 1 packet are chained
together into a cluster. This cluster is then sent to the transmit MAC which sends the packet data to the
integrated PHY for transmission on Ethernet media.
The write DMA engine will subsequently update the status block to indicate that the Send BD was consumed.
The host driver normally returns the packet buffers to the NOS/protocol so the next packet can reuse that host
physical memory. The send BD is now available for the next TX packet.
Send Rings
The send rings are shared data structures that are used to describe a series of data buffers that will be
transferred onto the network. The shared data structure is called the Ring Control Block (RCB), and the entries
within a ring for describing the data buffers are called the Send Buffer Descriptors (Send BDs).
Note: The maximum number of Send BDs (buffer descriptors) for a single packet is (0.75)*(ring size).
Associated with each ring are two indices that control its operation. These indices are the producer index and
the consumer index, which are not shared between the host software and the Ethernet controller. In the case
of send rings, the host software controls the producer index by adding elements (initializing a Send BD) to the
ring. Similarly, the Ethernet controller controls the consumer index by removing elements (processing a Send
BD) from the ring.
The host software is responsible for maintaining its producer index and updating it by writing to the send ring
producer index mailbox register. The mailbox registers are described in “Mailbox” on page 93, “High-Priority
Mailbox Registers” on page 359 (for offsets 0x200 through 0x3FF), and “Low Priority Mailboxes” on page 517
(for offsets 0x5800 through 0x59FF). The update actually triggers the Ethernet controller to process the send
descriptors starting at its consumer index. As a descriptor is processed, the consumer index is incremented, and
the new index is reflected in a new status block update. Status block is described in “Status Block” on page 80.
When the producer and consumer indices are equal, the ring is empty. When the producer index is one behind
the consumer, the ring is full. Because of this configuration, the producer index always points to an empty slot.
Thus, there will always be at least one empty slot in a ring.
Figure 20 illustrates the relationships between all the components of a send ring.
Send BD 1 Buffer
Send Send BD 2
RCB Send BD 3
Send BD 4 Buffer
Send BD 5
Send BD 6
Send BD 7 Buffer
Consumer Send BD 8
...
Producer Send BD 512
The devices support a host based send ring. The Send BDs of the host based Send Ring will be bus-mastered
from host memory into device local memory. The device driver will program the BDs directly in its memory
space and avoid programmed I/O to the MAC. The Max_Len field in the RCB (see Figure 21) indicates the
maximum number of BDs in the Send Ring. This field can be programmed to either 32, 64, 128, 256, or 512.
The host-based send ring will have up to 512 buffer descriptors, which are periodically and transparently
DMAed to a staging area inside the NIC internal memory where they are waiting to be consumed. The staging
area can hold up to 128 entries per-ring, and Ethernet controller tries to keep the staging area full at all times
by constantly monitoring the consumer and producer index (the algorithm for accomplishing this is beyond the
scope of this manual). The staging areas are located at a starting offset 0x4000 of NIC memory. Figure 22
illustrates the relationship between the send buffer descriptors in host memory and the staging area in NIC
memory.
When the host software initializes new buffer descriptors, its send ring producer index is incremented by the
number of descriptors. The new index is then written to the corresponding send ring host producer index
mailbox register (starting at offset 0x300 for host standard and offset 0x5900 for indirect mode—see “Send BD
Ring Host Producer Index (High Priority Mailbox) Register (offset: 0x300-0x307)” on page 360, which may
trigger the Ethernet controller to DMA the descriptors to its staging area. Eventually, the buffer descriptors are
processed, and the data associated with these descriptors is transferred onto the network.
Send BD 1
Send BD 2 Send BD 1
Send BD 3
..
.
Send BD 4
DMA
Send BD 5 Send BD n
Send BD 6 Send BD n+1
Send BD 7 Send BD n+2
Send BD 8
..
.
..
.
Send BD 128
Send BD 512
Producer
The Ethernet controller maintains the send ring consumer index, which is incremented as it processes the
descriptors. The Ethernet controller informs the host software of its progress by updating the send ring
consumer index in the status block. The host software uses the send ring consumer index and its producer
index to determine the empty slots in the ring. The Ethernet controller implements an algorithm that
periodically DMAs the status block to host memory in an efficient manner.
Checksum Offload
As network speed increases, offloading is becoming an important feature, and the ability to offload tasks from
the host processor aids in the efficiency of the host and in overall system performance. To achieve a significant
performance boost, most operating systems now a days offer a mechanism for the TCP/IP protocol stack to
offload checksum calculations to the device.
The host software can configure the Ethernet controller to calculate IP, TCP, and UDP checksum as described in
RFC 791, RFC 793, and RFC 768 respectively. The first step in checksum calculation is determining the start of
an IP and UDP datagram and TCP segment within a frame, which could vary depending on whether the frame
is tagged (VLAN) or encapsulated with LLC/SNAP header. Then the checksum is computed from the start to the
end of the datagram and inserted into the appropriate location in protocol header. Ethernet controller is
designed to support checksum calculation on all frame types and also on IP datagram and TCP segments
containing options.
For the Ethernet controller to compute the checksum and insert it into the outgoing frame, the host software
must set the appropriate control bits in the send buffer descriptors associated with the frame and seed the
checksum field with zero or with the pseudo header checksum.
The host software enables IP checksum calculation by setting the IP_CHKSUM bits in all the send buffer
descriptors associated with the frame. The Ethernet controller inserts the checksum into the checksum field of
the IP header.
To enable TCP or UDP checksum calculation, the host software must set the TCP_UDP_CKSUM bit in all the
send buffer descriptors associated with the frame containing the entire UDP datagram or TCP segment. The
TCP and UDP checksum engines do not span IP fragmented frames.
The host software can configure the Ethernet controller to disable TCP or UDP pseudo-header checksum
calculation by setting the Mode_Control.Send_No_Pseudo_Header_Checksum bit. When set, the host
software must seed the checksum field in the TCP or UDP header with the pseudo-header checksum. If the
Mode_Control.Send_No_Pseudo_Header_Checksum is cleared, the Ethernet controller computes the
checksum including the pseudo header and inserts it into the checksum field.
When large blocks of data are to be sent over a computer network they must be first broken down to smaller
segments that can pass through all of the network elements such as routers and switches between the source
and destination computers. This process is referred to as segmentation.
For example, a large TCP packet of 64KB (65,536 bytes) of data is usually segmented into 46 segments of 1448
bytes each before being sent over the network through the Ethernet controller chip. With some intelligence in
the controller, the host CPU can hand over a 64k byte TCP packet directly to the controller in a single transmit
request and the controller can break the large TCP packet down into smaller segments of 1448 bytes, add the
TCP, IP, and data link layer protocol headers to each segment, and send the resulting frames over the network.
This significantly reduces the work done by the host CPU.
Some Broadcom Ethernet controllers, such as the BCM57785, also support using jumbo sized frames (up to
9,216 bytes) as the individual frame size into which a large offloaded TCP packet is segmented into.
Note: The UDP checksum engine does not span IP fragmented frames.
Note: The Ethernet controller does not validate the value of the Length field and may generate an
error on the PCI bus if the Length field has a value of 0. The host driver must ensure that the Length
field is nonzero before enqueueing the BD onto the Send Ring.
QuickStart
Follow the steps to enable the LSO:
1. Zero TCP checksum field in offloaded packet (leave IP checksum field alone)
2. Set register 0x0C00[3]=1: Enable HW LSO pre-DMA processing
3. Set register 0x4800[27]=1: Enable hardware processing of LSO IPv4 packets
4. Set register 0x4800[28]=1: Enable hardware processing of LSO IPv6 packets (if desired)
5. Set Send BD Flags[8]=1: CPU pre-DMA
6. Set Send BD Flags[9]=1: CPU post-DMA
7. See LSO Limitations section below
Note: In Broadcom controllers that have a physically separate isochronous (ISO) TX queue, there is a
parallel set of register fields, which mirror that of the normal TX path, for controlling LSO on the ISO
TX path.
Default
Name Bits Access Value Description
Hardware Pre-DMA Enable 3 RW 0 Enable hardware LSO pre-DMA processing
The ISO Send Data Initiator Mode register is applicable only to controllers that have a secondary TX ISO
(Isochronous) queue.
Table 30: ISO Send Data Initiator Mode Register (Offset: 0xD00)
Default
Name Bits Access Value Description
Hardware Pre-DMA Enable 3 RW 0 Enable hardware LSO pre-DMA processing
Default
Name Bits Access Value Description
Hardware IPv6 Post-DMA 28 RW 1 Enable hardware processing of LSO IPv6 packets.
Processing Enable This bit has no effect on Post-DMA processing of
IPv4 packets. This bit when clear disables IPV6
Processing. This bit was not used for controllers
before BCM57785.
Hardware IPv4 Post-DMA 27 RW 0 Enable hardware processing of LSO IPv4 packets.
Processing Enable This bit has no effect on Post-DMA processing of
IPv6 packets. This bit is the TCP Segmentation
Enable bit.
The ISO Read DMA Mode register is applicable only to controllers that have a secondary TX ISO (Isochronous)
queue.
Default
Name Bits Access Value Description
Hardware IPv6 Post-DMA 28 RW 1 Enable hardware processing of LSO IPv6 packets.
Processing Enable This bit has no effect on Post-DMA processing of
IPv4 packets. This bit when clear disables IPV6
Processing. This bit was not used for controllers
before BCM57785.
Hardware IPv4 Post-DMA 27 RW 0 Enable hardware processing of LSO IPv4 packets.
Processing Enable This bit has no effect on Post-DMA processing of
IPv6 packets. This bit is TCP Segmentation Enable
bit.
The ISO related registers are to allow for processing of ISO Ethernet Audio Video (EAV)-related TX traffic. A
physically separate isochronous TX queue exists in some Broadcom Ethernet controllers to support audio/
video traffic applications, which require very precisely timed isochronous launch of TX packets onto the wire.
Note: LSO using jumbo frames is permissible on some Broadcom controllers (i.e. BCM57785). This is
accomplished by appropriately programming the MSS field of the Send BD.
31 15 0
0x0
Host Address 0x4
Host Address
This field is a 64-bit address specifying where the Send Buffer is located in Host memory.
Length[15:0]
This field is the length of the frame or TCP large segment to be transmitted.
VLAN Tag[15:0]
This field is the VLAN Tag to be inserted into the frame if Flags[6] is set to 1.
HdrLen[7:0]
This field is the length of the Ether + IP + TCP Headers to be replicated in each segment arising out of a Large
TCP Segment transmit operation.
The HDRLEN field is split into two fields within the SBD:
• A subfield within the Flags field at a word offset of 0x08
• Adjacent to the MSS field at an offset of 0x0c
This field is used only for LSO buffers. Its value specifies the combined L3 and L4 header length in 4-byte
DWORDS for TCP/IPv4 or TCP/IPv6 packets. The value includes any option headers for IPv4, any extension
headers for IPv6, and any TCP options.
For a TCP/IPv4 packet without IP or TCP options, this field would have a value of 10 (decimal).
For a TCP/IPv6 packet without extension headers or TCP options, this field would have a value of 15 (decimal).
For a TCP/IPv6 packet with a hop-by-hop options extension header of length 8 bytes plus a TCP MSS option (4
bytes), this field would have a value of 18 (decimal).
MSS[13:0]
This field is the size of the TCP segments into which a LSO segment is to be segmented into. Note that the MSS
field has been increased for some NetXtreme controllers (i.e. BCM57785) to hold a value specifying a jumbo
frame size.
Flags
See the table below.
LSO Limitations
The limitations of the SBD are listed below.
• MSS must not be less than 8 Bytes.
• LSO packet must be a TCP packet.
• IP length field must not be incorrect.
• TCP length field must not be incorrect.
• Total offloaded TCP payload length must be greater than the MSS selected in the SBD.
• For all LSO segments, SBD flag bit 8 and 9 (CPU pre-DMA and CPU post-DMA) must be set.
• LSO packet may not be IEEE 802.3 format with LLC and SNAP headers.
• L2 header must be contained within the very first SBD.
• IP header (IPv4 or IPv6), including IP options, must be contained within a single SBD.
• HdrLen[7:0] field must be correct in SBD.
• DONT_GEN_CRC must not be set in a SBD for an LSO packet.
• SNAP field must not be set in the SBD for an LSO packet.
• TCP Header, including TCP Options, must be contained within a single SBD.
• The total length for all headers (L2/L3/L4) combined, plus options, may not exceed 200 bytes.
The driver should zero the TCP checksum field in the offloaded TCP packet, but leave the IP checksum alone.
This requirement may change with newer NetXtreme controllers.
Broadcom drivers enable long burst by default in the Read DMA Mode register (0x4800 bits 17:16 = 11 binary
= 4k byte burst size).
Do not set TXFIFO Underrun Prevention Enable (bit 31) in the Buffer Manager Mode register 0x4400.
Do not set bit 5 (Multiple Segment Enable) in 0xC00 (Send Data Initiator Mode register).
Jumbo Frames
The BCM57785 Family supports jumbo Ethernet frames in both the receive (RX) and transmit (TX) paths. The
jumbo frame architecture and the software interface is nearly identical to that of the legacy NetXtreme Family
controllers which also supported jumbo frames. The related jumbo architectural changes for the BCM57785
Family are described in this section.
The maximum jumbo frame length supported by the BCM57785 Family is 9622B, which may be broken down
as follows:
• 9600B MTU payload
• 14B Ethernet Header
• 4B Ethernet FCS
• Optional 4B of VLAN Tag
• 9622B maximum size limit applies equally to both TX and RX paths
Transmit Side:
• CRC checksum offload of jumbo frames is permitted.
• TCP and IP checksum offload of jumbo frames is permitted.
• TCP segmentation offload (TSO), a.k.a. large segment offload (LSO), of jumbo frames is permitted.
• Jumbo frames are to be constructed out of standard send buffers.
• There is a single send buffer ring which jumbo and standard frames share. The driver may inter-mix jumbo
and standard frames in the send ring without restriction.
• The TX MBUF on-chip memory has be upsized to 22K bytes.
• The behavior of TX jumbo frame processing remains identical to that of standard TX frame processing:
– A TX frame is first completely DMAed into the TX MBUF memory and only then will it be transmitted
onto the wire.
– The TX EMAC treats jumbo frames exactly the same as it treats a standard frame, except for being
cognizant of the length.
– Full-Duplex and Half-Duplex behavior remains the same.
– Host coalescing timing remains identical to that of standard frames.
– A new jumbo frame flag is introduced in the send buffer descriptor (SBD). The driver must set this flag
bit to indicate a jumbo frame (i.e., frame length > 1514 bytes without CRC and VLAN tag fields)
– In Multiple Send Queue mode, all 16 send queues are permitted to post jumbo frames. Thus there are
16 send ring control blocks (RCBs) available in this mode.
Receive Side:
• An additional BD producer ring (the jumbo producer ring) has been introduced.
• The receive side retrieves buffers only from the jumbo producer ring in turn to post a received jumbo
frame. Similarly, the receive side only retrieves buffers from the standard producer ring in turn to post
standard sized frames.
• The jumbo producer ring is populated with BDs of a format known as the Extended Buffer descriptors. This
is different from the standard buffer descriptor format.
• It is important to note that the driver may post extended BDs only in the jumbo producer ring and may
post standard BDs only in the standard producer ring. BD formats may not be interchanged.
• The return rings are heterogeneous. That is, the controller returns both standard BDs and extended BDs in
the same return ring. Intermixing of both types of BDs can happen without any restriction.
• RX MBUF memory has been upsized to at least 32 KB.
• Both 4-tuple and 2-tuple RSS computation and classification are performed over RX jumbo frames.
• There are 4 return rings as per RSS requirements (this is not affected by jumbo frame support).
• Receive CRC calculation and checking is performed on jumbo frames.
• Hardware calculates TCP, UDP, and IP checksums on jumbo frames.
• In IOV mode (I/O Virtualization), all 17 receive queues (virtual receive queues) must be provided with
extended receive BDs. To that end, each VRQ is provided with a dedicated standard receive BD (RBD) ring
and a dedicated jumbo RBD Ring. The BCM57785 Family does not support IOV, but this same jumbo
architecture is present in other closely related NetXtreme controllers which do offer IOV support.
Other:
• Miscellaneous BD memory has been increased over legacy NetXtreme controllers from 6K (4K receive BD +
1K send BD + 1K gencomm) to 51KB (17 KB standard receive BD + 17K jumbo receive BD + 16KB send BD +
1K gencomm). Gencomm describes on-chip memory space used for driver to/from boot code/firmware
communication.
• The structure of the status block has been updated in order to accommodate jumbo frame related
information.
• The controllers memory map has also been updated.
31 15 0
0x0
Host Address 1 0x4
0x8
Host Address 2 0xC
0x10
Host Address 3 0x14
• The Host Address 0 field contains the address of the first buffer in host memory. The host address is in host
address format (64-bit).
• The Host Address N field in the Extended Receive Buffer Descriptor contains the address of the Nth piece
of the buffer in host memory.
• The Index field is used by the host to keep track of the position of the returned buffer descriptor. This field
is passed through opaquely by the controller.
• The Len 0 field is initially set by the host and specifies the length of the first buffer available for receiving
data; this length field is set to the length of the data pointed to by Host Address 0. When an extended BD
is returned to the receive return ring, the Len 0 field is set to the entire length of the data associated with
the buffer descriptor, which is so because the receive return ring contains only a single length field. All BDs
posted to the return ring by the controller are of size 32 bytes, whereas extended receive BDs posted to
the jumbo producer ring by the driver are of size 64 bytes.
Note: In the case of an extended BD, the host is permitted to make Len 0 > 4 KB and practically even
beyond 9.6 KB, such that an entire jumbo frame could be held in a single buffer. In such a scenario,
hardware attempts to post an entire jumbo frame in a single buffer designated by Len 0.
Note: Len 0 is not permitted to be 0. Len2, Len3, or Len 4 may be set to 0, but hardware ignores Len3
and Len 4 when Len2 = 0. Similarly, hardware ignores Len4 when Len3 = 0.
• The Len1, Len2 and Len3 fields contain the respective lengths of the remaining three piece of the buffer in
host memory.
• The Type field is used by the controller internally and should be ignored and need not be set by the host.
• The Flags bits are used to indicate any special processing that is needed in the buffer. Bits that are not
explicitly defined here must be set to zero. See Table 35.
• The IP Checksum field is the checksum of the entire IP header. A correct checksum is 0 or 0xffff.
• The TCP/UDP Checksum field is the checksum of all data following the IP header, for the length defined in
the IP header. If the Receive No Pseudo-header Checksum bit is set, then the pseudo header checksum is
not added to this value. If the bit is set this value includes the pseudo header.
• The Error Flags field contains a bitmask of possible errors. It is only valid if the
BD_FLAGS_FRAME_HAS_ERROR bit (see Table 35) is set in the Flags field.
• The VLAN Tag field is filled in if the BD_FLAGS_VLAN_TAG bit is set in the flags field. It is the 2 byte VLAN
tag that has been extracted from a 802.1Q compliant frame.
• The Reserved field is used internally by the controller. The host should ignore the value of this field.
• The Opaque Data field is reserved for the driver and any data placed here is passed opaquely by the driver
from the receive buffer descriptor in the standard or jumbo receive ring to one of the receive return rings.
The jumbo ring is managed by a producer index and a consumer index as in the case with the standard
producer ring. Whenever host software adds more BDs to the jumbo producer ring, it writes the updated
producer index to the controller via a high-priority mailbox located at the PCIE address range 0x208 – 0x20F.
The producer index register is at 0x3008.
The controller keeps a local copy of the jumbo ring consumer index in register 0x2470. The jumbo ring
consumer index is also reported to the host via the status block. See “Send Buffer Descriptor” on page 124).
There is also a jumbo ring replenishment threshold register 0x2C1C. The controller DMAes BDs from the jumbo
ring in advance and caches them locally in controller memory. The controller initiates DMA of more BDs
anytime the local number of cached BDs falls below the threshold programmed in this register.
The maximum number of BDs that can be held in the jumbo ring is programmed in that ring's ring control block
RCB.
The RCB essentially points to the physical address of the host memory where a producer ring is placed. The
BCM57785 Family uses two RCBs, one for the Standard Ring and one for the jumbo ring. The jumbo ring RCB
is implemented over a set of four registers at the address range 0x2440 – 0x244F. The standard ring RCB register
addresses remain the same at 0x2450 – 0x245F. The send ring RCB and return ring RCBs are memory-mapped.
31 15 2 0
Flags
The host ring address is the host address of the first ring element. The host ring address is in host address
format. In controller-based send rings, the host address is ignored.
The NIC ring address is the address where a portion of a ring is cached in the controller's miscellaneous BD
memory. The driver need not program anything to these fields in most NetXtreme controllers. However, the
BCM57785 Family does require the driver to program non-hardware-default values here.
The Max Len field is interpreted differently for different types of rings. In the case of receive producer rings and
receive return rings, this field indicates the maximum number of entries the ring can hold. The BCM57785
Family imposes constraints for different rings as shown below:
• Receive standard producer ring and send ring: Max Len should be programmed by the host to indicate the
maximum number of entries the ring will hold. The allowable values for the Standard Producer Ring Max
Len are 32, 64, 128, 256, 512, 1024, and 2048.
• Receive jumbo producer ring: Max Len should be programmed by the host to indicate the maximum
number of entries the ring will hold. The allowable values for the jumbo producer ring Max Len are 32, 64,
128, 256 and 1024.
• Receive return rings: Max Len should be programmed by the host to indicate the maximum number of
entries the ring will hold. In case of return rings, the host must program this field to be greater than or
equal to the combined value of Max Len fields of the receive standard producer ring and the receive
jumbo producer ring. For example, if Standard Ring Max Len == 32 and jumbo ring Max Len == 32, then
return ring Max Len must be 64 or higher. This means the allowable values for the return ring Max Len are
32, 64, 128, 256, 512,1024, 2048, and 4096.
The receive standard ring RCB uses the Max Frame Size field to indicate the maximum length of each buffer to
be described by the buffer descriptor placed into the standard ring. In this manner any frame received that is
larger than this value causes the controller to attempt to use a jumbo ring buffer instead of a standard ring
buffer. The Max Frame Size field is unused in the receive jumbo ring RCB, receive return ring RCB and send ring
RCB. The Flags field is described below in Table 36.
31 15 0
0x0
Host Address 0x4
• The Host Address is the 64-bit address where the send buffer is located in host memory.
• The Length[15:0] is the length of the frame or TCP large segment to be transmitted.
• The VLAN TAG[15:0] field is the tag to be inserted in the frame if flags[6] is set to 1.
• The aggregate HDRLEN[7:0] field is the length of the Ethernet+IP+TCP headers to be replicated in each
segment arising out of a large TCP segment (LSO). (See Flags also.)
• The MSS[13:0] field is the size of the TCP segments into which a LSO segment is to be chopped up into.
Note that it has been increased to hold the value of a jumbo frame size. The Flags field of SBD is shown in
Table 37 below.
Status Block
The status block has been modified in order to accommodate the jumbo producer ring's consumer index.
The status block is a data structure in the host memory. The host driver uses this data structure to trace the
packet receive and transmission status and resource usage. Its length is 24 bytes. The driver needs to configure
the status block host address register to point to the physical address in host memory for this data structure.
The BCM57785 Family will update the status block in host memory (via DMA) prior to a host coalescing
interrupt or MSI/MSI-X. The frequency of these status block updates is determined by the host coalescing logic.
The two status block update interrupt triggers are RX/TX coalescing timer and RX/TX maximum coalesced
frame count threshold.
A new field to indicate the Receive Jumbo Producer Ring Consumer Index is added to the BCM57785 Family's
Legacy RSS mode status block. The updated structure of the status block is shown in Table 38 below.
Offset 31 16 15 0
0x00 Status Word
0x04 Reserved 0x0 Status Tag[7:0]
0x08 Receive Standard Producer Ring Consumer Receive Return Ring 1 Producer Index
Index
0x0C Receive Return Ring 2 Producer Index Receive Return Ring 3 Producer Index
0x10 Send BD Consumer Index Receive Return Ring 0 Producer Index
0x14 Reserved 0x0 Receive Jumbo Producer Ring Consumer Index
The status tag field contains a unique 8-bit tag value in bits 7:0 when the status tagged status mode bit of the
miscellaneous Host Control register 0x68 is set to 1. The status tag can be returned to mailbox 0 register 0x200
in field 31:24 by the host driver. When the remaining mailbox 0 register bits 23:0 are written to 0, the tag field
of mailbox 0 is compared with the tag field of the last status block to be DMAed into host memory. If the tag
returned is not equivalent to the tag of the last status block DMAed to the host, the interrupt state is entered.
Receive return ring 0 is the default return ring. If RSS is disabled all packets are assigned to this default ring.
There is no status block data structure in the controller memory space, but the host can access the current
index through the register space.
Misc BD Memory
The Misc BD memory has been increased to 10 KB. The miscellaneous BD memory and the TX MBUF memory
are physically the same memory, but a partition is hardwired. The miscellaneous BD memory holds four
structures:
• On-chip send BD cache
• On-chip standard receive BD cache
• On-chip jumbo receive BD cache
• Software gencomm area (driver/firmware communication shared memory area)
Send Interface
The driver essentially does not see any change in the send interface due to the jumbo frame feature. The only
difference is that the stack is now allowed to construct larger frames (i.e., up to 9622 bytes long) out of send
buffers.
Note: The controller is able to handle a single send buffer of length > 4K bytes and all the way up to
9622 bytes.
As in the case with previous controllers, the driver maintains a buffer descriptor ring (send ring), which allows
for the “gather” management of transmit frame data. The production of send side packets by the driver is
communicated to the controller via the Send Producer Ring Index Mailbox register. An update of the send BD
ring producer index mailbox triggers the controller to begin DMA of the corresponding buffer descriptor. The
consumption of send side packets by the controller is communicated back to the driver via the send consumer
index, which is returned in the status block and periodically DMAed to the host by the controller.
Note: The RCB's host ring address field points to the first
element of the Ring in the host . The length of the ring can
be programmed to be 32, 64, 128, 256, or 512 entries.
Send Buffer Descriptor
31 0
Host Address Send Ring Control
Host length flags Block
Memory rsvd for firmware VLAN tag
Host Send Ring
31 0
Host Ring Address
st
ho
in max_len flags
Host Buffer n ( <= 9622B) ing
Cons ar Unused
s to ory
t
in em
Send Host BD po m
B
1st RC
Prod
Host Buffer n+1 Send Host BD
TX Cons Index references
a specific BD in the ring
Mailbox
Registers
63 0
Status Block (24 bytes) TX Host Ring Prod Index
TX Host Ring Prod Index
Status Block references a specific BD in the
31 0 ring The mailbox registers reside on-chip starting at offset
Status Word 0x5800. Each mailbox register is 64 bits wide. Wrting the
Status Tag lower 32 bits, triggers and event in the HW. SW updates the
The Status block resides in the NIC memory space RX Std Cons Rcv Return #1 TX Host Ring producer index to indicate that that there are
and is periodically DMA'd to the host whenever Rcv Return #2 Rcv Return #3 buffer descriptors ready for the HW to process.
the TX/RX coalescing timers expire, or whenever TX Cons Index Rcv Return #0
the RX/TX max coalesced frames thresholds are
Resvd RX Jumbo Cons
met. SW can examine the TX consumer indices in
the status block to determine which packets have
been sent by the HW.
Receive Interface
As mentioned previously, the receive side has added another producer ring called the jumbo producer ring.
This means the driver maintains two buffer descriptor rings (receive producer rings) that provide free data
buffer space into which the controller can place received frame data. The production of receive-side buffers by
the driver is communicated to the device via the rEceive Producer Ring Index(s) Mailbox registers. An update
of a receive BD ring producer index mailbox triggers the device to begin DMA of the corresponding buffer
descriptor(s). The consumption of receive side buffers by the device is communicated to the driver via the
receive consumer index, which is returned via the status block and periodically DMAed to the host by the
controller.
The controller fetches RX BDs in anticipation of RX frames and caches the BDs in the controller. The cached BDs
are stored in the Misc BD Memory. There is a set of rules that govern placement of packets in buffers:
• All standard sized frames, that is, frames less than or equal to the Max Frame Size field of the standard
RCB, typically 1522 bytes or less, are placed in buffers retrieved from the RX standard producer ring.
• Hence the host must ensure that buffers pointed to by the standard BDs are at least of that size.
• In case the host creates a standard ring buffer that is smaller than Max Frame Size and an RX frame larger
than the buffer size (but <= Max Frame Size) arrives, the controller attempts to place the frame in such a
buffer and ends up truncating the frame.
• RX frames larger than Max Frame Size are placed in buffers retrieved from the RX jumbo producer ring.
• Extended buffers placed in the jumbo producer ring must provide an aggregated space of 9622 bytes or
higher. Otherwise, jumbo frames might be truncated by the controller during placement.
Note: The RCB's host ring address field points to the first
element of the Ring in the host . The length of the ring can
be programmed to be 32, 64, 128, 256, or 512 entries.
Receive Buffer Descriptor
31 0
Host Address
RX Std Host BD
1st Mailbox
63 Registers 0
TX Std Ring Prod Index
Prod
Host Buffer n+1 RX Std Host BD
RX Jumbo Ring Control
31 Block 0
Host Ring Address
Host Buffer m (<= 9622B) RX Jumbo Producer Ring
RX Ext Host BD
max_len flags
NIC Ring Address
Cons
Status Block (28 bytes)
Status Block 1st
31 0 Mailbox
Status Word 63 Registers 0
Status Tag TX Jumbo Ring Prod Index
The Status block resides in the NIC memory space RX Std Cons Rcv Return #1 Prod
and is periodically DMA'd to the host whenever Rcv Return #2 Rcv Return #3
the TX/RX coalescing timers expire, or whenever TX Cons #1 Rcv Return #0 The mailbox registers reside on-chip starting at offset
the RX/TX max coalesced frames thresholds are 0x5800. Each mailbox register is 64 bits wide. Wrting the
Resvd RX Jumbo Cons
met. SW can examine the TX consumer indices in lower 32 bits, triggers and event in the HW . SW updates the
the status block to determine which packets have TX Host Ring producer index to indicate that that there are
been sent by the HW. buffer descriptors ready for the HW to process .
The BCM57785 Family fills up receive buffers with RX frame data and returns the buffers to the host via receive
return rings. The members of a return ring are simply RX buffer descriptors. Both types of descriptors, that is,
standard or extended, are returned to the same return ring. As mentioned previously, due to practical reasons,
extended buffer descriptors are truncated before posting into a return ring so that the actual size of all BDs
posted to the return ring are the same (see “Receive Return Ring(s)” on page 123).
Due to RSS, there are four return rings in the BCM57785 Family. However, when RSS is disabled all RX frames
are posted to Ring 0 while the other three rings remain inactive. In any case, standard and jumbo frames may
be intermixed in any return ring as the order of placement strictly follows the order of frame reception.
The controller maintains four producer indexes associated with the four return rings. The availability of receive-
side packets by the device is communicated to the driver via the receive return ring producer indices, which is
delivered via the status block periodically when it is DMAed to the host by the controller.
The consumption of receive return packets by the driver is communicated to the controller via the receive
return consumer ring index mailbox register.
RX Std Host BD
1st Mailbox
63 Registers 0
RX Return Ring 0 Cons Index
Prod
RX Frame #3 (<= 1522B) RX Ext Host BD
RX Return Ring 3
31 Control Block 0
) Host Ring Address
=9 622B RX Std Host BD
RX Return Ring 3
#2 (< max_len flags
r am e
RX F Cons
NIC Ring Address
The legacy NetXtreme design has limitations in LSO hardware. In the case of the BCM57785 Family, these
limitations also exist. Below is the list of such limitations:
• MSS may not be less than 8 bytes
• LSO packet must be a TCP packet
• IP length field must not be incorrect
• TCP length field must not be incorrect
• Total offloaded TCP payload length must be greater than the MSS selected by SBD
• For all LSO segments, the SBD flag bit 8 and 9 (CPU pre-DMA and CPU post-DMA fields) must be set.
• LSO packet may not be IEEE 802.3 format with LLC and SNAP headers
• The total length of IP header (including IP option for IPv4, extension headers for IPv6) and TCP header
(including TCP option) may not be more than 200 bytes. Note: post_dma_proc can support only up to 2
MBUFs worth of packet header data. 1st Mbuf gives: 128, Mbuf-header (8B), Frame Header field (40B) =
80B; 2nd Mbuf gives: 128, Mbuf Header (8B) = 120B. Hence the total space for all headers, which includes
all L2/L3/L4 combined, and options cannot exceed 200 bytes.
The Read DMA (RDMA) engine cannot support LSO packets with the above listed attributes. Any such LSO
configurations may cause the RDMA engine to lockup and/or exhibit abnormal behavior.
Receive BD Jumbo Producer Ring Index (High Priority Mailbox) Register (offset:
0x270)
Table 39: Receive BD Jumbo Producer Ring Index (High Priority Mailbox) Register (offset: 0x270)
Default
Name Bits Access Value Description
Received BD 7:0 RW 0 The Receive BD Extended Producer Ring Index register
jumbo Producer contains the index of the next buffer descriptor for the
Ring Index extended producer ring that will be produced in the host for
the controller to DMA into controller memory. Host
software writes this register whenever it updates the
extended producer ring. This register must be initialized to
0.
Default
Name Bits Access Value Description
Host Address High 31:0 RW 0 The host ring address is the host address of the first ring
element.
The host ring address is in host address format.
Default
Name Bits Access Value Description
Host Address Low 31:0 RW 0 The host ring address is the host address of the first ring
element.
The host ring address is in host address format.
Default
Name Bits Access Value Description
Max Length 31:16 RW 0 Specifies the number of entries for Jumbo ring based on bit-
mask
Reserved 15:2 R/O 0 –
Disable Ring 1 RW 0 Set to disable the use of the ring
Reserved 0 RO 0 Set to use the extended receive buffer descriptors
Default
Name Bits Access Value Description
NIC Address 31:0 RW 0 The NIC ring address is the controller address of the first ring
element.
Note: Driver must write 0x00007000 to this register for the BCM57785 family of controllers. Unlike most
legacy NetXtreme controllers, the hardware default value cannot be used in this register.
Receive Diagnostic Data and Receive BD Ring Initiator Local NIC Jumbo Receive
BD Consumer Index (offset: 0x2470)
This set of registers keeps track of the current DMAs queued to move receive data from the controller to the
host. The receive data and receive BD initiator maintains the state of the indices by keeping two local copies,
a copy of the controller's return ring producer index and a copy of the controller's receive BD consumer index.
The local return ring producer index is set to the value placed in the DMA descriptor. The local controller
receive return consumer index is also set to the value placed in the DMA descriptor.
Table 44: Receive Diagnostic Data and Receive BD Ring Initiator Local NIC Jumbo Receive BD Consumer Index
(offset: 0x2470)
Default
Name Bits Access Value Description
Reserved 31:8 RO 0 Reserved
Local Received BD Jumbo 7:0 RO 0 Current Jumbo Received BD Index consumed by
Producer Ring consumed RDI. It means that the RBD index have been used
Index by incoming RX packets.
Default
Name Bits Access Value Description
Reserved 31:8 RO 0 Reserved
Local Received BD Jumbo 7:0 RO 0 Current Jumbo Received BD Index requested by
Producer Ring requested RBDI for BD fetching. Note that this index is
Index different from MB producer index and also
different from the index indicated by RBDC.
Default
Name Bits Access Value Description
Reserved 31:10 RO 0 –
BD Number 9:0 RW 0 Number of buffer descriptors indicated by the receive
producer index for the DMA engine to initiate a transfer of
buffer descriptors for replenishing the ring.
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
NIC Jumbo Receive BD 8:0 RW – –
Producer Index
Table 48: NIC Receive BD Consumer Index Register (offset: 0x3C50 – 0x3C58)
Default
Name Bits Access Value Description
Reserved 31:8 RO 0 –
NIC Jumbo Receive BD 7:0 RW – Current Jumbo Received BD have been fetched by
Producer Index RDMA module and are available for incoming RX
packets.
Default
Name Bits Access Value Description
Local Diagnostic Receive 9:0 RW 0 Current Receive Return Ring 0 index value in HC
Return Ring 0 index value module before applying RCB bit-mask value. The
maximum value is 1023 for the BCM57785 Family.
This value will be masked by the RCB bit-mask in
WDMA module before be DMAed in status block.
Default
Name Bits Access Value Description
Received BD jumbo 7:0 RW 0 The Receive BD Extended Producer Ring Index
Producer Ring Index register contains the index of the next buffer
descriptor for the extended producer ring that will
be produced in the host for the controller to DMA
into controller memory. Host software writes this
register whenever it updates the extended
producer ring. This register must be initialized to
0.
Default
Name Bits Access Value Description
Large RX Ring Sizes 16 RW 0 When this bit is 1, following are the maximum allowable
Receive Ring sizes:
Standard Producer Ring == 2048
Jumbo Producer Ring == 1024
Receive Return Ring == 4096
When this bit is 0, following are the maximum allowable
Receive Ring sizes:
Standard Producer Ring == 512
Jumbo Producer Ring == 256
Receive Return Ring == 1024
The NIC address is a controller-internal memory address where the controller caches a portion of a ring to
achieve faster, higher performance access to buffer descriptors.
• Jumbo RCB:
Only the host address and ring size are applicable to the receive return RCB.
• Receive MBUF low water mark 0x4414 = 0x7E (program to this value only when jumbo enabled)
Receive MBUF high water mark 0x4418 = 0xEA (program to this value only when jumbo enabled)
Read DMA watermark register 0x4410 = 0x0
• Standard replenish threshold register 0x2C18 is typically 1/8 of total receive BDs in host memory.
Jumbo replenish threshold register 0x2C1C is typically 1/8 of total Receive BDs in host memory.
• EMAC MTU register 0x43C: Program this register based on max packet size.
Scatter/Gather
Most often, the host software requests the NIC to transmit a frame that spans several physical fragments that
are arbitrary in size and buffer alignment. This requires the Ethernet controller to gather all these fragments
during a DMA process into a continuous data stream for transmission.
The ability to scatter/gather a frame lessens the restriction on the host software and increases overall system
performance.
Example: A TCP/IP protocol stack could preconstruct the MAC and IP headers in separate buffers that are
combined with the payload to form a complete frame. Since the header data are fairly constant during a
TCP or UDP session, the stack could use the same header buffers for the next frame.
The Ethernet controller uses a buffer descriptor for describing a physical fragment. There are two types of
buffer descriptors; the Receive MAC processes receive buffer descriptors (Receive BD) and the Transmit MAC
processes send buffer descriptors (Send BD).
Figure 30 illustrates the relationship between a frame consisting of multiple fragments and their corresponding
send buffer descriptors.
Frag 2
Buffers
Frag 5
Buffer 1
Buffer 2 Tx FIFO Tx MAC
Frag 4 Buffer 3
Buffer 4
Buffer 5
Frag 1
DMA
To transmit a frame, the host software sets up consecutive buffer descriptors in a send ring. Each buffer
descriptor describes a physical fragment of a frame. As an example, the above figure illustrates a frame
consisting of five fragments that are scattered throughout host memory. Frag1, the first fragment, is at the start
of the frame, and Frag5, the last fragment, is at the end of a frame. For each fragment, there is a corresponding
buffer descriptor, SendBd1 through SendBd5. These buffer descriptors must be initialized in the send ring in a
consecutive order, SendBd1 to SendBd5. The last send buffer descriptor of a frame must have the PACKET_END
bit of Send BD Flags field set to indicate the end of a frame.
Table 28 on page 100 shows the frame format with 802.1Q VLAN tag inserted.
The Ethernet controller allows the host software to enable or disable tag insertion on a per-packet basis. To
send a frame with a VLAN tag, the host software must initialize the first send buffer descriptor of a packet with
the VLAN tag value and set the VLAN_TAG bit of Send BD Flags field (see “Send Rings” on page 106).
Figure 31 and Figure 32 on page 140 show the basic driver flow to send a packet.
Send BD 1
Frame
Send BD 2
Buffer 1 Send BD 3
1 Send BD 4
Buffer 2
Send BD 5 Status
Buffer 3 Send BD 6 Block
Send BD 7
Send BD 8
7
...
2
SendBD 512
4
3
NIC Memory
NIC Memory
Send Consumer
Send BD 1
6 Index
Status
...
Block
Send Producer Send BD n 5
Index Send BD n+1
Send BD n+2
...
Buffer 1 FIFO
FIFO
Tx TX
Tx
SendBD 128 Buffer 2 Info
Buffer 3 Info MAC
MAC
Is the NIC enabled to send packets? No Return appropriate error code to OS.
Yes
Yes
Fill out a Send BD with the info (address, Get the physical address and length of
Get the virtual address and length of
length, flags) that corresponds to this the next physical fragment for the
the next buffer in packet
physical host fragment virtual buffer
Yes
No
Is this the last virtual buffer
for this packet?
Yes
Reset
A hardware reset initiated by the PCI reset signal will initialize all PCI configuration registers and device MAC
registers to their default values. The driver reset via the Core Clock Blocks Reset bit (see “Miscellaneous
Configuration Register (offset: 0x6804)” on page 526) will also initialize all non-sticky registers to their default
values. The content of the device internal memory remains unchanged after warm reset (any reset with the
power supplied to the device).
At the end of the reset, the on-chip RX RISC executes a small on chip ROM code. This code loads an executable
image contained in an attached NVRAM and referred to as the boot code. This boot code allows at least the
following fields to be initialized to different values to support product variations (for additional details, see
Section 3: “NVRAM Configuration,” on page 63).
• Vendor ID
• Device ID
• Subsystem Vendor ID
• Subsystem Device ID
• Possible PHY initialization
The boot code may have additional functionality such as PXE that must be acquiesced while the host software
is running.
Example: An NDIS driver issues a device reset via the Core Clock Blocks Reset bit (see “Miscellaneous
Configuration Register (offset: 0x6804)” on page 526). After the reset is completed, the RX RISC begins
executing the boot code as if the power was first applied to the device. However, the NDIS driver must have
a mechanism to prevent the PXE driver from running and the boot code must be able to distinguish
between a power-on reset and a reset initiated by the host software. The host software and the boot code
could implement a reset handshake by using shared memory at offset 0x0b50 as a software mailbox (see
“Firmware Mailbox” on page 206).
The BCM57785 family of Ethernet controllers supports a boot code mechanism known as “self-boot”. For self-
boot the boot code image is stored in internal ROM rather than in an external NVRAM. So there is no loading
of a boot code image from external NVRAM when resetting in the self-boot scenario.
However, there may still be a very small external NVRAM device which may contain some configuration items
and possibly boot code “patches” to be applied to the ROM'd self-boot boot code. Refer to the following
Broadcom Application Notes for additional self-boot and general NVRAM access information:
• 5754X_5787X-AN10X-R “Self Boot Option”
• NetXtreme-AN40X-R “NetXtreme/NetLink Software Self-Boot NVRAM”
• NetXtreme-AN50X-R “NetXtreme®/NetLink® NVRAM Access”
The BCM57785 family Ethernet controller allows a NIC to have up to four MAC addresses (offset 0x410–0x42F)
that are used for hardware packet reception filtering. However, most host software will initialize the registers
of the four MAC addresses to the same MAC address since a NIC usually has only one MAC address.
When flow control is enabled on the Ethernet controller, the MAC Address 0 is used as the source address for
sending PAUSE frames (see “Pause Control Frame” on page 676).
Packet Filtering
All four MAC hash registers are used so that register 1 bit-32 is the most significant hash table entry and register
4 bit-0 is the least significant hash table entry. This follows the normal big-endian ordering used throughout the
Ethernet controller. Since there are 128 hash table entries, 7 bits are used from the CRC. When hash table is
extended to 256 entries, 8 bits from the CRC will be used as hash index.
The MAC hash registers are ignored if the receive MAC is in promiscuous mode.
Generating CRC
The following steps describe a method to calculate the CRC with the resulting 32-bit quantity having reversed
bit order (i.e., most significant bit x31 of the remainder is right-most bit). The data should be treated as a
stream of bytes. Set remainder to 0xFFFFFFFF. For each bit of data starting with least-significant bit of each
byte:
1. If right-most bit (bit-0) of the current remainder XORed with the data bit equal 1,
then remainder = (remainder shifted right one bit) XOR 0xEDB88320,
else remainder = (remainder shifted right one bit).
2. Invert remainder such that remainder = ~remainder.
Remainder is CRC checksum.
Right-most byte is the most significant and is to be sent first.
Swap bytes of CRC if big-endian byte ordering is desired.
Checking CRC
The following steps describe a method to check a stream of bytes, which has a CRC appended.
1. Set remainder to 0xFFFFFFFF.
2. For each bit of data starting with least-significant bit of each byte:
If right-most bit (bit-0) of the current remainder XORed with the data bit equal 1,
then remainder = (remainder shifted right one bit) XOR 0xEDB88320,
else remainder = (remainder shifted right one bit).
3. Remainder should equal magic value 0xDEBB20E3 if CRC is correct.
Host software can enable the reception of all multicast frames including broadcast frames by setting all four
multicast hash registers to 0xFFFFFFFF.
The following C code fragment illustrates how to initialize the multicast hash table registers. The code fragment
computes the indices into hash table from a given list of multicast addresses and initializes the multicast hash
registers.
Unsigned long HashReg[4];
Unsigned long j, McEntryCnt;
Unsigned char McTable[32][6]; // List of multicast addresses to accept.
// Initialize the McTable here.
McEntryCnt = 32;
// Initialize the multicast table registers.
HashReg[0] = 0; // Mac_Hash_Regsiter_0 at offset 0x0470.
HashReg[1] = 0; // Mac_Hash_Register_1 at offset 0x0474.
HashReg[2] = 0; // Mac_Hash_Register_2 at offset 0x0478.
HashReg[3] = 0; // Mac_Hash_Register_3 at offset 0x047c.
for(j = 0; j < McEntryCnt; j++)
{
unsigned long RegIndex;
unsigned long Bitpos;
unsigned long Crc32;
Crc32 = ComputeCrc32(McTable[j], 6);
// The most significant 7 bits of the CRC32 (no inversion),
// are used to index into one of the possible 128 bit positions.
Bitpos = ~Crc32 & 0x7f;
// Hash register index.
RegIndex = (Bitpos & 0x60) >> 5;
// Bit to turn on within a hash register.
Bitpos &= 0x1f;
// Enable the multicast bit.
HashReg[RegIndex] |= (1 << Bitpos);
}
The following C routine computes the Ethernet CRC32 value from a given byte stream. The routine is called
from the above code fragment.
// Routine for generating CRC32.
unsigned long
ComputeCrc32(
unsigned char *pBuffer, // Buffer containing the byte stream.
unsigned long BufferSize) // Size of the buffer.
{
unsigned long Reg;
unsigned long Tmp;
unsigned long j, k;
Reg = 0xffffffff;
for(j = 0; j < BufferSize; j++)
{
Reg ^= pBuffer[j];
for(k = 0; k < 8; k++)
{
Tmp = Reg & 0x01;
Reg >>= 1;
if(Tmp)
{
Reg ^= 0xedb88320;
}
}
}
return ~Reg;
}
Broadcast Setup/Configuration
The host software may configure the Ethernet controller to discard the received broadcast frames by using two
receive rules as defined below. The Ethernet controller parses all incoming frames according to these receive
rules and discards those frames that have a broadcast destination address (see “Receive Rules Setup and Frame
Classification” on page 96 for more details on setting up the receive rules).
The following is a sample of the two receive rules for discarding broadcast frames.
Rule1 Control: 0xc2000000 Rule1 Mask/Value: 0xffffffff
Rule2 Control: 0x86000004 Rule2 Mask/Value: 0xffffffff
Initialization Procedure
This section describes the initialization procedure for the MAC portion of the NetXtreme family of devices.
1. Enable MAC memory space decode and bus mastering. If the device has not been initialized previously
(power-on reset), the host software must enable these bits to be able to issue the core clock reset in Step 6.
Set the Bus_Master and Memory_Space bits in the PCI Configuration Space Command register (see PCI
“Status and Command Register (Offset: 0x04) — Function 0” on page 243).
2. Disable interrupts. Set the Mask_Interrupt bit in the Miscellaneous Host Control register (see
“Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253).
3. Write the T3_MAGIC_NUMBER (0x4B657654 = “KevT”) to the device memory at offset 0xB50 to notify the
bootcode that the following reset is a warm reset (driver initiated core_clocks reset).
4. Acquire the NVRAM lock by setting the REQ1 bit of the Software Arbitration register (see “Software
Arbitration Register (Offset 0x7020)” on page 564) and then waiting for the ARB_WON1 bit to be set.
5. Clear the Fast Boot Program Counter register (Offset 0x6894) and enable the Memory Arbiter as specified
in Step 10. Also initialize the Misc Host Control register as specified in Step 11.
6. Reset the core clocks. Set the CORE_Clock_Blocks-Reset bit in the General Control Miscellaneous
Configuration register (see “Miscellaneous Configuration Register (offset: 0x6804)” on page 526). The
GPHY_Power_Down_Override bit (bit 26) and the Disable_GRC_Reset_on_PCI-E_Block bit (bit 29) should
also be set to 1.
7. Wait for core-clock reset to complete. The core clock reset disables indirect mode and flat/standard modes.
Software cannot poll the core-clock reset bit to deassert since the local memory interface is disabled by the
reset. Driver should delay minimum of 1 millisecond at this point.
8. Disable interrupts. Set the Mask_PCI_Interrupt_Output bit in the Miscellaneous Host Control register (see
“Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253). The bit was reset after the
core_clock reset and interrupts must be masked off again.
9. Enable MAC memory space decode and bus mastering. Set the Bus_Master and Memory_Space bits in the
PCI Configuration Space Command register (see “Status and Command Register (Offset: 0x04) — Function
0” on page 243).
10. Enable the MAC memory arbiter. Set the Enable bit in the Memory Arbiter Mode register (see “Memory
Arbiter Mode Register (offset: 0x4000)” on page 462).
11. Initialize the Miscellaneous Host Control register (see “Miscellaneous Host Control Register (offset:
0x68) — Function 0” on page 253).
a. Set Endian Word Swap (optional). When the host processor architecture is big-endian, the MAC may
wordswap data when acting as a PCI target device. Set the Enable_Endian_Word_Swap bit in the
Miscellaneous Host Control register.
b. Set Endian Byte Swap (optional). When the host processor architecture is big-endian, the MAC may
byteswap data when acting as a PCI target device. Set the Enable_Endian_Byte_Swap bit in the
Miscellaneous Host Control register.
c. Enable the indirect register pairs (see “Indirect Mode” on page 162). Set the Enable_Indirect_Access bit
in the Miscellaneous Host Control register.
d. Enable the PCI State register to allow the device driver read/write access by setting the
Enable_PCI_State_Register bit in the Miscellaneous Host Control register.
12. Set Byte_Swap_Non_Frame_Data and Byte_Swap_Data in the General Mode Control register (see “Mode
Control Register (offset: 0x6800)” on page 510).
13. Set Word_Swap_Data and Word_Swap_Non_Frame_Data (optional). When the host processor
architecture is little-endian, set these additional bits in the General Mode Control register (see “Mode
Control Register (offset: 0x6800)” on page 510).
14. Configure the Port Mode bits of the Ethernet MAC Mode register (see “EMAC Mode Register (offset:
0x400)” on page 354) to GMII for all devices supporting copper Ethernet Media. Wait for 40 ms.
15. Poll for bootcode completion. The device driver should poll the general communication memory at 0xB50
for the one's complement of the T3_MAGIC_NUMBER (i.e. 0xB49A89AB). The bootcode should complete
initialization within 1000 ms for flash devices and 10000 ms for SEEPROM devices.
16. Enable/disable any required bug fixes. Refer to the applicable errata document for information on any
errata that should be worked around by enabling/disabling the control bits of chip bug fixes if any are
applicable.
17. Enable Tagged Status Mode (optional) by setting the Enable_Tagged_Status_Mode bit of the Miscellaneous
Host Control register (see “Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253).
For additional information on Tagged Status mode see “Interrupt Processing” on page 217.
18. Clear the driver status block memory region. Write zeros to the host memory region where the status block
will be DMAed (see “Status Block” on page 80).
19. Configure the DMA Write Water Mark in the DMA Read/Write Control register (see “DMA Read/Write
Control Register (offset: 0x6C) — Function 0” on page 247). If the Max Payload Size of PCIe Device Control
register is 128 bytes, set the DMA write water mark bits (bits19-21) of DMA Read/Write Control register to
011b (for a water mark of 128 bytes). Otherwise (max payload size is 256 bytes or more), set the DMA write
water mark bits (bits 19 – 21) of DMA Read/Write Control register to 111b (for a watermark of 256 bytes).
20. Set DMA byte swapping (optional). If the host processor architecture is big-endian, the MAC may byte swap
both control and frame data when acting as a PCI DMA master. Set the Byte_Swap_Non-Frame_Data,
Byte_Swap_Data and Word_Swap_Data bits in the General Mode Control register (see “Mode Control
Register (offset: 0x6800)” on page 510).
21. Configure the host-based send ring. Set the Host_Send_BDs bit in the General Mode Control register (see
“Mode Control Register (offset: 0x6800)” on page 510).
22. Indicate Driver is ready to receive traffic. Set the Host_Stack_Up bit in the General Mode Control register
(see “Mode Control Register (offset: 0x6800)” on page 510).
23. Configure TCP/UDP pseudo header checksum offloading. This step is relevant when TCP/UDP checksum
calculations are offloaded to the device. The device driver may optionally disable receive and transmit
pseudo header checksum calculations by the device by setting the Receive_No_PseudoHeader_Checksum
and Send_No_PseudoHeader_Checksum bits in the General Mode Control register (see “Mode Control
Register (offset: 0x6800)” on page 510). If the Send_No_PsuedoHeader_Checksum bit is set, the host
software should make sure of seeding the correct pseudo header checksum value in TCP/UDP checksum
field. Similarly, if the Receive_No_PsuedoHeader_Checksum bit is set, the device driver should calculate
the pseudo header checksum and add it to the TCP/UDP checksum field of the received packet.
24. Configure MAC Mbuf memory pool watermarks (“DMA MBUF Low Watermark Register (offset: 0x4414)”
on page 465, and “MBUF High Watermark Register (offset: 0x4418)” on page 466). Broadcom has run
hardware simulations on the Mbuf usage and strongly recommends the settings shown in the table below.
These settings/values establish proper operation for 10/100/1000 speeds.
Table 55: Recommended BCM57XX Ethernet Controller Memory Pool Watermark Settings
Note: The Low WaterMark Max Receive Frames register (0x504) specifies the number of good frames
to receive after RxMbuf Low Watermark has been reached. The driver software should make sure
that the MAC RxMbuf Low WaterMark is greater than the number of Mbufs required for receiving the
number of frames as specified in 0x504. The first Mbuf in the Mbuf chain of a frame has 80 bytes of
packet data while each of the subsequent Mbufs [except the last Mbuf] has 120 bytes for packet data.
The last Mbuf in the chain has the rest of the packet data, which can be up to 120 bytes.
25. Configure flow control behavior when the RX Mbuf low watermark level has been reached (see table below
for “Low Watermark Maximum Receive Frame Register (offset: 0x504)” on page 367.
Table 56: Recommended BCM57XX Ethernet Controller Low Watermark Maximum Receive Frames Settings
26. Enable the buffer manager. The buffer manager handles the internal allocation of memory resources for
send and receive traffic. The Enable and Attn_Enable bits should be set in the Buffer Manager Mode
register (see “Buffer Manager Mode Register (offset: 0x4400)” on page 464.
27. Set the BD ring replenish threshold for the RX producer ring. The threshold values indicate the number of
buffer descriptors that must be indicated by the host software before a DMA is initiated to fetch additional
receive descriptors used to replenish used receive descriptors. The recommended configuration value for
the Standard Receive BD Ring Replenish Threshold (see “Standard Receive BD Producer Ring Replenish
Threshold Register (offset: 0x2C18)” on page 409) is 0x19.
28. Initialize the standard receive buffer ring. Host software should write the ring control block structure (see
“Ring Control Blocks” on page 122) to the Standard Receive BD Ring RCB register (see “Standard Receive BD
Ring RCB Registers” on page 406). Host software should be careful to initialize the host physical memory
address based on allocation routines specific to the OS.
29. Initialize the Max_len/Flags Receive Ring RCB register (0x2458). Note that beginning with BCM57785 and
BCM5718 families of controllers, field 15:2 no specifies the maximum expected size of a receive frame (it
was formerly “Reserved”).
30. Initialize the Receive Producer Ring NIC Address register (offset: 0x245C) to a value of 0x6000 for the
BCM57785 Family.
35. Disable unused receive return rings. Host software should write the RCB_FLAG_RING_DISABLED bit to the
flags field of the ring control blocks of all unused receive return rings.
36. Initialize receive return rings. The receive return ring RCBs are located in the miscellaneous memory region
from 0x200 to 0x2FF. Host software should be careful to initialize the host physical memory address based
on allocation routines specific to the OS. The Max_Len field indicates the ring size and it can be configured
to either 32 or 64 or 128 or 256 or 512. The NIC RingAddress field of the RCB has a hardware power-on
default value that is invalid for receive return rings, and the driver should set NIC Ring Address to 0x6000.
37. Initialize the Receive Producer Ring mailbox registers. The driver should write the value 0x00000000 (clear)
to the low 32 bits of the receive BD standard producer ring index mailbox (see “Receive BD Standard
Producer Ring Index (High Priority Mailbox) Register (offset: 0x268-0x26f)” on page 352).
Note: Host software must insure that on systems that support more than 4 GB of physical memory,
send rings, receive return rings, producer rings, and packet buffers are not allocated across the 4 GB
memory boundary. For example, if the starting memory address of the standard receive buffer ring is
below 4 GB and the ending address is above 4 GB, a read DMA PCI host address overflow error may
be generated (see “Read DMA Status Register (offset: 0x4804)” on page 473.
Note: The standard RX producer threshold value should be set very low. Some OSs may run short of
memory resources and the number of BDs that are made available decrease proportionally.
Note: The maximum number of send BDs for a single packet is (0.75)*(ring size).
38. Configure the MAC unicast address. See “MAC Address Setup/Configuration” on page 142 for a full
description of unicast MAC address initialization.
39. Configure random backoff seed for transmit. See the Ethernet Transmit Random Backoff register (see
“Ethernet Transmit Random Backoff Register (offset: 0x438)” on page 359). Broadcom recommends using
the following algorithm: Seed = (MAC_ADDR[0] + MAC_ADDR[1] + MAC_ADDR[2] + MAC_ADDR[3] + MAC_ADDR[4]
+ MAC_ADDR[5]) & 0x3FF
40. Configure the message transfer unit (MTU) size. The MTU sets the upper boundary on RX packet size;
packets larger than the MTU are marked oversized and discarded by the RX MAC. The MTU bit field in the
Receive MTU Size register (see “Receive MTU Size Register (offset: 0x43C)” on page 367) must be
configured before RX traffic is accepted. Host software should account for the following variables when
calculating the MTU:
• VLAN TAG
• CRC
• Jumbo frames enabled
41. Configure the Inter-Packet Gap (IPG) for transmit. The Transmit MAC Lengths register (see “Transmit MAC
Lengths Register (offset: 0x464) ” on page 363) contains three bit fields: IPG_CRS_Length, IPG_Length, and
Slot_Time_Length. The value the 0x2620 should be written into this register.
Note: An incorrectly configured IPG introduces far-end receive errors on the MAC's link partner.
42. Configure default RX return ring for nonmatched packets. The MAC has a rules checker, and packets do not
always have a positive match. For this situation, host software must specify a default ring where RX packet
should be placed. The bit field is located in the Receive Rules Configuration register (see “Receive Rules
Configuration Register (offset: 0x500)” on page 367).
43. Configure the number of receive Lists. The Receive List Placement Configuration register (see “Receive List
Placement Configuration Register (offset: 0x2010)” on page 402) allows host software to initialize QOS
rules checking. For example, a value of 0x181 (as used by Broadcom drivers) breaks down as follows:
• One interrupt distribution list
• Sixteen active lists
• One bad frames class
44. Write the Receive List Placement Statistics mask. Broadcom drivers write a value of 0x7BFFFF (24 bits) to
the Receive List Placement Stats Enable Mask register (see “Receive List Placement Statistics Enable Mask
Register (offset: 0x2018)” on page 403).
45. Enable RX statistics. Assert the Statistics_Enable bit in the Receive List Placement Control register (see
“Receive List Placement Statistics Control Register (offset: 0x2014)” on page 402).
46. Enable the Send Data Initiator mask. Write 0xFFFFFF (24 bits) to the Send Data Initiator Enable Mask
register (see “Send Data Initiator Statistics Mask Register (offset: 0xC0C)” on page 386).
47. Enable TX statistics. Assert the Statistics_Enable and Faster_Statistics_Update bits in the Send Data Initiator
Control register (see “Send Data Initiator Statistics Control Register (offset: 0xC08)” on page 385.
48. Disable the host coalescing engine. Software needs to disable the host coalescing engine before configuring
its parameters. Write 0x0000 to the Host Coalescing Mode register (see “Host Coalescing Mode Register
(offset: 0x3C00)” on page 454).
49. Poll 20 ms for the host coalescing engine to stop. Read the Host Coalescing Mode register (see “Host
Coalescing Mode Register (offset: 0x3C00)” on page 454) and poll for 0x0000. The engine was stopped in
the previous step.
50. Configure the host coalescing tick count. The Receive Coalescing Ticks and Send Coalescing Ticks registers
(see “Receive Coalescing Ticks Register (offset: 0x3C08)” on page 455 and “Send Coalescing Ticks Register
(offset: 0x3C0C)” on page 456) specify the number of clock ticks elapsed before an interrupt is driven. The
clock begins ticking after RX/TX activity. Broadcom recommends the settings shown in the table below.
Table 57: Recommended BCM57XX Ethernet Controller Host Coalescing Tick Counter Settings
51. Configure the host coalescing BD count. The Receive Max Coalesced BD and Send Max Coalesced BD
registers (see “Receive Max Coalesced BD Count Register (offset: 0x3C10)” on page 456 and “Send Max
Coalesced BD Count Register (offset: 0x3C14)” on page 457 specify the number of frames processed before
an interrupt is driven. Broadcom recommends the settings shown in the table below.
Table 58: Recommended BCM57XX Ethernet Controller Host Coalescing Frame Counter Settings
52. Configure the max-coalesced frames during interrupt counter. While host software processes interrupts,
this value is used. See the Receive Max Coalesced Frames During Interrupt and Send Max Coalesced Frames
During Interrupt registers (see “Receive Max Coalesced BD Count Register (offset: 0x3C10)” on page 456
and “Send Max Coalesced BD Count Register (offset: 0x3C14)” on page 457. Broadcom recommends the
settings shown in the table below.
Table 59: Recommended BCM57XX Ethernet Controller Max Coalesced Frames During Interrupt
Counter Settings
53. Initialize host status block address. Host software must write a physical address to the Status Block Host
Address register (see “Status Block Host Address Register (offset: 0x3C38)” on page 458, which is the
location where the MAC must DMA status data. This register accepts a 64-bit value in register 0x3C38 (high
order 32 bits) and 0x3C3C (low order 32 bits).
54. Enable the host coalescing engine (0x3C00 bit 1).
55. Enable the receive BD completion functional block. Set the Enable and Attn_Enable bits in the Receive BD
Completion Mode register (see “Receive BD Completion Mode Register (offset: 0x3000)” on page 410).
56. Enable the receive list placement functional block. Set the Enable bit in the Receive List Placement Mode
register (see “Receive List Placement Mode Register (offset: 0x2000)” on page 401).
57. Enable DMA engines. Set the Enable_FHDE, Enable_RDE, and Enable_TDE bits in the Ethernet Mac Mode
register (see “EMAC Mode Register (offset: 0x400)” on page 354.
58. Enable and clear statistics. Set the Clear_TX_Statistics, Enable_TX_Statistics, Clear_RX_Statistics, and
Enable_TX_Statistics bits in the Ethernet Mac Mode register (see “EMAC Mode Register (offset: 0x400)” on
page 354).
59. Delay 40 microseconds.
60. Configure the General Miscellaneous Local Control register (see “Miscellaneous Local Control Register
(offset: 0x6808)” on page 513). Set the Interrupt_On_Attention bit for MAC to assert an interrupt whenever
any of the attention bits in the CPU event register are asserted.
61. Delay 100 microseconds.
62. Configure the Write DMA Mode register (see “Write DMA Mode Register (offset: 0x4C00)” on page 493).
The following bits are to be asserted:
• Enable-starts the functional block
• Write_DMA_PCI_Target_Abort_Attention_Enable
• Write_DMA_PCI_Master_Abort_Attention_Enable
• Write_DMA_PCI_Parity_Attention_Enable
• Write_DMA_PCI_Host_Address_Overflow_Attention_Enable
• Write_DMA_PCI_FIFO_Overerrun_Attention_Enable
• Write_DMA_PCI_FIFO_Underrun_Attention_Enable
• Write_DMA_PCI_FIFO_Overwrite_Attention_Enable
• Write_DMA_Local_Memory_Read_Longer_Than_DMA_Length
63. Set bit-29 of the Write DMA Mode register (see “Write DMA Mode Register (offset: 0x4C00)” on page 493)
to enable the host coalescence block fix that configures the device to send out status block update before
the interrupt message.
64. Delay 40 microseconds.
65. Configure the Read DMA Mode register (see “Read DMA Programmable IPv6 Extension Header Register
(offset: 0x4808)” on page 474). The following bits are asserted:
• Enable-start functional block
• Read_DMA_PCI_Target_Abort
• Read_DMA_PCI_Master_Abort
• Read_DMA_PCI_Parity_Error
• Read_DMA_PCI_Host_Overflow_Error
• Read_DMA_PCI_FIFO_Overrun_Error
• Read_DMA_PCI_FIFO_Underrun_Error
• Read_DMA_PCI_FIFO_Overread_Error
• Read_DMA_Local_Memory_Write_Longer_Than_DMA_Length
66. Delay 40 microseconds.
67. Enable the receive data completion functional block. Set the Enable and Attn_Enable bits in the Receive
Data Completion Mode register (see “Receive Data Completion Mode Register (offset: 0x2800)” on
page 408).
68. Enable the send data completion functional block. Set the Enable bit in the Send Data Completion Mode
register (see “Send Data Completion Mode Register (offset: 0x1000)” on page 393).
69. Enable the send BD completion functional block. Set the Enable and Attn_Enable bits in the Send BD
Completion Mode register (see “Send BD Completion Mode Register (offset: 0x1C00)” on page 399).
70. Enable the Receive BD Initiator Functional Block. Set the Enable and
Receive_BDs_Available_On_Receive_BD_Ring in the Receive BD Initiator Mode register (see “Receive BD
Initiator Mode Register (offset: 0x2C00)” on page 408).
71. Enable the receive data and BD initiator functional block. Set the Enable and Illegal_Return_Ring_Size bits
in the Receive Data and Receive BD Initiator Mode register (see “Receive Data and Receive BD Initiator
Mode Register (offset: 0x2400)” on page 405).
72. Enable the send data initiator functional block. Set the Enable bit in the Send Data Initiator Mode register
(see “Send Data Initiator Mode Register (offset: 0xC00)” on page 385).
73. Enable the send BD initiator functional block. Set the Enable and Attn_Enable bits in the Send BD Initiator
Mode register (see “Send BD Initiator Mode Register (offset: 0x1800)” on page 397).
74. Enable the send BD selector functional block. Set the Enable and Attn_Enable bits in the Send BD Selector
Mode register (see “Send BD Ring Selector Mode Register (offset: 0x1400)” on page 395).
75. Replenish the receive BD producer ring with the receive BDs.
76. Enable the transmit MAC. Set the Enable bit and the Enable_Bad_TxMBUF_Lockup_fix bit in the Transmit
MAC Mode register (see “Transmit MAC Mode Register (offset: 0x45C)” on page 362). Optionally, software
may set the Enable_Flow_Control to enable 802.3x flow control.
77. Delay 100 microseconds.
78. Enable the receive MAC. Set the Enable bit in the Receive MAC Mode register (see “Receive MAC Mode
Register (offset: 0x468)” on page 363). Optionally, software may set the following bits:
• Enable_Flow_Control-enable 802.3x flow control
• Accept_oversized-ignore RX MTU up to 64K maximum size
• Promiscuous_Mode-accept all packets regardless of dest address
• No_CRC_Check-RX MAC does not check Ethernet CRC
• Various Hash enable bits if using RSS mode (receive-side scaling)
79. Delay 10 microseconds.
80. Set up the LED Control register (0x40C). The Broadcom driver uses a value of 0x800 when initializing this
register.
81. Activate link and enable MAC functional blocks. Set the Link_Status bit in the MII Status register (see “MII
Status Register (offset: 0x450)” on page 360) to generate a link attention.
82. Disable auto-polling on the management interface (optional) by writing 0xC0000 to the MI Mode register
(see “MII Mode Register (offset: 0x454) ” on page 361).
83. Set Low Watermark Maximum Receive Frame register (offset: 0x504) to a value of 1 for the BCM57785
Family of controllers.
84. Configure D0 power state in PMSCR. See “Power Management Control/Status Register (offset: 0x4C) —
Function 0” on page 243. Optional-the PMCSR register is reset to 0x00 after chip reset. Software may
optionally reconfigure this register if the device is being moved from D3 hot/cold.
85. Set up the physical layer and restart auto-negotiation. For details on PHY auto-negotiation, refer to the
applicable PHY data sheet.
86. Set up multicast filters. Refer to “Packet Filtering” on page 142 for details on multicast filter setup.
/*
* Controller EEE initialization
*/
/*
* Link status interrupt handler
*/
break;
}
else
{
// Disable LPI requests
val = reg_read(0x36B0);
val &= 0xFFFFFF7F;
reg_write(0x36B0, val);
After the controller is fully initialized, the following algorithm may be used to verify EEE link
status:
i=0
while(i < 100)
{
if ((mii_read(0x11) & 0x100) == 0x100)
{
if ((mii_read(0x19) & 0x700) == 0x700)
{
//Assert LPI
reg_write(0x36b0,(reg_read(0x36b0) | 0x80))
break;
}
else
{
ms_delay(500);//delay 500 milliseconds
i++;
}
}
if (i >= 100)
{
Link_not_detected();
}
Section 8: PCI
Configuration Space
Description
PCI, PCI-X®, and PCIe devices must implement sixteen 32-bit PCI registers. These registers are required for a
device to have PCI compliance. The format and layout of these registers is defined in the PCI 2.2 specification.
Capability registers provide system BIOS and Operating Systems visibility into a set of optional features, which
devices may implement. Although the capability registers are not required, the structure and mechanism for
chaining auxiliary capabilities is defined in the PCI specification. Both software and BIOS must implement
algorithms to fetch and program capabilities fields accordingly. Refer to section 6.7 of the PCI SIIG 2.2
specification. Additional PCI configuration space may be used for device-specific registers. However, device-
specific registers are not exposed to system software, according to a specification/standard. System software
cannot probe device specific registers without a predetermined understanding of the device and its
functionality. In summary, three types of PCI configuration space registers may be exposed by any particular
device:
• Required
• Optional capabilities
• Device specific
Network devices implement large quantities of registers, and these registers could consume huge amounts of
PCI configuration space. PCI configuration access is not very efficient, on a performance basis.
Example: Intel x86 architectures use two I/O mapped I/O addresses 0xCF8 and 0xCFC for host-based access
to PCI configuration space. Should a host device driver access these I/O addresses on every device read/
write, CPU overhead would grow greatly. Generally, host device drivers should not use PCI configuration
space for standard I/O and control programming. There is one special case—Universal Network Device
Interface (UNDI) drivers. UNDI drivers may not have access to host memory mapped registers when
operating in real-mode; thus, an indirect mode of access is necessary. The Ethernet controller implements
a PCI indirect mode for memory, registers, and mailboxes access. A specific example of a device driver,
which uses indirect mode, is the Preboot Execution (PXE) driver. PXE drivers may be stored in either option
ROMs or directly in the system BIOS.
Most host device drivers use register blocks, which are mapped into host memory. Memory Mapped I/O is an
efficient mechanism for PCI devices to use system resources. The type and extent of this memory mapping
depends upon the MAC’s configuration (see the operational characteristics subsection). A typical PCI device
will decode a range of physical (bus) addresses, which do not conflict with physical memory or other PCI
devices. Each device on the PCI bus will request a range of physical memory, and the PnP BIOS will assign
mutually exclusive resources to that device. The size and range of resource is based upon each device’s
hardwired programming of the BAR. The Ethernet controller implements two modes of memory mapped I/O—
Standard and Flat. I/O mapped I/O is not supported by the Ethernet controller, and there are no I/O space
registers.
Note: The PCI BAR 0 register is only reset to 0 after a hard reset, otherwise it maintains its value over
GRC and PCI resets.
Two programmable blocks expose Ethernet controller functionality to host software. The first is a register
block. The second is a memory block. The register and memory blocks map into address spaces based on
processor context. For example, the Ethernet controller has an on-chip RISC processor. This RISC processor will
have an internal view of the register and memory blocks. This view is one large contiguous and addressable
range, where the register block maps starting at offset 0xC0000000. Conversely, host processors have two
entirely different views. When the Ethernet controller is configured in standard mode, the register block is
mapped into a 64K host memory range. The host processor must use a memory window or indirect mode to
access the memory block. It is fundamental to understand that the register and memory blocks are not
necessarily tied together. The PCI mode and processor context all affect how software views both blocks (see
Figure 33).
Ethernet
Register Block Controller Local Memory
Block
0xC0000000 2
PCI Configuration 0x00000000
Space Shadow
0xC0000100
Rsvd Internal
0xC00002001 Memory
1
Priority Mailboxes
0xC00004001
2
Registers 0x00020000
0xC0008000
Memory Window
0xC0010000
Rsvd
0xC0030000
Rx CPU
Scratchpad
Reserved
0xC0038000
ROM
1. The high-priority mailboxes are at offset 0x200 through 0x3FF for host standard, and the low-priority mailboxes are at
offset 0x5800 through 0x59FF for indirect mode.
2. The local memory addresses in this diagram apply to standard and internal views only. Refer to the section on memory maps
and pool configuration.
The following components are involved in Ethernet controller configuration space mapping:
• Base Address registers
• Standard mode map mode
• Flat memory map mode
• Indirect access mode
• Configuration space header
• Host memory
• MAC registers
• MAC local memory
Functional Overview
DeviceFunctions:
Single Function = 0
Multi-Function = 1
Note: BIOS programmers should take special care to read bit_7 in PCI Header Type register (Offset
0x0E) before scanning the Ethernet controller PCI configuration space.
Single function PCI devices may decode access to non-implemented device functions in two ways, per Section
3.2.2.3.4 of the PCI 2.2 specification:
• A single function device may optionally respond to all function numbers as the same.
• May decode the function number field and respond only to function 0.
The Ethernet controller single function chips follow the stated technique #1— BIOS code scanning
multifunctions get a target response from function(s) 1–7, but these functions are essentially shadows of
function 0. Software that programs to function(s) 1–7 is remapped to function 0.
The header region is required by the PCI 2.2 specification. These registers must be implemented. The
capabilities registers are optional; however, they must adhere to section 6.7 of the PCI SIIG 2.2 specification.
Each capability has a unique ID, which is well-defined. The capabilities are chained using the Next Caps field,
in the capability register. The last capability will have a Next Caps field, which is zeroed.
Indirect Mode
Host software may use indirect mode to access the Ethernet controller resources, without using Memory
Mapped I/O. Indirect mode shadows MAC resources to PCI configuration space registers. These shadow
registers can be read/written by system software through PCI configuration space registers. The Ethernet
controller indirect Mode registers expose the following MAC resources:
• Registers
• Local Memory
• Mailboxes
Indirect mode access can be used in conjunction with Standard Mode PCI access. Indirect mode has no
interdependency on other PCI access modes and is a mode in itself.
Note: Host software must assert the Indirect_Mode_Access bit in the Miscellaneous Host Control
register (see “Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253) to
enable indirect mode.
Note: If indirect register access is performed using memory write cycles (i.e., by accessing the
Register_Base_Address and Register_Data registers through memory mapped by the PCI BAR
register), as opposed to PCI configuration write cycles, the host software must insert a read command
to the Register_Base_Address register between two consecutive writes to the
Register_Base_Address and Register_Data registers.
0x00000400
Address may be
located anywhere
BCM57XX
Ethernet
Controller
Address may be Registers
located anywhere
0x00008000
BusX
DeviceY
Function Z Not Accessible
via Register
Register Base Address
Indirect Mode
0x00038000
Rx CPU
ROM
...
0x00038800
Note: If Indirect Memory Access is performed using memory write cycles (i.e., by accessing the
Memory_Window_Base_Address and Memory_Window_Data registers through memory mapped by
the PCI BAR register), as opposed to PCI configuration write cycles, the host software must insert a read
command to the Memory_Window_Base_Address register between two consecutive writes to the
Memory_Window_Base_Address and Memory_Window_Data registers.
Address may be
located anywhere
Internal
Memory
BusX
DeviceY
Function Z
Notice that all these UNDI shadows are the first or primary ring and not all the rings are shadowed into PCI
configuration space. For example, Receive Return rings 2–16 do not have shadow registers. UNDI drivers only
require a minimal set of registers to provide basic network connectivity. Functionality is the most important
consideration. Fifteen additional receive return rings would extend the size of the Device Specific portion of
the PCI Configuration Space registers.
The UNDI shadow registers alias three registers in the Ethernet controller register block (see Figure 37 on page
168).
0x00000400
BusX
DeviceY
Low Priority
Function Z Mailbox Region Not Aliased
...
0x00005868
Rx BD Std Ring
Producer Index
0x0000586F
UNDI Rx BD Return Ring
Consumer Index Mailbox
BCM57XX
MAC
0x0005880 Registers
Rx BD Return Ring 1
0x000588F Consumer Index
UNDI Tx BD NIC
Producer Index Mailbox
0x0005980
Tx BD Ring 1
NIC Producer Index
0x00005987
0x00005BFF
Not Aliased
0x00008000
...
Standard Mode
Standard mode is the most useful memory mapped I/O view provided by the Ethernet controller (see
Figure 38). 64K of host memory space must be made available. The PnP BIOS or OS will program BAR0 and
BAR1 with a base address where the 64K address region may be decoded. The BAR registers point to the
beginning of the host memory mapped regions where Ethernet controller can be accessed.
BAR + 0x000000FF
Reserved
BAR + 0x000001FF
High Priority
Mailboxes
BAR + 0x000003FF
Registers
Memory
Window
BAR + 0x0000FFFF
The Ethernet controller resources listed in the following are decoded in the 64K address block.
32K is partitioned for MAC control registers and 32K available for a memory access window. Range 0x0000–
0x00FF is a complete shadow of the PCI configuration space registers—host software can also read/write to
the Ethernet controller’s PCI configuration space registers via the host memory map. Host software may use
the shadow registers to change PCI register contents and avoid PCI configuration cycles (transactions). Again,
using the host memory map is slightly more efficient. The MAC’s control/status registers are mapped from
0x0400–0x8000. See Section 11: “Ethernet Controller Register Definitions” on page 145 for complete register
and bit definitions. Finally, the memory window range is 0x8000–0xFFFF. This 32K window is set in the PCI
Configuration space using the Memory_Window_Base_Address register (see Figure 39). Bits 23:15 set the
window aperture and bits 14:2 are effectively ignored/masked off. Bits 14–2 are relevant when host software
uses memory indirection and the Memory_Window_Data register.
Figure 40 on page 171 shows how the 32K window can float in the Ethernet controller’s local memory. The
window aligns on 32K boundaries.
Example: The memory window may start on the following addresses: 0x8000, 0x10000, and 0x18000. The
window aperture may be positioned in the internal memory range 0x00000000 to 0x0001FFFF. When host
software reads/writes to PCI_BAR + 32K + OFFSET in the host memory space, the Ethernet controller
translates this read/write access to Memory_Window_Base_Address + OFFSET. Host software must not
read/write from any address greater than PCI_BAR + 64K, since this memory space is not decoded by the
Ethernet controller. Such an access may be decoded by another device, or simply go unclaimed on the PCI
bus. Figure 40 on page 171 shows the relationship between the Memory_Window_Base_Address register
and the Memory Window.
Standard Mode
Memory Window
PCI Configuration Space Host Memory Address Space Local Memory Address Space
0x00000000 0x00000000
32K
BusX Physical
DeviceY Memory
Function Z
Window may be
located anywhere
...
Mem Wnd
Base Addr
Internal
Host software may
access the BCM57XX
Ethernet Controller Window may be
local memory using Registers located anywhere
this window 32K
Memory
Window
32K 32K
0x00020000
Physical
BusX
Memory
DeviceY
Function Z
0x00000000 PCI Cfg Space Registers
BAR0
(Shadow Copy)
BAR1 Reserved
0x00000200
High Priority Mailboxes
...
0x00000400
Registers
0x00008000 Memory
Window
Reserved
0x00100000
IRQ Mailbox 0-3
Reserved
0x00110000
General Mailbox 1-8
Reserved
0x00130000
Rx BD Producer Index
Reserved
Rx BD Return Ring 1-4
Consumer Index
Reserved 32 MB
0x00180000
Tx BD Ring
Host Producer Index
Reserved
0x001C0000
Tx BD Ring
NIC Producer Index
Reserved
0x01000000
Memory
0x01FFFFFF
Physical 0x00000000
Memory
Device Internal
0x00000000 PCI Cfg Space Registers Memory
(Shadow Copy)
Reserved
0x00000200
High Priority Mailboxes
0x00000400
Registers Memory Window
0x00008000
Memory
Window
Window may be
Reserved located anywhere
0x00100000
IRQ Mailbox 0-3
Reserved
0x00110000
General Mailbox 1-8
Reserved
0x00130000 Window may be
Rx BD Send located anywhere
Producer Index
Reserved Memory Window
0x00140000
Rx BD Return Ring 1-16
Consumer Index
Reserved
0x00180000
Tx BD Ring 1-16
Host Producer Index
Reserved
0x001C0000
Tx BD Ring 1-16
NIC Producer Index
Reserved
0x01000000
Device
External
Memory
Memory
0x01FFFFFF 0x00020000
I/O Space
Read Only
Memory Space Always = 0
Read/Write
[15:10] [9] [8] [7] [6] [5] [4] [3] [2] [1] [0]
The Ethernet controller 64K memory mapped I/O block is determined by the first programmable bit in the BAR.
When the MAC is configured in standard mode, the mask 0xFFFF0000 identifies the BAR bits, which are
programmable. Bit 16 is the first bit encountered in the scan upward, which is programmable; bits 0–3 are
ignored. Host software will read zero values from bits 4–16. Figure 45 shows the BAR register and the bits
returned to the OS/BIOS during resource allocation.
Figure 45: PCI Base Address Register Bits Read in Standard Mode
Device Family
The Ethernet controller PCI registers are listed in Table 62.
Bus Interface
Description
The read/write DMA engines both drive the PCIe interface. Typically, each DMA engine alternates bursts to the
PCIe bus, and both interfaces may have outstanding transactions on the PCI bus. The BCM57785 family
architecture identifies two channels—a read DMA channel and a write DMA channel. Each channel
corresponds to the appropriate DMA engine (see Figure 46). The configuration of the DMA engines and the PCI
interface is discussed in this section.
PCI Interface
PCIe Bus
The following architectural components are involved in the configuration of the PCI/DMA interface:
• DMA read engine
• DMA write engine
• DMA read FIFO
• DMA write FIFO
• PCIe interface
• PCI state register
• DMA read/write register
Operational Characteristics
The read and write DMA channels use FIFOs to buffer small amounts of PCI bus data. The FIFOs provide
elasticity for data movement between internal memory and the PCI interface. Host software may configure
DMA watermarks—values where PCI activity is enabled/disabled.
When enqueued data is less than the watermark value, PCI bus transactions are inhibited. The DMA channel
will wait until the FIFO fills above the threshold before initiating PCI transactions. Host software may configure
the DMA_Write_Watermark bit fields to set the activity threshold in the write FIFO. The
DMA_Write_Watermark bit field is read/write and is also located in the DMA Read/Write register. The write
watermark registers default to zero after power-on reset.
Expansion ROM
Description
The expansion ROM on the Ethernet controller is intended for implementation of PXE (Preboot Execution
Environment). The devices support expansion ROM of up to 16 MB.
Operational Characteristics
By default, the Expansion ROM is disabled and the firmware has to explicitly enable this feature by setting
PCI_State.PCI_Expansion_ROM_Desired bit to one (see “PCI State Register (offset: 0x70) — Function 0” on
page 256). Once this bit is enabled, the boot code firmware handles the Expansion ROM accesses of the device.
BIOS
The BIOS detects if a PCI device supports Expansion ROM or not by writing the value 0xFFFFFFFE to
Expansion_ROM_Base_Register (register 0x30 of PCI configuration). The BIOS then reads back from this
register. If the value is nonzero, then this PCI device supports Expansion ROM; otherwise, it does not. The
Ethernet controller returns a non-zero value appropriate for the expansion ROM size selected in NVRAM (see
Section 4: “Common Data Structures,” on page 65) when Expansion ROM is enabled
(PCI_State.PCI_Expansion_ROM_Desired bit is set to 1). On the other hand, if the
PCI_Expansion_ROM_Desired bit cleared, then the Ethernet controller returns a value of 0x00000000. This
indicates to the BIOS that no Expansion ROM is supported.
If a PCI device supports Expansion ROM, the BIOS will assign a Expansion Base address to the device. It then
checks for a valid ROM header (0x55 0xAA as first two bytes, and so forth) and checksum. If the ROM header
and image are valid, the BIOS will copy the Expansion ROM image to HOST’s Upper Memory Block (UMB) and
invoke the initializing entry point.
Boot code is executed when the Ethernet controller is reset via PCI Reset or S/W device reset. PXE initialization
should only be necessary after a PCI reset. The boot code differentiates PCI Reset and driver initiated software
reset by checking content in Internal Memory at 0xb50. If the content is 0x4B657654, then the reset is due to
driver initiated software reset. Therefore, the device driver has to initialize 0xb50 with 0x4B657654 before
issuing a S/W device reset.
Power Management
Description
The Ethernet controller is compliant with the PCI v2.0 power management specification. The MAC is
programmable to two ACPI states: D0 and D3. The D0 state is a full power, operational mode—all the MAC core
functions run at the highest clocking frequency, and components are fully functional. The MAC may be either
initialized or un-initialized in the D0 ACPI state. An un-initialized D0 state is entered through a device reset or
PME event; the MAC functional blocks are not started and initialized. Host software must reset/initialize
hardware blocks to transition the device to a D0 initialized (active) state. The D0 active state places the device
into a full power/operational mode. Receive and transmit data paths are fully operational, and the PCI block is
initialized for bus mastering DMA.
Host device drivers do not differentiate between D3 hot and D3 cold states. ACPI-compliant device drivers are
unloaded and quiescent in the D3 state and PCI slot power state is transparent. When the MAC is in D3 hot
state, PCI slot power (3.3V or 5.0V) is available to power the PCI I/O pins. The PCI configuration and memory
space may be accessed in D3 hot state. The core clock must remain enabled, so the MAC can respond to PCI
configuration and memory transactions. The Disable_Core_Clock bit, in the PCI Clock Control register enables/
disables clocking in the core clock domain. A D3 cold state provides only the PCI Vaux supply—PCI slot power
is not present. The MAC will consume a maximum of 375 mA in a D3 cold power management mode.
• WOL
• PCI Vaux Supply
• PCI Slot Power Supply
• GPIO
Operational Characteristics
Figure 47 applies to the Ethernet controller reference designs. The MAC GPIO pins are available for application
specific usage; however, Broadcom encourages both software and hardware engineers to follow the Broadcom
design guidelines and application notes. NIC and LOM designs use external board level logic to switch power
regulators for D3 ACPI mode.
D0
D3 Hot
Active
When the BCM57785 family NetXtreme devices detect that main power is lost and it is still in the D0 state, it
will reset itself to the D3 (Cold) state and then operate in 10/100 mode, like the OOB WOL state.
Note: The drivers should use configuration cycles (not the memory write cycles) to write to the
PMCSR register at offset 0x4C for putting the device in D3 Hot state.
Note: The PCIe devices support the PCIe power management which is compatible with PCI bus power
management.
Wake on LAN
See “Wake on LAN Mode/Low-Power” on page 200.
GPIO
The use of GPIO pins for power management is design-specific, though Broadcom-delivered drivers use GPIO
pins in the manner listed in Table 63. This usage is only applicable when the Ethernet controller is configured
for a NIC design; it is not applicable to LAN-on-motherboard (LOM) designs. However, GPIO0 is used to control
the NVRAM write-protect function in LOM designs (GPIO0 typically tied to WP pin of the BCM577XX NVRAM
device).
Table 63: GPIO Usage for Power Management for Broadcom Driversa
Clock Control
Certain functional blocks in the MAC architecture should be powered down before a transition to D3 ACPI
state. MAC clock generators/PLLs drive transistor level logic, which switch states on every clock pulse.
Transistor level switching consumes power (mW). Software should selectively disable clocking to non-essential
functional blocks. Software must set the Enable_Clock_Control_Register bit in the Miscellaneous Host Control
register (see “Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253); the assertion of
this bit allows host software to configure the PCI clock control register. The following clock bits should be
configured in the PCI Clock Control register:
• RX RISC clock disable
• Select alternate clock—the 133 MHz PLL is not used as reference clock.
Note: The D1 and D2 configurations are not supported in the Ethernet controller. The D1 and D2 bit
configurations are available for applications, where D1 and D2 states are introduced for board level
designs—the bits provide flexibility to the application. The Broadcom reference NIC/LOM designs do
not use D1 and D2 states; therefore, host software should avoid setting these states. Before the Mac
is moved into the D3 state, the clocks and GPIO must be configured (see above sections).
The PME signal is enabled in the PMSCR by asserting the PME_Enable bit. Device drivers/BIOS may also read
the PME_Status bit to determine whether the event has been driven; PME_Status is a write to clear bit. The
type and supported power management features for the Ethernet controller are reported in the Power
Management Capabilities (PMC) register (see “Power Management Capability Register (offset: 0x48) —
Functions 0” on page 249). System software and BIOS may read this register to enumerate and detect the
power management features supported by the NIC/LOM. For example, the Ethernet controller can assert PME
from both D3 hot and cold states. The PME_Support bit field in the PMC register will reflect this capability.
Although enabling the ASPM feature does not provide substantial power saving from the controller
perspective, it does allow a system-level power saving. ASPM-L0s and ASPM-L1 support can be enabled (or
disabled) by programming the ASPM-Control-Field. The device enters the corresponding ASPM state when
there are no data transactions on the LAN and card reader.
Note: The BIOS should first place the controller into the D3 power state prior to writing the
0xDEADDEAD signature value. See Table 62 on page 176 for power state control options (PCI
Configuration register 0x4C bits 1:0).
The BCM57785 family introduces a new power-down signature in addition to retaining the legacy 0xdeaddead
signature functionality:
• 0xDEAD0111: Power-down card-reader but keep LAN function up
Background
There are two basic formats for storing data in memory—little-endian and big-endian. The endianess of a
system is determined by how multibyte quantities are stored in memory. A big-endian architecture stores the
most significant byte at the lowest address offset while little-endian architecture stores the least significant
byte at the lowest address offset.
For example, the 32-bit hex value 0x12345678 would be stored in memory as shown in the following table.
Address 00 01 02 03
Big Endian 12 34 56 78
Little Endian 78 56 34 12
Another method of viewing how this data would be stored is shown in the following tables.
Storage Byte 00 01 02 03
Data Contents 12 34 56 78
Storage Byte 03 02 01 00
Data Contents 12 34 56 78
Examples of big-endian platforms include SGI Irix, IBM RS6000, and SUN.
PCI assumes a little-endian memory model. PCI configuration registers are organized so that the least
significant portion of the data is assigned to the lower address.
Architecture
The Ethernet controller is internally a big-endian machine, and its internal processors are big-endian devices.
The Ethernet controller stores data internally in big-endian format using a 64-bit memory subsystem.
However, many hosts (e.g., x86 systems) use the little-endian format, and the PCI bus uses the little-endian
format. Therefore the Ethernet controller has a number of byte swapping options that may be configured by
software so that Little or Big Endian hosts can interface as seamlessly as possible with Ethernet controller over
PCI. The Ethernet controller has the following bits that control byte and word swapping:
• Enable Endian Word Swap (bit 3, Miscellaneous Host Control register (offset 0x68 into PCI Config register,
se “Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253). If 1, this register
enables 32-bit word swapping when accessing the Ethernet controller via the PCI target interface.
• Enable Endian Byte Swap (bit 2, Miscellaneous Host Control register (offset 0x68 into PCI Config register,
see “Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253). If 1, this register
enables byte swapping (within a 32-bit word) when accessing the Ethernet controller via the PCI target
interface.
• Word Swap Data (bit 5, Mode Control register (offset 0x6800 into the Ethernet controller registers). If 1,
this register enables word swapping of frame data when it comes across the bus.
• Byte Swap Data (bit 4, Mode Control register (offset 0x6800 into the Ethernet controller registers). If 1,
this register enables byte swapping of frame data when it comes across the bus.
• Word Swap Non-Frame Data (bit 2, Mode Control register (offset 0x6800 into the Ethernet controller
registers). If 1, this register enables word swapping of non frame data (i.e,. buffer descriptors, statistics,
etc.) when it comes across the bus.
• Byte Swap Non-Frame Data (bit 1, Mode Control register (offset 0x6800 into the Ethernet controller
registers). If 1, this register enables byte swapping of non frame data (i.e., buffer descriptors, statistics,
etc.) when it comes across the bus.
The setting of the above swapping bits will affect the order of how data is represented when it is transferred
across PCI. Since byte swapping is a confusing subject, examples will be shown that reflect how each byte
swapping bit works
Enable Endian Word Swap and Enable Endian Byte Swap Bits
The Enable Endian Word Swap, and Enable Endian Byte Swap bits affect whether words or bytes are swapped
during target PCI accesses. Thus, these bits affect the byte order when the host is directly reading/writing to
registers or control structures that are physically located on the Ethernet controller. These bits do not affect the
byte ordering of packet data or other structures that are mastered (DMAed) by the Ethernet controller.
When the Ethernet controller is accessed via PCI (which is little endian) as a PCI target, the Ethernet controller
must implicitly map those accesses to internal structures that use a 64-bit Big Endian architecture. In the
default case where no swap bits are set the Ethernet controller maps PCI data to internal structures shown in
Figure 48 and Figure 49.
MSB LSB
Internal Byte # 0 1 2 3 4 5 6 7
Internal Bit # 63 48 47 32 31 16 15 0
Example Content 88 89 8A 8B 8C 8D 8E 8F
MSB LSB
PCI Byte # 7 6 5 4 3 2 1 0
PCI Bit # 63 48 47 32 31 16 15 0
Example Content 88 89 8A 8B 8C 8D 8E 8F
As illustrated above, because the Ethernet controller uses an internal 64-bit big endian architecture, it will map
(by default) the most significant byte of an 8-byte (64-bit) internal quantity to the most significant byte on a
64-bit PCI bus. This works nicely for quantities (fields) that are 64 bits in size (e.g., a host physical address).
However, this can be confusing for quantities that are 32 bits in size. Without Word Swapping enabled, the host
could easily access the wrong 32-bit quantity when making a 32-bit access.
Take, for example, a Ring Control Block (RCB). RCBs are on-chip structures and read/written by the host via PCI
target accesses. The table below shows the big-endian layout of an on-chip RCB.
If Word Swapping is not enabled, and the host made a 32-bit read request to address 0x08, the four bytes of
data returned on the PCI bus would actually be the NIC Ring Address rather than the Max_Len and Flags fields.
This initially might seem counter-intuitive, but is explained in Figure 49 on page 187. Therefore, if a software
driver running on an x86 host (Little Endian) referenced on-chip data structures as they are defined in the
Ethernet controller data sheet, the driver should set the Enable Endian Word Swap bit. By setting this bit, the
translation would be as follows:
Figure 50: Word Swap Enable Translation on 32-Bit PCI (No Byte Swap)
The only side effect for a little endian host that sets the Enable Endian Word Swap bit would be that the driver
would have to perform an additional word swap on any 64-bit fields (e.g., a 64-bit physical address) that were
given to the driver by the Network Operating System (NOS).
Little-endian hosts will not want to set the Enable Endian Byte Swap bit for target accesses. This bit is intended
to be used by big endian systems that needed PCI data (little endian) translated back to big endian format.
Note: Some big endian systems automatically do this depending on the architecture of the host’s PCI
to memory interface.
The following figures show the translation of data when the Enable Endian Byte Swap bit is set:
Internal Byte Ordering PCI Byte Ordering
31 16 15 0 31 16 15 0
0x00 88 89 8A 8B 8F 8E 8D 8C 0x00
0x04 8C 8D 8E 8F 8B 8A 89 88 0x04
Figure 51: Byte Swap Enable Translation on 32-Bit PCI (No Word Swap)
Figure 52: Byte and Word Swap Enable Translation on 32-Bit PCI
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
D1 D2 D3 D4 D5 D6 S1 S2 S3 S4 S5 S6 T1 T2 IP1 IP2
Where:
• D1–D6 consists of the packet’s destination address (Byte D0 is the first byte on the wire);
• S1–S6 is the source address;
• T1–T2 is the Ethernet type/length field;
• IP1–IP2 are the first two bytes of the IP header which immediately follow the type/length field.
B0 B1 B2 B3 B4 B5 B6 B7
63–56 55–48 47–40 39–32 31–24 23–16 15–8 7–0
D1 D2 D3 D4 D5 D6 S1 S2
S3 S4 S5 S6 T1 T2 IP1 IP2
However, when the data gets transferred across PCI, there could be confusion about the correct byte ordering
because PCI is Little Endian whereas Ethernet controller is a Big Endian device. So, in order to provide flexibility
for different host processor/memory architectures, Ethernet controller can order this data on PCI in four
different ways depending on the settings of the Word Swap Data, and Byte Swap Data bits. The following
figures illustrate how data would appear on the PCI AD[63:0] pins depending on the settings of those swap bits:
B7 7B6 B5 B4 B3 B2 B1 B0
63–56 55–48 47–40 39–32 31–24 23–16 15–8 7–0
D1 D2 D3 D4 D5 D6 S1 S2
S3 S4 S5 S6 T1 T2 IP1 IP2
B3 B2 B1 B0
31–24 23–16 15–8 7–0
D5 D6 S1 S2
D1 D2 D3 D4
T1 T2 IP1 IP2
S3 S4 S5 S6
B7 B6 B5 B4 B3 B2 B1 B0
63–56 55–48 47–40 39–32 31–24 23–16 15–8 7–0
D4 D3 D2 D1 S2 S1 D6 D5
S6 S5 S4 S3 IP2 IP1 T2 T1
B3 B2 B1 B0
31–24 23–16 15–8 7–0
S2 S1 D6 D5
D4 D3 D2 D1
IP2 IP1 T2 T1
S6 S5 S4 S3
B7 B6 B5 B4 B3 B2 B1 B0
63–56 55–48 47–40 39–32 31–24 23–16 15–8 7–0
D5 D6 S1 S2 D1 D2 D3 D4
T1 T2 IP1 IP2 S3 S4 S5 S6
B3 B2 B1 B0
31–24 23–16 15–8 7–0
D1 D2 D3 D4
D5 D6 S1 S2
S3 S4 S5 S6
T1 T2 IP1 IP2
B7 B6 B5 B4 B3 B2 B1 B0
63–56 55–48 47–40 39–32 31–24 23–16 15–8 7–0
S2 S1 D6 D5 D4 D3 D2 D1
IP2 IP1 T2 T1 S6 S5 S4 S3
B3 B2 B1 B0
31–24 23–16 15–8 7–0
D4 D3 D2 D1
S2 S1 D6 D5
S6 S5 S4 S3
IP2 IP1 T2 T1
So, for a little-endian (e.g., x86) host, software should set both the Word Swap Data, and Byte Swap Data bits.
This is because a little endian host will expect the first byte on the wire (byte D1) to be placed into memory at
the least significant (starting) address of the packet data.
Word Swap Non-Frame Data and Byte Swap Non-Frame Data Bits
The Word Swap Non-Frame Data, and Byte Swap Non-Frame Data bits affect the byte ordering of certain
shared memory data structures (buffer descriptors, statistics block, etc.) when those structures are transferred
across PCI.
The following table shows as example of how a Send Buffer Descriptor is stored internally in the Ethernet
controller.
Since the Ethernet controller uses a 64-bit memory subsystem, the above diagram is shown in 64-bit format.
Furthermore, the table shows both the internal byte offset for each field and the bit position for each byte.
Note: This may seem confusing because big-endian notation normally has the bit positions
incrementing from left to right. However, in this case, the bit positions are relevant because they
correspond to the bit positions on PCI (AD[63:0]) if neither of the non-frame data swap bits are set.
For clarification, the following table shows the same structure in 32-bit format.
To provide flexibility for different host processor/memory architectures, the Ethernet controller can order the
data in memory in four different ways depending on the settings of the Word Swap Non-Frame Data and Byte
Swap Non-Frame Data bits. The following tables show how data will appear depending on the settings of those
swap bits:
Table 80: Send Buffer Descriptor (Little-Endian 32-Bit Format) with No Swapping
Byte # 3 2 1 0
Bit # 31 16 15 0
Host Address LSB 0x00
MSB 0x04
Reserved VLAN 0x08
MSB Length LSB Flags 0x0C
In this case, the data structure takes on a slightly new format because the words have been swapped.
Table 81: Send Buffer Descriptor (Little-Endian 32-Bit format) with Word Swapping
Byte # 3 2 1 0
Bit # 31 16 15 0
MSB Host Address 0x00
LSB 0x04
MSB Length LSB Flags 0x08
Reserved VLAN 0x0C
The disadvantage of this approach is if the host operating system supported a 64-bit data type for a physical
address, the host device driver would have to swap the two 32-bit words that comprise the 64-bit address that
the host operating system used.
Table 82: Send Buffer Descriptor (Big-Endian 32-bit format) with Byte Swapping
Byte # 0 1 2 3
Bit # 31 16 15 0
MSB Host Address 0x00
LSB 0x04
Reserved VLAN 0x08
MSB Length LSB Flags 0x0C
Table 83: Send Buffer Descriptor (Big-Endian 32-bit format) with Word and Byte Swapping
Byte # 0 1 2 3
Bit # 31 16 15 0
MSB Host Address 0x00
LSB 0x04
MSB Length LSB Flags 0x08
Reserved VLAN 0x0C
Overview
The Ethernet controller supports multiple link operating modes. It can operate at multiple link speeds:
10 Mbps, 100 Mbps, or 1000 Mbps. It can also operate at half-duplex (IEE 802.3 CSMA/CD) or full-duplex. The
MAC is compliant with IEEE 802.3, IEEE 802.3u, IEEE 802.3x, and IEEE 802.3z specifications.
GMII/MII
The Gigabit Media Independent Interface (GMII) is normally used to interface the controller to a transceiver
that supports Gigabit Ethernet over copper wiring (1000BASE-T). The Media Independent Interface (MII) is
used to interface the controller to a transceiver that is capable of 10/100 Mbps Ethernet. Depending upon the
link speed, driver software will need to configure the Ethernet controller to operate in either GMII mode or MII
mode.
Note: The integrated PHY transceiver of the BCM57785 has a has a fixed PHY address value of 1.
The Ethernet controller has two different methods that it can use to determine if the Ethernet link is up or
down. The link will be down if the Ethernet cable is not properly attached at both ends of the network. Link
will be up only if the cable is properly attached and the devices at both ends of the cable recognize that link
has been established. The device cannot successfully transfer packets on the link unless it determines that it
has a valid link up.
The first method is called auto-polling. Software can enable auto-polling by setting the MII_Mode.Port_Polling
bit. If enabled, the Ethernet controller periodically generates MDIO cycles to read the PHY’s Link_Status bit in
MII Status register. The link status from the auto-polling operation is then reported in the
MII_Status_Register.Link_Status and Transmit_MAC_Status.Link_Up (see “Transmit MAC Status Register
(offset: 0x460)” on page 174) bits.
The second method involves using the Ethernet controller’s LNKRDY input signal. This method allows the
Ethernet controller to determine the link status based on the link status output from integrated PHY connected
to LNKRDY input of MAC. The Transmit_MAC_Status.Link Up bit (see “Transmit MAC Status Register (offset:
0x460)” on page 174) will reflect the link status input on LNKRDY signal to MAC from PHY. Host software can
enable this method by clearing the MII_Mode.Port_Polling bit (bit-4 of offset 0x454).
The link state of the Ethernet controller can also be forced by disabling both the auto-polling function and the
LNKRDY signal and forcing the link status by directly writing to the MII_Status.Link_Status bit.
The integrated PHY registers are accessed via a process called MDIO. The integrated PHY is connected to the
Ethernet controller through an internal MDIO bus (MDIO and MDC pins). Software accesses PHY’s registers via
MDIO through the Ethernet controller’s MII_Communication register. The following example code describes
accessing the PHY registers through the MII_Communication registers of the Ethernet controller.
Note: This procedure is PHY-independent. The MAC access to the PHY is the same for the entire
NetXtreme family.
There are two modes in which the internal MII Management interface signals (MDC/MDIO) can be controlled
for communication with the internal transceiver registers. These modes are as follows:
• Autopolling Mode. Enabled by setting the Enable bit in the MAC Ethernet MII Mode register. The device
will poll for the link status bit in the transceiver.
• Command Control. Writing to the MII Communications register directly to either read or write the
transceiver registers.
Autopolling Mode has the lowest priority and it will be stalled any time there is an active operation through
the MII Communications register.
Operational Characteristics
The interface between the MAC and physical devices is with the two signals of:
• MDIO clock (MDC)
• Bidirectional serial data (MDIO)
The details of the MDIO interface can be found in the IEEE 802.3 specification.
Access Method
The MAC provides the auto-access method to access the Physical Device register via the MDIO interface.
Auto-Access Method
The Ethernet controller has a built-in interface to access physical device registers without having to control
MDC and MDIO pins by software/firmware. It provides an easy way to access the physical device register.
Note: Programmers must be careful to wait for the start _busy bit to clear. Writing to the MII
Communication register prior to the completion of a previous MDI access will yield unpredictable
MDI data. The previous access will not complete successfully.
For example, to read a 16-bit PHY register at offset 0x2 of a PHY device which is strapped to PHY address 1,
perform the following steps:
1. MII_Communication_Register.Register_Address is set to 0x2.
2. MII_Communication_Register.PHY_Addr is set to 1.
3. MII_Communication_Register.Command is set to 0x2.
4. MII_Communication_Register.Start_Busy is set to 1.
5. Poll Until MII_Communication_Register.Start_Busy is cleared to 0.
6. MII_Communication_Register.Transaction_Data contains 16-bit data of the PHY register.
See “Configuring the GMII/MII PHY” on page 196 for example code.
To write a value of 0x1000 into 16-bit PHY register at offset 0x0 of a PHY device which is strapped to PHY
address 1, perform the following steps:
1. MII_Communication_Register.Register_Address is set to 0x0.
2. MII_Communication_Register.PHY_Addr is set to 1.
3. MII_Communication_Register.Command is set to 0x1.
4. MII_Communication_Register.Transaction_Data is set to 0x1000
5. MII_Communication_Register.Start_Busy is set to 1.
6. Poll Until MII_Communication_Register.Start_Busy is cleared to 0.
See “Configuring the GMII/MII PHY” on page 196 for example code.
Description
The Ethernet controller uses the ACPI D3 hot/cold (low-power) state to conserve energy. The OS power
management policy notifies device drivers to initiate power management transitions. The device driver should
move the MAC into the D3 hot/cold power state—a response to the power management request. While the
Ethernet controller is in a D3 state, the RX MAC will filter incoming packets. The RX MAC compares incoming
traffic for Interesting Packet pattern matches. The Ethernet controller asserts the PCI PME signal, when a
positive WOL packet comparison is made. The PME signal notifies the Operating System and host device driver
to transition the MAC into the D0 (high power) state.
WOL mode is a combination of PHY and MAC configurations. Both the PHY and MAC must be configured
correctly to enable Broadcom’s WOL technology. The Ethernet controller provides WOL pattern filters for 10/
100 wire speeds.
The Ethernet controller supports both Interesting Packet pattern matching the AMD Magic Packet proprietary
technology for WOL. The WOL support for the AMD Magic Packet format does not require host software to
configure a pattern filter. The Magic Packet comparison is made in hardware and is enabled through a register
interface. The AMD Magic Packet can be either broadcast or directed, and must contain the receiver's MAC
address at least six times (repeating) in the packet. The Magic Packet wake-up is configured different from
pattern match wake-up.
Functional Overview
The Ethernet controller is capable of WOL in 10/100 Mbps for copper-based controllers.
Note: When configured for WOL in 1000 Mbps mode, the Ethernet controller draws more than the
375 mA allowed by the PCI specification.
The Ethernet controller uses the TX FIFO to store pattern data (see Figure 53). During WOL operation, the
transmit engine is disabled and its FIFO is free for use. The TDE fetches data from the memory arbiter starting
at a location specified in the WOL_Pattern_Pointer register. The WOL pattern checker pulls data off the TX FIFO
for packet comparisons. The RX MAC will move incoming frame(s) to the pattern checker, and the remaining
RX data path is not utilized. A state machine controls the Magic Packet comparisons. The WOL state machine
will move out of an Idle state, when ACPI power management is enabled. The WOL state machine will clear the
TX FIFO and Match register. The Match register indicates a positive Magic Packet comparison(s) on a stream.
In 10/100 Mbit mode, data is received once every four clock cycles. The pattern checker compares the first
three patterns in the first cycle, the second three patterns in the second cycle, and the third three patterns in
the last cycle. It is idle during the fourth cycle. In gigabit mode, the pattern checker gets three pattern words
from the FIFO at one time.
Memory Pattern
Tx FIFO TDE
Arbiter Data
Internal
Memory
Pattern Power
Checker Managment
RX
PCS
RX RX
Rx MAC
IO RMII
RX
GMII
Operational Characteristics
Internal Memory
The WOL pattern must be stored in the Ethernet controller miscellaneous memory region. All memory
locations require the host software to reinitialize the WOL pattern before each D0 to D3 transition. The RX/TX
MAC places packets into this internal memory and the WOL pattern is overwritten during normal operation.
When the Ethernet controller operates in D0 state, internal data structures use the same memory location as
the WOL pattern. Host software should reinitialize the WOL pattern before each WOL sleep transition.
Table 84 shows the required memory regions for the WOL pattern.
The WOL_Pattern_Pointer specifies a location within Ethernet controller address space where the pattern
buffers reside (see “WOL Pattern Pointer Register (offset: 0x430)” on page 170 for the register definition). The
internal memory subsection discusses how host programmers can choose an address range. The
WOL_Pattern_Pointer register uses a pointer value, not an internal memory location. The pointer value is
calculated by dividing an internal memory location by the value 8. Do not program the WOL_Pattern_Pointer
register with the actual internal memory location. Rather, host software must first convert the base address to
a pointer value. Here are example conversion from memory base to pointer values:
• 0x0000 (Misc Memory)/8 = 0x00 (required value)
• 0x400 (base addr)/8 = 0x80 (pointer value)
• 0x8000 (base addr)/8 = 0x1000 (pointer value)
• 0xF000 (base addr)/8 = 0x1E00 (pointer value)
• Length Field—The Length field in the WOL_Pattern_Configuration register specifies the number of clock
cycles required to compare a variable number of bytes, in the RX stream. The Length field uses a unit of
measurement specified in terms of memory arbiter clock cycles. Software should not program this field
with a byte value. The Length field should be programmed with the maximum number of clocks required
to compare the largest pattern size for the nine streams (10/100 mode only).
Note: The Ethernet controller only supports one pattern stream at gigabit wire speed, so the
length field will always be the largest pattern size.
The programmer must use the following equation to calculate the number of clock cycles required to
match patterns at 10/100 wire-speed: (Length/2) * 3 MA clocks. The equation breaks down as follows:
– Determine the number of bytes in the RX Ethernet frame to compare. This value is a byte length.
– The WOL pattern checker can compare two bytes simultaneously. Divide length by two bytes and
round up to nearest integer value.
– The Ethernet controller compares 2 bytes every three memory arbiter (MA) clock cycles. Multiply
(Length/2) by three clock cycles.
• The following are example clock cycle calculations:
– Data stream length = 25 bytes
– 25 bytes/2 = 12.5 byte-pairs
– Round(12.5) = 13 byte-pairs
– 13 byte-pairs * 3 clocks/byte-pairs = 39 clocks (register ready)
– Data stream length = 83 bytes
– 83 bytes/2 = 41.5 byte-pairs
– Round(41.5) = 42 byte-pairs
– 42 byte-pairs * 3 clocks/byte-pair = 126 clocks (register ready)
WOL Streams
A stream is a comparison operation on RX frame(s). When the MAC is running at 10/100 Mbps wire speed, nine
different patterns can be compared against the RX frame(s). The Ethernet controller moves RX frame(s) into
nine parallel comparators, and the frame is matched simultaneously. The MAC is capable of filtering nine
different patterns in 10/100 modes. The WOL pattern checker breaks frames into 2-byte pairs, so all nine
comparators can begin matching data. In Figure 54 on page 204, three Ethernet frames are compared against
the nine available patterns.
Base Addr/8
A4,A5 B4, B5 00,00
Length Offset
C0 S1 S2 S3 C0 S4 S5 S6 C0 S7 S8 S9
ACPI length
field is the max
pattern size
Figure 54: Comparing Ethernet Frames Against Available Patterns (10/100 Ethernet WOL)
Figure 55: Unused Rows and Rules Must Be Initialized with Zeros
Frame patterns are stored as data structures in memory. A control word is always present in a 64 bit entry/row.
The control word describes proceeding data fields in the entry.
In 10/100 Mbps mode, one WOL entry requires three 64-bit wide rows (see Table 85). The total length of an
entry is 192 bits. Each 64-bit row contains a 16-bit control word, which identifies byte enables (see Table 86).
The remaining 48-bits contains 2-byte rules. The 2-byte rules are distributed across three streams: S, S+1, and
S+2. The next row’s 2-byte rules will correspond to three more streams: S+3, S+4, and S+5. Both Table 85 and
Table 86 use Sx notation to denote separate comparison streams. The D0 notation indicates the first 2 bytes in
the packet stream are compared.
63 48 47 32 31 16 15 0
CTRL012 S0D0 S1D0 S2D0
CTRL345 S3D0 S4D0 S5D0
CTRL678 S6D0 S7D0 S8D0
Table 86: Frame Control Field for 10/100 Mbps Mode (Cont.)
Table 87 shows an example of how 10/100 Mbps frame data is split up in the pattern data structure. Eight
streams are compared simultaneously with three 64-bit rows comprising one WOL entry. Rows 0–2 compare
frame data0 against eight rules. Rows 3–5 compare frame data1 against the next eight rules. Rows 6–9 compare
data2 against the final eight rules. The eight rules may be uniquely defined for all three WOL entries.
Table 87: Example of Splitting 10/100 Mbps Frame Data in Pattern Data Structure
Firmware Mailbox
When the Ethernet controller initializes (the firmware boot code is loaded from NVRAM when the chip powers
on or when reset completes), the boot code checks the T3_FIRMWARE_MAILBOX in shared memory. When the
T3_MAGIC_NUM signature (0x4B657654) is present, the boot code does not issue a hard reset to the PHY. This
is especially important in WOL mode since the PHY should not be reset.
Before the host software issues a reset to the Ethernet controller, it must write the T3_MAGIC_NUM to the
shared memory address T3_FIRMWARE_MAILBOX (0xb50). This address is a software mailbox, which boot
code polls before it resets the PHY. The boot code will acknowledge the signature by writing the one’s
complement of the T3_MAGIC_NUM back into the T3_FIRMWARE_MAILBOX. If the T3_MAGIC_NUM is
present, the boot code will not reset the PHY. After resetting the Ethernet controller, host software should poll
for the one’s complement of the T3_MAGIC_NUM before it proceeds, otherwise, boot code initialization may
interfere with the host software initialization.
If the host software will be controlling the WOL configuration, it should write the DRV_WOL_SIGNATURE
(0x474c0000) to the shared memory address DRV_WOL_MAILBOX (0xd30) so that the boot code will not take
over the WOL initialization. If the DRV_WOL_SIGNATURE is not present, and WOL has been enabled, the boot
code will assume that the host software is a legacy driver and skip the WOL initialization. If WOL is disabled,
the boot code will take over the WOL initialization based on the NVRAM configuration.
PHY Auto-Negotiation
The integrated PHY should be configured to auto-negotiate for a 10 Mbps connection (see Table 89). This step
is required if the NIC must be placed into a D3 cold state. Half- or full-duplex operation is acceptable. Software
must modify auto-advertise configurations in the PHY’s MDI registers. The link partner will read advertisement
settings to find a highest common capability. Since WOL requires 10 Mbps wire speed, the two PHYs will
effectively auto-negotiate for half- or full-duplex connection.
Power Management
The clocking inputs need to be modified for WOL mode (see Table 90). The RX CPU is not required during WOL
operation, so its clock can be disabled. The MAC has an internal phase-locked loop that clocks internal logic at
133 MHz. Software must select an alternate clocking source and then disable this PLL.
The settings shown in Table 91 enable Magic Packet detection logic in the MAC. These setting also enable the
MAC to assert PME on the PCI bus. The RX MAC should maintain the multicast and broadcast settings that were
previously configured by the NOS. The Microsoft® power management specification states:
“Only a frame that passes the device’s MAC, broadcast, or multicast address filter and matches on the
previously loaded sample patterns will cause the wake-up signal to be asserted.”
The ACPI_Power-on bit needs to be set for pattern match, but not for Magic Packet recognition. The Magic
Packet detection mechanism is separate from the pattern match mechanism. Host software may configure
WOL using four filter permutations:
• Pattern match WOL disabled. Magic Packet disabled.
• Pattern match WOL enabled. Magic Packet disabled.
• Pattern match WOL disabled. Magic Packet enabled.
• Pattern match WOL enabled. Magic Packet enabled.
Integrated MACs
Table 92 lists the WOL mode control registers in the Ethernet controllers.
3. If host software must place the NIC into D3 cold state, the following step is necessary. Set the
10_Base_TX_Half_Duplex and 10_BASE_TX_Full_Duplex Capability bits, in the Auto-Negotiation
Advertisement Register. Clear the 100_BASE_TX_Full_Half_Duplex and 100_BASE_TX_Full_Duplex
Capability bits, in the Auto-Negotiation Advertisement Register. Clear the 1000_BASE_TX_Half_Duplex and
1000_BASE_TX_Full_Duplex Capability bits, in the 1000BASE-T Control Register. The link partner will now
only be able to auto-negotiate for 10 Mbps speed full/half-duplex.
4. Set the Restart_Auto_Negotiation bit in the MII Control Register. The integrated PHY and link partner will
now reconfigure for 10 Mbps wire speed. Essentially, 10 Mbps link must be auto-negotiated or forced.
5. Disable the FHDE, RDE, TDE bits of the “EMAC Mode Register (offset: 0x400)” on page 361”, and on-chip
RISCs.
6. Host software must write the signature 0x4B657654 to internal memory address 0x0B50. Check for one’s
complement of 0x4B657654.
7. Enable the Wake_On_LAN bit in the AUXILIARY Control Register.
8. For Interesting Packet WOL Only: Set up the Interesting Packet pattern in Ethernet controller local memory.
9. For Interesting Packet WOL Only: Write a pointer value to the “WOL Pattern Pointer Register (offset:
0x430)” on page 170. This register uses a normalized pointer value, not a device base address. The value
written to this register is BCM5700_BASE_ADDR/8. The base address must be a specific location in local
memory: 0x8000, 0xC000, or 0xD000. The choice of memory location depends upon other MAC
configurations, and the selection is not arbitrary.
10. For Interesting Packet WOL Only: Write the Offset field in the “WOL Pattern Configuration Register (offset:
0x434)” on page 170. The WOL pattern checker will position into received frames on two-byte intervals.
The pattern checker compares two bytes in parallel, so host software should program the offset field
accordingly. Host software may perceive this unit as OFFSET_BYTE/2 units.
11. For Interesting Packet WOL Only: Write the Length field in the “WOL Pattern Configuration Register (offset:
0x434)” on page 170. The length value is specified in terms of Memory Arbiter clock cycles, not bytes/
words/dwords. A comprehensive discussion of how the clock cycles are calculated will be presented.
12. Set the Port_Mode field in the “EMAC Mode Register (offset: 0x400)” on page 361 to GMII mode. These
bits enable the GMII between the MAC and internal PHY.
13. For Interesting Packet WOL Only: Enable the ACPI_Power-On bit in the “EMAC Mode Register (offset:
0x400)” on page 361. This bit will enable logic for D3 hot/cold transitions to D0 ACPI state. The MAC will
also be capable of asserting PME on the PCI bus.
14. For Interesting Packet WOL Only: Enable the Magic_Packet_Detection bit in the “EMAC Mode Register
(offset: 0x400)” on page 361. The WOL logic will compare RX frames for Magic Packet patterns.
15. Set the RX RISC_Clock_Disable bit in the PCI Clock_Control register (see “Power Management Control/
Status Register (offset: 0x4C)” on page 134). The receive CPU will be stopped, and the clocking circuitry
disabled.
16. Set the Enable_Alternate_Clock bit in the PCI Clock_Control register (see “Clock Control Register (offset:
0x74)” on page 139). The Ethernet controller’s 133 MHz Phase Locked Loop (PLL) no longer clocks internal
logic and an alternate clock reference is used. Set the PLL LowPowerClock bit while keeping the
Enable_Alternate_Clock bit set. Wait at least 27 μs and then clear the Enable_Alternate_Clock bit. The
Ethernet controller’s PLL is then switched to its lower power consumption mode.
17. In NIC applications, switch from VMAIN to VAUX in order to prevent a GRC reset. Set the required GPIOs of
Ethernet controller if any of them are used for switching the power from VMAIN to VAUX.
18. Enable the RX MAC by setting the Enable bit of “Receive MAC Mode Register (offset: 0x468)” on page 370”
and put it in promiscuous mode by setting the Promiscuous Mode bit of “Receive MAC Mode Register
(offset: 0x468)” on page 370.
19. Enable the PME bit in the PCI “Power Management Control/Status Register (offset: 0x4C) — Function 0” on
page 250. The Ethernet controller asserts PME to wake up the system. Set the Power_State bits to D3 in the
“Power Management Control/Status Register (offset: 0x4C) — Function 0” on page 250.
Flow Control
Description
The Ethernet controller supports IEEE 802.3x flow control. Flow control is a switched Ethernet capability, where
link partners may pause traffic. The 802.3x flow control specifies that a MAC sublayer may transmit pause
frames. The pause frames instruct the MAC’s link partner to wait a specified amount of time, before sending
additional frames. This delay provides the MAC time to free packet buffers. Conversely, the MAC sublayer must
also accept/receive pause frames. Flow control is used by switches and bridges to prevent clients of dissimilar
speeds from exhausting switching packet buffers. Clients and servers may use flow control for similar reasons.
A very important requirement is that both link partners must share a full-duplex connection for flow control to
be enabled. IEEE 802.3x flow control does not operate on a half-duplex connection. More information on flow
control can be found in Appendix A: “Flow Control,” on page 671.
Operational Characteristics
The Ethernet controller implements pause functionality using Xon and Xoff states. The MAC will extract a pause
quantum from a pause control frame. Then, the MAC will configure its internal timer with the pause_time
specified by the link partner. Frames that are currently in the transmit engine will be completed before the
transmit engine is inhibited. The MAC has moved flow control into a Xoff state once the transmit engine is
inhibited. Note that the transmit engine is not completely disabled since the IEEE 802.3 specification stipulates
that MAC control frames should not be paused.
One of the following conditions moves the Ethernet controller into an Xon state:
• Link partner sends a pause frame with pause_time = 0.
• Internal pause timer expires.
Transmit MAC
The transmit MAC is responsible for sending flow control frames. Software enables the transmit MAC to send
flow control frames by setting the Enable_Flow_Control bit in the Transmit_MAC_Mode register (see “Transmit
MAC Mode Register (offset: 0x45C)” on page 369). When software clears the Enable_Flow_Control bit, the
transmit MAC will not generate flow control frames. The MAC_RX_MBUF_Low_Water_Mark register value
triggers PAUSE frames to be transmitted when a threshold value is passed. Software may alter the watermark
to tune system performance.
As soon as PAUSE frame is transmitted, any incoming packet can be dropped, and the ifInDiscard counter in
statistics will increase. When packet size is small (64 bytes) with 1000 Mbps, more frames can be dropped. Even
if the PAUSE frame is transmitted, Pause frames cannot inhibit MAC control frames.
Low Water Mark Maximum Receive Frames register (see “Low Watermark Maximum Receive Frame Register
(offset: 0x504)” on page 375) control the number of good frames to receive after the RX MBUF Low Water Mark
has been reached. After the RX MAC receives this number of frames, it will drop subsequent incoming frames
until the MBUF High Water Mark is reached.
The IEEE 802.3 pause control frame contains a pause_time field. The Ethernet controller inserts a time quanta
into the pause_time field. Software should set the Enable_Long_Pause bit in the Transmit_MAC_Mode register
to configure long pause quanta. Clearing the Enable_Long_Pause bit will default the pause_time back to the
shorter quanta. Table 94 shows the pause quanta based on the Enable_Long_Pause bit setting.
Receive MAC
The Ethernet controller receive MAC’s link partner may want to inhibit frame transmission until upstream
resources become available. The receive MAC must be configured to accept IEEE 802.3x pause frames (see
Table 95). Software should set the Enable_Flow_Control bit in the Receive_MAC_Mode_Control register to
enable automatic processing of flow control frames. If software clears the Enable_Flow_Control bit, IEEE
802.3x pause frames will be discarded. The Keep_Pause bit in the Receive_MAC_Mode_Control register will
instruct the RX engine to forward pause frames to host memory. Software may be interested in setting this bit
for debugging or promiscuous/sniffer configurations. Passing pause frames to the host will increase DMA and
protocol processing and consume available host buffers. The receive MAC will filter pause control frames when
the Keep_Pause bit is disabled.
Statistics Block
The statistic block shown in Table 96 is a common data structure. The relationships of flow control statistics are
discussed in this section. Xon/Xoff statistical counters are related to internal Ethernet controller flow control
states. Xon is associated to transmit enabled state and Xoff is associated to transmit disabled state. These Xon/
Xoff states are not part of the IEEE 802.3 specification; the Ethernet controller uses Xon/Xoff to manage flow
control state and transitions. The Xon/Xoff statistics provide programmers with a high level of granularity for
the measurement of Ethernet controller flow control performance in a LAN (see Appendix A: “Flow Control,”
on page 671).
Statistic Description
xoffStateEntered This counter is bumped under the following conditions:
• IEEE 802.3 MAC flow control pause frame received with valid CRC.
• (Pause_time > 0) The link partner requests transmission inhibit.
The counter increments independently of the enabled/disabled state of
Receive_MAC_Mode_Control.Flow_Enabled.
xonPauseFramesReceived This counter is incremented under the following conditions:
• IEEE 802.3 MAC flow control pause frame received with valid CRC.
• (Pause_time == 0) The link partner no longer requires the device family to pause/wait/
delay outgoing packets.
The counter increments independently of the enabled/disabled state of
Receive_MAC_Mode_Control.Flow_Enabled.
xoffPauseFramesReceived This counter is incremented under the following conditions:
• IEEE 802.3 MAC flow control pause frame received with valid CRC.
• (Pause_time > 0) The link partner requires the BCM57785 family to pause/wait/delay
outgoing packets.
The counter increments independently of the enabled/disabled state of
Receive_MAC_Mode_Control.Flow_Enabled.
outXon This counter is incremented under the following conditions:
• Transmit_MAC_Mode_Control.Flow_Enabled bit is set.
• (MAC_RX_MBUF_Low_Water_Mark > Threshold Value MAC resources are
available.
• (pause_time == 0) 802.3 MAC flow control frame is sent.
outXoff This counter is incremented under the following conditions:
• Transmit_MAC_Mode_Control.Flow_Enabled bit is set.
• (MAC_RX_MBUF_Low_Water_Mark < Threshold Value) MAC resources are
running low and a pause is desired.
• (pause_time > 0) IEEE 802.3 MAC flow control frame is sent.
PHY Auto-Negotiation
The PHY encodes flow control capability into Fast Link Pulse (FLPs) bursts. Link partners will extract encoded
flow control capability from FLPs and then create a Link Code Word (LCW). The LCW is a message, which
contains a selector and technology ability field. The technology ability field contains a bit called
Pause_Operation_for Full_Duplex_Link (A5). Refer to Annex 28-B of the IEEE 802.3 specifications. The A5 bit
signifies that a link partner has implemented pause functionality. If both link partners support auto-
negotiation, they will further exchange data regarding flow control, using the next page bit in the LCW.
Auto-advertise is integrally tied to auto-negotiation. If link partner does not support pause functionality, the
PHY Auto_Negotation_Link_Partner_Ability_Register does not set the Pause_Capable bit. The Ethernet
controller should not send pause frames to this link partner since flow control is not implemented or disabled.
The Ethernet controller can still accept pause frames, but sending a pause frame does not yield a preferred
result.
Integrated MACs
Table 97 lists the flow control registers in the Ethernet controllers.
// The local physical layer was not configured to advertise Pause capability
Else If (Auto_Neg_Advertise_Reg.Asymetric_Pause == ENABLED) Then
{
If (Auto_Neg_Link_Partner_Ability_Reg.Pause_Capable == ENABLED) Then
{
Driver_Flow_Capability = FLOW_CONTROL_TRANSMIT_PAUSE
}
Else
{
Driver_Flow_Capability = NONE
}
}
} //Link Status is up
} // Auto negotiation was not disabled && Speed Duplex was not forced
Else
{
// The use forced speed/duplex, so the partner's flow control capabilities are
// indeterminate - software cannot use the Link_Partner_Abitity
// registers.
Driver_Flow_Capability= DISABLED
}
} //The current link is full-duplex at 10/100/1000 wire speeds
Else
{
//Full-Duplex mode is not available or forced half-duplex
//Flow control is not available in half-duplex mode.
Driver_Flow_Capability = NONE
}
//Configure MAC Flow Control Registers
if ( Driver_Flow_Capability & FLOW_CONTROL_RECEIVE_PAUSE )
{
Receive_MAC_Mode_Control_Register.Enable_Flow_Control = ENABLED
}
if ( Driver_Flow_Capability & FLOW_CONTROL_TRANSMIT_PAUSE ) Then
{
Transmit_MAC_Mode_Control_Register.Enable_Flow_Control = ENABLED
}
} // Link is up on the local PHY
Host Coalescing
Interrupt coalescing (or interrupt moderation) is a common technique used by NIC vendors to increase the
performance of NICs. High-level descriptions of the benefits of interrupt coalescing can be found at:
• http://www.microsoft.com/HWDEV/devdes/optinic.htm
• http://support.microsoft.com/support/kb/articles/Q170/6/43.ASP
• http://msdn.microsoft.com/library/books/serverdg/networkadapterrequirements.htm
Description
The Ethernet controller supports the concept of host coalescing. Host coalescing controls when status
information is returned to the host, and when interrupts are generated. The Ethernet controller provides a
number of SW configurable registers that control when/how it updates the host with status information and
how often it asserts an interrupt.
When the Ethernet controller has completed transmit or receive events, it updates a Status block in host
memory. This status block contains information that tells the host which transmit buffers have been DMAed by
the NIC, and which receive Buffer Descriptors (BDs) have been consumed by a newly arrived received packet.
Normally, the host will check this status block when an interrupt is generated. In addition, the host could also
poll the status block to determine whether or not it had been updated by the hardware since the last time the
host had read the status block (this is called during interrupt processing).
When the NIC updates the status block, it will make a decision about whether to assert the interrupt line (INTA)
or not. The Ethernet controller has special interrupt avoidance mechanisms that allow the host to tell the NIC
not to generate an interrupt when it writes a status block back to the host. In addition, there are also
mechanisms that allow host SW to control when and how often the status block is updated.
Example: The host could configure the NIC to only update status block after it receives two packets, as
opposed to one packet. These mechanisms are documented in more detail to follow.
Operational Characteristics
The Ethernet controller DMAs the status block to host memory before a line interrupt or MSI is generated. The
host ISR reads the update bit at the top of the status block and checks whether this bit is set to 1 or not. When
set to 1, the updated bit of status block indicates the host that the status block has been refreshed by the MAC.
The ISR must then write to clear/de-assert this bit to dirty the status block, and then the ISR may proceed to
read the updated producer/consumer index pointers. This mechanism allows host system software to
determine if the status block has been updated. Due to various asynchronous timing issues (dependent upon
platform) the ISR may occasionally see stale data. The ISR may either spin and wait for the status block DMA to
complete and explicitly flush the status block or just wait for the next line interrupt.
Registers
The Ethernet controller supports a variety of registers that affect status block updates and interrupt generation
(see Table 98).
MSI
PCI Specification 2.2 defines a new mechanism for a device to request services by its device driver. It is called
Message Signaled Interrupt (MSI). MSI will eventually deprecate the traditional interrupt mechanism. In MSI,
device DMAs a specified DWORD data to a specified host address if it needs to request services by its device
driver. The MSI state machine can be enabled/disabled by setting/resetting the Enable bit of MSI Mode register
(offset 0x6000). By default, this bit is set to 1 indicating that the MSI state machine is enabled. The main
advantages of MSI generation versus using a traditional interrupt are as follows:
• Eliminates the need for interrupt signal trace on the PCI device.
• Eliminates the need to perform a dummy read from the device by the device driver in its interrupt service
routine. The dummy read is done at the beginning of ISR to force all posted memory writes to be flushed
to the host memory.
PCI Bus
PCI Host
PCI Host
Interrupt
Interrupt
Bridge
Bridge Controller
Controller
Host Bus
Interrupt
Host
Host Memory
CPU CPU
Memory
To clarify second issue in traditional interrupt scheme, an example is given. The Ethernet controller receives
one or more packets from the networks. The Ethernet controller does the following:
The writes are posted and are actually performed at some later time by the PCI host bridge. When interrupt
service routine of device driver is executed, the driver reads the status block from the host memory and finds
that status block does not contain latest index information if the writes for status block are not performed by
the PCI host bridge yet. The scheme to resolve this problem is to do a dummy read of the Ethernet controller
in the beginning of the interrupt service routine. The dummy read has to traverse the same bridge that memory
writes from the Ethernet controller have to traverse to get to the host memory. The ordering rules for bridges
dictate that the bridge must flush its posted write buffers before permitting a read to traverse the bridge. As a
result, writes for status block are flushed to the host memory by the bridge before dummy read cycle is
completed.
BCM57785 Ethernet
BCM5700
Controller
PCI Bus
PCI
PCI Host Host
Bridge
Bridge Interrupt
Interrupt
Controller
Controller
Host Memory
CPU
Host Memory CPU
Similar example in traditional interrupt scheme is used again here to illustrate MSI concept. The Ethernet
controller receives one or more packets from the networks. The Ethernet controller does the following:
• DMAs data of received packets to the host.
• DMAs receive buffer descriptors to receive return ring in the host memory.
• DMAs status block to the host memory.
• Writes specified DWORD data to specified host address.
In this mode, the Ethernet controller writes DWORD data to specified host address instead of generating an
interrupt. The specified data and address are configurable. The specified address is typically a memory-mapped
IO port within the PCI host bridge. The PCI host bridge is the gateway to the main memory controller. This
means that the DWORD data write (MSI message) to PCI host bridge is in the posted write buffers and was
posted after the writes for the status block update. It is the rule that PCI host bridge must perform posted
writes in the same order that they were received. This means that by the time MSI message arrives at the PCI
host bridge, the status block has already been posted to the host memory. Upon receipt of the MSI message
write, the PCI host bridge generates the interrupt request to the processor. Interrupt service routine of the
device driver is invoked. It is not necessary to do a dummy read because updated status block is already in the
host memory.
MSI Address
This is a 64-bit field. MSI address at offset 0x5c and 0x60 should be programmed with the low-order and high-
order bits of the 64-bit physical address. If the host only supports 32-bit physical address, the high-order
address should be programmed with zeros.
MSI Data
This is a 16-bit field. The least significant three bits can be modified by the Ethernet controller when it writes
MSI message to host. The DWORD data for the MSI message is depicted as shown in Figure 58.
31 16 15 0
All
Allzeros
0’s 16-bit
16-bit MSI_Data
MSI_Data
The Ethernet controller can support up to eight message types, and these MSI messages can be generated by
either of the two sources of:
• Host coalescing engine
• Firmware
Firmware
The Ethernet controller provides a way for firmware executed by RX RISC to generate MSI messages. Firmware
can generate MSI messages by using MSI_FIFO_Access register (Offset 0x6008). For example, if firmware wants
to generate an MSI message with least significant 3-bit as 0x2, it will write 2 to MSI_FIFO_Access register. It also
needs to verify that the MSI message is written successfully by reading back MSI_FIFO_Access Overflow. If this
bit is zero, then the MSI message is encoded successfully and will be sent to HOST. Otherwise, the message is
not encoded.
Note: Without any special firmware supporting multiple MSIs, the device can generate only 1 MSI
message even though the device requests for 8 MSI messages through Multiple Message Capable
field (bits 3:1) of Message Control register (offset 0x5A). The least significant 3-bits of the MSI
message generated by the device are always taken from bits 6:4 of Host_Coalesing_Mode register
(offset 0x3C00).
MSI-X
This section discusses the BCM57785 family MSI-X implementation.
Note: Refer to the status-block format for various status-block formats when using MSI-X. The exact
format of the status block changes depending upon which combination of MSI-X, RSS, Ethernet Audio
Video (EAV) is being used.
MSI-X Vectoring
The BCM57785 family introduces PCIe compliant MSI-X capability with support for a maximum of 6 vectors.
This is accomplished without disturbing the legacy interrupt system model.
The motivation behind introducing MSI-X interrupt vectoring is to provide per receive queue indication/per
transmit queue completion to the host based device driver.
The maximum number of MSI-X vectors is determined by certain chip modes of operation. Multiple Receive
Queues (RX Return Rings) in the BCM57785 family stems from the Receive Side Scaling (RSS) feature or EAV
feature.
Note: RSS and EAV are mutually exclusive. Only one of these two features may be enabled at any
time.
When both RSS Mode and EAV Mode are disabled all of the received packets are posted in the default receive
queue or RX Return Ring 0 (At times, referred to simply as the Receive Return Ring). The number of Transmit
Queues is also limited to one in this mode of operation.
In RSS enabled Mode (EAV disabled), receive traffic classification (sorting) is done purely based on the RSS
hash-lookup table. There are four RSS Receive Queues and a single Transmit queue in this mode of operation.
Therefore up to 5 MSI-X Vectors shall be offered in RSS Mode.
In EAV Mode (RSS disabled), receive traffic classification is performed by EAV Filters. Sorted RX traffic is routed
amongst 4 Receive Queues (RXQs). The transmit side offers 2 transmit queues (one for normal “best effort”
traffic and one for isochronous EAV traffic). Therefore, while in EAV Mode, there is an opportunity to map
packet indication and completions into 6 MSI-X vectors.
The MSI-X specification allows a device to advertise the availability of a chosen number of vectors in its PCIe
Capability list. However, it does not specify a mechanism for an OS to negotiate the number of vectors down
to the number it would actually want to use. One way for an OS to allocate a smaller number of vectors than a
device has asked for is simply not to fill out all of the Vector Table Entries advertised by a device. In this scenario
the device would first need to identify the situation and then it would need to reassign or regroup the internal
interrupt sources into the limited number of Table Entries allocated by the OS. Unfortunately, the device
hardware itself would not possess all of the information necessary to accomplish either of these tasks. Hence
device driver involvement is necessary.
In the case of the BCM57785 family of controllers it has been assumed that in most cases an OS would allocate
the requested number of vectors. A deviation from that would be considered as an exception, in which case,
since support for MSI-X has already been advertised to the BIOS, there would be no way to fall back to INTX
mode. The way to handle this situation would be to force everything into MSI-X Vector#0 and not use any other
vectors, disregarding how ever many vectors the OS actually allocated.
The BCM57785 family offers two vector modes within MSI-X mode:
• Single-vector mode
• Multivector mode
The idea is that during boot-up, if either RSS or EAV Mode is desired to be enabled, the driver would program
the chip into the appropriate Multivector submode first. Subsequently, if the OS does not allocate a requested
number of MSI-X vectors (i.e., 5 in this case), the driver shall reprogram the chip to the appropriate Single
Vector submode. All of this must be performed before the driver enables the EMAC to receive or transmit
traffic. Once traffic is started the MSI-X Vector Mode must not be reprogrammed. The controller will behave
unpredictably if that is done.
The Single-Vector Mode or the Multivector Mode may be chosen by the driver by programming register bit
0x6000[7]. Such submodes are derived by the chip from appropriate RSS and EAV mode settings. All
permissible combinations are shown in the table below.
- Error/Attention
• Multivector mode
– RSS (6 Vector) Mode
- Vector#0 — aggregate of the following:
- Send Ring Completion
- RX Standard/Jumbo Producer Ring Indication
- Link Status Change
- Error/Attention
- Vector#1 — RSS Return Ring 0 Indication
- Vector#2 — RSS Return Ring 1 Indication
- Vector#3 — RSS Return Ring 2 Indication
- Vector#4 — RSS Return Ring 3 Indication
- Vector#5 — Unused
– EAV (6 Vector) Mode
- Vector#0 — Aggregate of the following:
- Send Ring#1 Completion
- RX Standard/Jumbo Producer Ring Indication
- Link Status Change
- Error/Attention
- Vector#1 — RXQ Return Ring 0 Indication
- Vector#2 — RXQ Return Ring 1 Indication
- Vector#3 — RXQ Return Ring 2 Indication
- Vector#4 — RXQ Return Ring 3 Indication
- Vector#5 — Send Ring#2 Completion
In case of Multivector selection, it is not mandatory to enable all 4 RSS queues or all RX queues. Therefore, in
case of multivector RSS, vector#1 through vector#4 are only useful in conjunction with the respective number
of RSS queues or CPU# enablement. This is to say that, as an example, if only three receive queues are receiving
traffic and the Multivector mode is selected by driver, then even though vectors 0, 1, 2 and 3 remain active and
vector#4 will never trigger. Hence, in Multivector RSS Mode, the receive queues are hard mapped one to one
with MSI-X vectors 1 through 4. Thus it is not permissible to regroup receive queues into vectors arbitrarily.
Consequently, Multivector mode must only be selected in conjunction with enablement of either RSS or EAV.
The converse is not enforced by the chip. That is, either RSS or EAV Modes may be enabled along with legacy
INTx interrupt signaling.
The data structures used in INTx and MSI mode are identical to that of single-vector MSI-X.
In Single Vector Mode all of the receive traffic shall be indicated via Vector#0. In RSS Mode all 4 Receive Queue
indications are grouped together in Vector#0. In EAV Mode all 4 RX queues and both TX queues are grouped
into Vector#0. Also, this mode must be used when RSS and EAV are both disabled (but MSI-X is enabled),
however, this is not seen as a useful case. There are instances when an OS may enable RSS but would allocate
only one MSI-X vector to our device - in which case the driver must resort to choosing the Single-vector mode.
Note: The Legacy mode INTx or MSI continues to function without any change.
The MSI-X Capability structure points to two structures that must be implemented inside a device:
• MSI-X Table
• Pending Bit Array (PBA)
31 1
6 15 87 32 0
Message Control Reg Next Pointer Capability ID
MSI-X Table Offset Table BIR
PBA Offset PBA BIR
The BIR bits shown above point to the BAR registers that a device function uses to base the respective data
structures. In the case of BCM57785 family, as mentioned above, both BIRs shall have a hard wired value of
0x2, which implies BAR2 and BAR3.
Note: The PCI v2.3 spec states that "For all accesses to MSI-X Table and MSI-X PBA fields, software
must use aligned full DWORD or aligned full QWORD transactions; otherwise, the result is
undefined."
The table below depicts the implemented address regions of BAR2 and BAR3 in BCM57785 family. There are
only two structures present:
• MSI-X Table
• Pending Bit Array (PBA)
Any host accesses to the non-implemented addresses in these BARs will be gracefully handled by the chip (i.e.,
reads return 0x0 and writes have no effect).
DW3 Content DW2 Content DW1 Content DW0 Content BAR3 and
MSI-X Table Entry# (32-Bit) (32-Bit) (32-Bit) (32-Bit) BAR2 Offset
N/A Reserved Bits [127:6] (PBA) Pending Bits[5:0] 0x120
Reserved Entry …………. …………. …………. …………. 0x110
Reserved Entries …………… …………… …………… …………… ……………
…………… …………… …………… …………… ……………
5 Vec#5 Control Msg#5 Data Msg#5 Addr H Msg#5 Addr L 0x50
4 Vec#4 Control Msg#4 Data Msg#4 Addr H Msg#4 Addr L 0x40
3 Vec#3 Control Msg#3 Data Msg#3 Addr H Msg#3 Addr L 0x30
2 Vec#2 Control Msg#2 Data Msg#2 Addr H Msg#2 Addr L 0x20
1 Vec#1 Control Msg#1 Data Msg#1 Addr H Msg#1 Addr L 0x10
0 Vec#0 Control Msg#0 Data Msg#0 Addr H Msg#0 Addr L 0x00
The BCM57785 family will offer HC parameters or coalescing control on a per-RX-queue and TX-queue basis —
when and only when MSI-X Multivector mode is chosen. To that end, a few more sets of Host Coalescing
Parameter registers are added. Each such HC Parameter Set comprises the following registers:
• Receive [n] Coalescing Ticks Register (RCTR)
• Send [m] Coalescing Ticks Register (SCTR)
• Receive [n] Max Coalesced BD Count Register (RMCBCR)
• Send [m] Max Coalesced BD Count Register (SMCBCR)
• Receive [n] Max Coalesced BD Count During Interrupt Register (RMCBCDIR)
• Send [m] Max Coalesced BD Count During Interrupt Register (SMCBCDIR)
Where n ranges from [0 through 4] and m ranges from [0 through 1]. The legacy HC Parameter registers are
now referred to as HC Parameter Set [0].
Each of these new HC sets have the exact same behavior or attribute as defined for the legacy HC capabilities
except in one aspect: When MSI-X Multivector mode is enabled, each of the HC sets associate with their
respective status block. However, when either MSI-X is disabled or MSI-X Single-Vector mode is chosen, none
of the additional HC sets would exist. Recall that when MSI-X Single-Vector mode is enabled, even though 5 (or
6) vectors are advertised, only vector #0 is active.
Note: To further clarify, in legacy INTx mode or MSI mode or MSI-X Single-Vector mode, all transmit
and receive queues are metered collectively by HC parameter Set 0. Sets 1 through 5 do not exist.
Only in multivector MSI-X mode do HC parameter sets 1 through 5 come into existence.
The table below summarizes the existence of HC parameter sets and their association to status blocks.
After completing the DMA of every return BD to host memory, a hardware finite state machine (FSM) checks
if the RX-MBUF is empty (discounting the effects of pre-allocation). If it is then hardware starts counting down
a count value. While the count down is in progress, if another RX packet starts to pour into the RX-MBUF, the
FSM goes back to idle. However if no other RX packet arrives the counter reaches zero at which point the FSM
triggers an interrupt/MSI-X. The counter basically debounces any effects resulting from inter-packet gap or
short gaps among packets within a receive burst.
This feature may be enabled or disabled by a register bit. The count-down pre-load value is also programmable.
When enabled in conjunction with Multivector MSI-X mode there is a programmable option to either fire
vector #0 only or fire all vectors.
Default
Name Bits Access Value Description
As defined in Legacy 31 – – –
End of RX Stream Detector Fires 30 RW 0x0 Write 1 to fire ALL MSI-X vectors when an
ALL MSI-X Vectors end-of-RX stream is detected.
Write 0 to fire only MSI-X vector#0 when an
end-of-RX stream is detected.
Enable End of RX Stream Interrupt 29 RW 0x0 Write 1 to enable the End of RX Stream
Interrupt.
Reserved 28:18 RO 0x0 –
Coalesce Now MSI-X Vector# 17:13 WC 0x0 Individual Coalesce Now bits associated with
[5 – 1] MSI-X vector# 5 through 1.
These bits are self-clearing.
As defined in Legacy 12:0 – – –
Default
Name Bits Access Value Description
As defined in Legacy 31 – – –
End of RX Stream 15:0 RW 0x000F This field is meaningful only when 0x3C00[29] is 1.
Debounce Count After completing the DMA of every return BD to the host
memory, a hardware FSM checks if the RX-MBUF is
empty (discounting the effects of pre-allocation). If it is,
hardware starts counting down a count value
programmed by this field. While the count down is in
progress, if another RX packet starts to pour into the RX-
MBUF, the FSM goes back to idle. However, if no other RX
packet arrives, it allows the counter to go down to zero,
at which point the FSM triggers an interrupt/MSI-X. The
counter basically debounces effects of IPG or short gaps
among packets within a burst.
The counter counts in core-clocks.
The One Shot mode shall be enabled by default and could be disabled by writing a 1 to the register bit
0x6000[5]. The One Shot mode setting has no effect on the Line Interrupt or MSI modes.
The chip hardware behavior would be to actually store a non-zero value to an INT Mailbox as soon as a
respective MSI-X Message DMA is completed at the EP-RC (PCIe Core) interface.
In the case of the BCM57785 family this bit will retain the same functionality and associate with Status-Block0
and Vector#0 when MSI-X is enabled. Moreover, 5 more Coalesce Now bits shall be added to replicate the same
function associated to vector numbers 1 through 5. Below are the definitions of the bits.
• 0x3C00[3]: Coalesce Now (When INTx or MSI enabled)
• 0x3C00[3]: Coalesce vector#0 Now (when MSI-X Enabled)
• 0x3C00[13]: Coalesce vector#1 Now (when MSI-X enabled + Multivector mode enabled)
• 0x3C00[14]: Coalesce vector#2 Now (when MSI-X enabled + Multivector mode enabled)
• 0x3C00[15]: Coalesce vector#3 Now (when MSI-X enabled + Multivector mode enabled)
• 0x3C00[16]: Coalesce vector#4 Now (when MSI-X enabled + Multivector mode enabled)
• 0x3C00[17]: Coalesce vector#5 Now (when MSI-X enabled + Multivector mode enabled)
Note: The HC RTL honors the Coal_Now Flag coming from both Send or Receive FTQs - the RX FTQ
never requests it as the Receive buffer descriptors (RBDs) do not support any such flag.
ISR Code
D river clears the "updated" bit in the Status
Block.
DPC C ode
Process any Link Status change events. D river claim s the Interrupt and schedules a
callback to handle the interrupt processing
(m any OSes due this via a low er priority
thread). Allternatively, the driver could directly
invoke the interrupt processing code.
R ead the,
No Is the "U pdated bit" set in Yes
the Status Block?
Interrupt Procedure
1. Acknowledge interrupt. Write a nonzero value (i.e., value = 1) to the interrupt mailbox 0 (see “Interrupt
Mailbox 0 (High Priority Mailbox) Register (offset: 0x200-207)” on page 359 for host standard and
“Interrupt Mailbox 0 Register (offset: 0x5800)” on page 517 for indirect mode) to indicate that the driver is
currently processing the interrupt. This step disables device interrupts except during interrupt feature.
2. Read and save the value of the Status Tag field of the Status Block (see “Status Block” on page 80).
3. Claim interrupt. Determine if the Ethernet controller action is required. Read the Updated bit of the status
word. If the Updated bit is asserted, then the host coalescing engine has updated the status block.
4. Clear the Updated bit of the status word. This indicates that the host driver either has or will touch the
status block. If a during interrupt event is driven, the host driver can examine the Updated bit to determine
if a fresh status block has been moved to host memory space.
5. Check for RX traffic.
• Loop through enabled RX Return Rings (0 to 3).
• Check for difference between RX Return Ring Producer index (Status block) and RX Return Ring
Consumer index (value written to mailbox on previous call) are the number of frames to process for RX
Return Ring.
• Process the packet.
• Update the RX Return Ring consumer pointer in each mailbox for new RX frames.
6. Check for TX completes.
• Loop through enabled TX Send Rings.
• Check for difference between previous consumer index (software kept) and current consumer index in
the status block. These are the TX BDs which can be made available to next send operation.
• Update the previous consumer index (i.e., next call) to the value of the status block consumer index.
7. Compare the current value of the Status Tag to the saved value of the Status Tag. Flush status block (i.e.,
force update of status blocks cached by PCI bridge).
• Read interrupt mailbox (see “Interrupt Mailbox 0 (High Priority Mailbox) Register (offset: 0x200-207)”
on page 359 for host standard and “Interrupt Mailbox 0 Register (offset: 0x5800)” on page 517 for
indirect mode).
• Check the Updated bit in the status word located in the status block. If the Updated bit is asserted, then
new data has been DMAed to the host. Repeat steps 5 and 6.
8. Check the Error bit in status word (optional). The driver may check the state machine/FTQ status registers
for various attentions.
9. Enable interrupts. When Status Tagged Status mode bit of the Miscellaneous Host Control register (see
“Miscellaneous Host Control Register (offset: 0x68) — Function 0” on page 253) is set to 1, then write the
saved Status Tag to the upper 8 bits of Interrupt Mailbox 0, and 0 to the remaining bits (23 down to 0) to
indicate that the ISR is done processing RX/TX. Otherwise, write 0 to Interrupt Mailbox 0 register. This step
also clears existing interrupts.
Introduction
This section describes the interdependencies that exist between the LAN PCIe function (function 0) of the
BCM57785 Family of high-speed controllers and the card-reader PCIe function(s).
Abbreviations
BJP Bonjour proxy firmware is one example of power management offload firmware (other "sleep"
firmware applications also exist) that is used in system state S3 (device state D3), which gets
loaded by the LAN driver in some system designs (and essentially replaces boot code) as part
of a system entering a low power sleep state. This firmware, among other things, offloads
certain types of network activity to reduce the frequency with which the system must exit S3
and power back up into S0, thereby saving system power.
BC Boot code firmware which loads from an external NVRAM and executes upon either a power-
on reset or a warm reset of the BCM57785 Family controller. Boot code (and proxy firmware)
executes on an integrated RISC cpu core inside the BCM57785 Family controller.
CR Card reader (SD, SDHC, SDXC, MMC, MSPro, xD-Picture)
GRC Reset General register control reset. A warm reset of the LAN function (function 0).
D3 An ACPI device sleep state. D0 = device fully powered.
S3 An ACPI system sleep state. S0 = system fully powered.
Perst_L PCI Express (PCIe) reset signal. Transition of this signal causes boot code to reload and execute.
Vmain Full system power is present when Vmain is active.
Vaux Auxiliary (i.e. standby) power. Minimal logic within the BCM57785 Family controller is
powered when running on Vaux only. The integrated RISC CPU core is powered on Vaux and
continues executing code (either BC or BJP).
CR Sig Card-reader signature. Somewhat analogous to the legacy LAN driver signature in shared
memory offset 0xB50, the CR sig is used to communicate between BC/BJP firmware and the
CR driver.
LAN Sig Legacy LAN signature in shared memory offset 0xB50. BC writes the value of the 1's
complement of the ASCII string KevT (i.e. ~KevT). When the LAN driver wishes to perform a
warm LAN function reset (a.k.a. GRC reset), it first writes the value KevT to 0xB50. The LAN
driver can then poll 0xB50 waiting for ~KevT to know that boot code has fully loaded, initialized
the controller, and entered its main service loop and is now safe for the driver to access the
LAN function (function 0) of the device.
OOB Out-of-Box. This refers to the power state of the device upon plugging the A/C cord into the
wall, which immediately powers Vaux only (not Vmain) to the device. Boot code loads and
executes upon entering the OOB system state as the integrated RISC CPU core is powered by
Vaux.
Background
The BCM57785 Family of controllers contain additional integrated functionality beyond the traditional
Ethernet LAN function. Among the additional functionality is support for various CR interfaces.
The CR functionality is implemented in the form of additional separate PCIe functions within the BCM57785
device, wholly (or mostly) separate from the primary function 0 LAN interface.
While every effort was made in the architecture of the BCM57785 Family of controllers to make each PCIe
function totally independent from one another, there are still a few inter-function interactions that device
driver developers need to be aware of. All functions within the device share the same PCIe bus interface to the
host system. For example, if the system wishes to place function 0 (LAN) into a low-power sleep state, the PCIe
bus must remain powered if the CR functions are to remain active.
Although SD, SDHC, SDXC, MMC, MSPro, xD-Picture CR types are supported, only SD (on PCIe function 1) is used
in the Broadcom “currently shipping product” at the time of initial release of this document.
For the BCM57785 Family of controllers there are two important signatures that are used to coordinate activity
between the boot code and the driver(s). In previous LAN-only Broadcom NetXtreme controllers (no CR
functionality), there was only a single signature located at controller memory offset 0xB50 (accessible by both
boot code and a host LAN driver). 0xB50 would contain essentially garbage upon OOB power-on, and boot code
would write a value of 0x49A89AB (a.k.a. ~KevT). The LAN driver should monitor this signature to become KevT
following a power-on (cold) reset to know when it is safe to access the device. Whenever the LAN driver wishes
to reset the LAN function only (not reset the CR function), it should first write the value 0x4B657654 (a.k.a.
ASCII “KevT”) to the signature in 0xB50 to signify to the boot code that it is a warm reset, then initiate a GRC
reset by setting bit 1 in function 0 register 0x6804 (Miscellaneous Configuration register).
It is important to note that a GRC reset is different from a PCI reset (full device reset, initiated by host) in that
the former only resets the LAN function (function 0) and does not disturb the CR function (function 1), whereas
a PCI reset (either up cold power-on or upon host action) fully resets the entire device including both the LAN
and CR functions. A PCI reset is initiated by the host in one of two ways:
• Host hardware asserts the PCIe bus Perst signal
• Host root complex sends an in-band PCIe reset command
A recently added second signature is for use exclusively by a CR driver to determine the initialization state of
the CR function initialization. The new CR signature is located at CR BAR + 0x198 bits 11:8. Bootcode or,
alternatively, Bonjour proxy firmware, writes a value of 0xA to this signature location upon completion of CR
function initialization following either a power-on reset or a full device (PCIe) reset. The BC/BJP firmware also
clears (write 0) this signature upon detecting that Vmain is going down.
The CR signature’s functionality is largely analogous to how the 0xB50 signature is used by the LAN driver, but
this method allows a CR driver to communicate with the boot code without having to access function 0. This
method also eliminates any need to have the two drivers (LAN and CR) handshake with each other, which is
undesirable from an overall system design perspective. It is assumed that a system architect would strongly
prefer the LAN driver and the CR driver to be able to behave as if the LAN and CR functions exist as two
distinctly separate system devices — even though this is not the physical reality.
The original reason for adding the CR signature (in addition to the legacy LAN signature) was because of an
issue observed that any time the LAN driver initiated a GRC reset to the LAN function (function 0), the boot
code would reexecute and perform a full device initialization, including CR function initialization. This was a
problem if there was any ongoing CR activity on any of the other functions. It became necessary to find a way
for boot code to know when it is safe to initialize the CR function(s).
The diagrams below show the device/function activities that take place when the system resumes to S0 from
a low-power sleep state, and for the reverse use case scenario, entering a sleep state (i.e., transition from S0
to S3).
Vmain
Perst_L
RISC
Reset
BC
LAN Sig
GRC Reset
(LAN only)
Related Information
The following are related multifunction interdependencies:
• The BCM57785 Family BC/BJP firmware executes on Vaux only, regardless of Vmain state.
• BC/BJP firmware detects function 0 register 0x6808[19] transitioning from 1 to 0 to know that the system
is going down (Vmain died).
• BC/BJP firmware clears the CR sig (CR BAR + 0x198[11:8]=0) whenever the firmware detects that the
system is going down (Vmain is going down).
• BC/BJP firmware also clears the CR sig if there is a GRC reset, and Vmain is going down, and the LAN
signature is uninitialized (0xB50 = garbage). The use case here would be an “unexpected shutdown.”
• BC executes in device state D0. Proxy (i.e. BJP) executes in D3. In some systems, the LAN driver loads the
proxy firmware as part of the activity undertaken when entering a system sleep state (i.e. S3). Otherwise,
only BC firmware will be running, and it handles all of the same necessary setting/clearing signature
duties.
• At the time of this document release, the CR sig activities are not available if using either standard self-
boot or OTP-based self-boot. Legacy external NVRAM-based boot code must be used instead. Refer to
Broadcom Application Note 5754X_5787X-AN100-R and NetXtreme-AN404-R for additional information
regarding self-boot.
Purpose
This section details the registers that are implemented in the BCM57785 family of devices (BCM5778X,
BCM5776X, and BCM5779X). The purpose of this section is to provide accurate register implementation
information to engineering teams so that they can develop associated products (such as software suites) and
can validate, test, and support all functions in the device effectively.
Scope
The scope of this engineering register specification covers the entire set of MAC registers in the BCM57785
family of controllers. It includes all MAC Core registers and all PCIe registers.
The Gigabit PHY registers are described in Section 13: “Transceiver Registers,” on page 576
Default
Name Bits Access Value Description
Device ID 31:16 FW-RW – Default for BCM57781 (LAN Function 0): 16B1
Host-RO Default for BCM57785 (LAN Function 0): 16B5
Default for BCM57761 (LAN Function 0): 16B0
Default for BCM57765 (LAN Function 0): 16B4
Default for BCM57791 (LAN Function 0): 16B2
Default for BCM57795 (LAN Function 0): 16B6
For those members of the BCM57785 family that have
card reader functionality the card reader device IDs are
as follows:
• SD/MMC 0x16BC
• MS 0x16BE
• xD 0x16BF
Vendor ID 15:0 FW-RW 0x14E4
Host-RO
Default
Name Bits Access Value Description
Detected Parity 31 R/W2C 0x0 When this bit is set, it indicates that the function has
Error received a poisoned TLP
Signaled System 30 R/W2C 0x0 This bit is set when a function sends an ERR_FATAL or
Error ERR_NONFATAL message and the SERR enable bit in the
command register is set
Received Master 29 R/W2C 0x0 This bit is set when a requester receives a completion
Abort with UR completion status
Received Target 28 R/W2C 0x0 This bit is set when a requester receives a completion
Abort with completer abort completion status.
Signaled Target 27 R/W2C 0x0 This bit is set when a function acting as a completer
Abort terminates a request by issuing Completer abort
completion status to the requester
DEVSEL Timing 26:25 RO 0x0 Does not apply to PCIe
Master Data Parity 24 R/W2C 0x0 The master data parity error bit is set by a requester if the
Error parity error enable bit is set in its command register and
either of the following 2 conditions occur. If the requester
receives a poisoned completion if the requester poisons a
write request If the parity Error enable bit is cleared , the
master data parity error status bit is never set
Default
Name Bits Access Value Description
Fast Back-to-back 23 RO 0x0 Does not apply to PCIe.
capable
Reserved 22 RO 0x0 These bits are reserved and tied low per the PCI
specification.
66MHz Capable 21 RO 0x0 Does not apply to PCIe
Capabilities List 20 RO 0x1 This bit is tied high to indicate that the device supports a
capability list. The list starts at address 0x40.
Interrupt Status 19 RO 0x0 Indicates this device generated an interrupt
Reserved 18:16 RO 0x0 These bits are reserved and tied low per the PCIe
specification.
Reserved 15:11 RO 0x00 These bits are reserved and tied low per the PCIe
specification.
Interrupt Disable 10 RW 0x0 When this bit is set, function is not permitted to generate
IntX interrupt messages (deasserted) regardless of any
internal chip logic. Setting this bit has no effect on the
INT_STATUS bit below. Writing this bit to 0 will un-mask
the interrupt and let it run normally.
Fast Back-to-back 9 RO 0x0 Does not apply to PCIe
Enable
System Error 8 RW 0x0 When set, this bit enables the non fatal and fatal errors
Enable detected by the function to be reported to the Root
Complex. The function reports such errors to the Root
Complex if it is enabled to do so either through this bit or
though PCI express specific bits in DCR
Stepping Control 7 RO 0x0 Does not apply to PCIe
Parity Error Enable 6 RW 0x0 This bit enables the write to the Master data parity error
status bit. If this bit is cleared, the master data parity error
status bit will never be set.
VGA Palette Snoop 5 RO 0x0 Does not apply to PCIe
Memory Write and 4 RO 0x0 Does not apply to PCIe
Invalidate
Special Cycles 3 RO 0x0 Does not apply to PCIe
Bus Master 2 RW 0x0 This bit controls the enabling of the bus master activity by
this device. When low, it disables an Endpoint function
from issuing memory or IO requests. Also disables the
ability to issue MSI messages.
Memory Space 1 RW 0x0 This bit controls the enabling of the memory space. When
disabled, memory transactions targeting this device
return completion with UR status
I/O Space 0 RO 0x0 This bit indicates that the device does not support I/O
space access because it is zero and can not be modified.
IO transactions targeting this device return completion
with UR status.
Default
Name Bits Access Value Description
PCI Classcode 31:8 RO 0x020000 Default for (LAN Function 0): 0x020000
Revision ID — All- 7:4 FW-RW ASIC Rev This field will be updated automatically by hardware
layer Revision ID Host-RO Input based on the External All Layer Revision ID. For
example, this field will contain a value of 0x0 after hard
reset for BCM57785 A0 silicon. Software shall use this
field only to display the Device Silicon Revision ID for
application where the user/customer needs to know
the Device Silicon Revision ID. One such application is
the B57DIAG Device Banner. Furthermore, Software
(Boot Code/Driver/B57DIAG) shall NOT use this field in
determining Bug Fixes. It should only use the Internal
Revision ID, bits 31:24 and bits 19:16 from Register 68,
for that purpose.
• 0x0 for A steps
• 0x1 for B steps
• 0x2 for C steps
Revision ID — 3:0 FW-RW ASIC Rev This field will be updated automatically by hardware
Metal Revision ID Host-RO Input based on the Metal Revision ID.
• 0x0 for metal 0 step
• 0x1 for metal 1 step
• 0x2 for metal 2 step
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) —
Function 0
Default
Name Bits Access Value Description
BIST 31:24 RO 0x0 The 8-bit BIST register is used to initiate and report the
FW-RW results of any Built-In-Self-Test. This value can be
written by firmware through the PCI register space
BIST register to modify the read value to the host.
Header Type 23:16 RO 0x80 The 8-bit Header Type register identifies both the
layout of bytes 10h through 3Fh of the Configuration
space, as well as whether this adapter contains
multiple functions. A value of 0x80 indicates a multi
function device (Type 0) using the format specified in
the PCI specification, while a value of 0x0 indicates a
single function Type 0 device.
Latency Timer 15:8 RO 0x0 This register does not apply to PCI express and must be
hardwired to zero
Cache Line Size 7:0 RO 0x0 This field is implemented by PCIe device as a read/
FW-RW write field for legacy compatibility purposes.
Default
Name Bits Access Value Description
Base Address 31:xx RW 0x0 These bits set the address within a 32-bit address space that
will be card will respond in. These bits may be combined with
the bits in BAR_2 to create a full 64 bit address decode. Only
the bits that address blocks bigger than the setting in the
BAR1_SIZE value are RW. All lower bits are RO with a value of
zero. This value is sticky and only reset by HARD Reset.
Size indication xx-1:4 RO 0x0 RO bits indicate size of memory space. For BCM5778X,
BCM5779X, BCM5776X:
15:4 RO=0 (64KB BAR) if flat_view = 0
24:4 RO=0 (32MB BAR) if flat_view = 1
See Register 0x70 for definition of flat_view.
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_1 may be
Strap input pre-fetched or cached by the system without side effects. Bit
to pcie can be programmed from shadow register.
block
Type 2:1 Host RO 0x2 These bits indicate that BAR_1 may be programmed to map
Strap input this adapter to anywhere in the 64-bit address space.
to pcie Encoded with the following values:
block 00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For function 0, this value is 2 (64-bit enabled)
Memory Space 0 RO 0x0 This bit indicates that BAR_1 maps a memory space and is
Indicator always read as 0.
Default
Name Bits Access Value Description
Extended Base 31:0 RW 0x0 The 32-bit BAR_2 register programs the upper half of the
Address RO if base address for the memory space mapped by the card onto
bar1_64ena the PCI bus. These bits set the address upper 32-bit address
is 0'0 space. These bits may be combined with the bits in BAR_1 to
create a full 64 bit address decode. These bits must be set to
zero for the card to respond to single address cycle requests.
This value is sticky and only reset by HARD Reset.
Default
Name Bits Access Value Description
Base Address 2 31:0 RO 0x0 For BCM57785, BAR 3 is disabled.
Default
Name Bits Access Value Description
Extended Base 31:0 RO 0x00 For BCM57785, BAR 4 is disabled.
Address 2
Default
Name Bits Access Value Description
Cardbus CIS 31:0 FW-RW 0x0 N/A for PCIe Device
Pointer Host — RO
Default
Name Bits Access Value Description
Subsystem Device 31:16 FW-RW – Default for BCM57781 (LAN Function 0): 96B1
ID Host — RO Default for BCM57785 (LAN Function 0): 96B5
Default for BCM57761 (LAN Function 0): 16B0
Default for BCM57765 (LAN Function 0): 16B4
Default for BCM57791 (LAN Function 0): 96B2
Default for BCM57795 (LAN Function 0): 96B6
Subsystem 15:0 FW-RW 0x14E4 Identifies board manufacturer
Vendor ID Host — RO
Default
Name Bits Access Value Description
ROM Base 31:24 RW 0xXXXX These bits indicate the address of the Expansion ROM
Address area.
ROM Size 23:11 RW 0x00 These bits indicate the size of the Expansion ROM area
indication or the address of it. The boundary form RO bits to RW
bits is controlled by the EXP_ROM_SIZE bits.
Reserved 10:1 RO 0x000 These bits indicate that the Expansion ROM area is at
least 2k bytes. They always read as zero. P
Expansion ROM 0 RW 0x0 This bit indicates that the Expansion ROM BAR is valid
Enable when set to one. If it is zero, the expansion BAR should
not be programmed or used. This bit will only be RW if
it is enabled by the EXP_ROM_ENA bit which defaults
to 0.
Default
Name Bits Access Value Description
RESERVED 31:8 RO 0x0 Unused
Capabilities 7:0 RO 0x48 The 8-bit Capabilities Pointer register specifies an
pointer (PM Cap) offset in the PCI address space of a linked list of new
capabilities. The capabilities are PCI-X, PCI Power
Management, Vital Product Data (VPD), and Message
Signaled Interrupts (MSI) is supported. The read-only
value of this register is controlled by the CAP_ENA
register in the PCI register space.
Default
Name Bits Access Value Description
MAXIMUM_LATENC 31:24 RO 0x00 Hardwired to zero
Y
MIN_GRANT 23:16 RO 0x00 Hardwired to zero
Interrupt Pin 15:8 RO 0x01 Indicates which interrupt pin this device uses:
0: no Interrupt
1: Use Interrupt A
2: Use Interrupt B
3: Use Interrupt C
4: Use Interrupt D
Interrupt Line 7:0 RW 0x00 Identifies interrupt routing information
Default
Name Bits Access Value Description
Indirect Interrupt 63:0 RW 0 Interrupt Mailbox
mail box This register is mapped to the old mailbox register B0 and
B4.
Default
Name Bits Access Value Description
PME Support 31:27 RO 0x08 if no Indicates the power states in which the device may assert
aux PME. A 0 for any bit indicates that the device is not capable of
0x18 if aux asserting the PME pin signal while in that power state.
Bit 27: PME can be asserted from D0
Bit 28: PME can be asserted from D1
Bit 29: PME can be asserted from D2
Bit 30: PME can be asserted from D3H
Bit 31: PME can be asserted from D3C (default depends on
the presence of Aux power)
D2 Support 26 RO 0x0 Indicates whether the device supports the D2 PM state. This
device does not support D2; hardwired to 0
D1 Support 25 RO 0x0 Indicates whether the device supports the D1 PM state. This
FW-RW device does not support D1
Aux Current 24:22 RO 0x0 This device supports the data register for reporting Aux
FW-RW Current requirements so this field is N/A.
DSI 21 RO 0x0 Indicates that the device requires device specific initialization
FW-RW (beyond PCI configuration header) before the generic class
device driver is able to use it. This device hardwires this bit to
0 indicating that DSI is not necessary
Reserved 20 RO 0x0 –
PME Clock 19 RO 0x0 Indicates that the device relies on the presence of the PCI
clock for PME operation. This device does not require the PCI
clock to generate PME. Therefore, the bit is hardwired to 0
Version 18:16 RO 0x3 A value of 011b indicates that this function complies with
revision 1.2 of the PCI PM specification.
PM Next 15:8 RO 0x58 Points to the next capabilities block which is Broadcom
Capabilities Vendor Specific Capability Header
PM Capability 7:0 RO 0x01 Identifies this item as Power management capabilities
ID
Default
Name Bits Access Value Description
PM Data 31:24 RO 0x00 Contains the power management data indicated by the Data
FW-RW Select field in PMCSR
Reserved 23:16 RO 0x00 –
PME Status 15 RW2C 0x0 This bit is set when the device asserts the WAKE signal
independent of the PME enable bit. Writing 1 this bit will clear it
and cause the deice to stop asserting WAKE
Data Scale 14:13 RO 0x1 Indicates the scaling factor that is used when interpreting the
value of the data register (offset 7 in PM capability space). The
device hardwires this value to 1 to indicate a scale of 1x
Data Select 12:9 RW 0x0 Indicates which data is to be reported via the Data register (offset
7 in PM capability space)
PME Enable 8 RW 0x1 Enables the device to generate PME when this bit is set to 1.
When 0, PME generation is disabled
Reserved 7:4 RO 0x00 –
No Soft 3 RO 0x1 No_Soft_Reset
Reset When set (1), this bit indicates that devices transitioning from
D3hot to D0 because of PowerState commands do not perform an
internal reset. Configuration Context is preserved. Upon
transition from the D3hot to the D0 Initialized state, no additional
operating system intervention is required to preserve
Configuration Context beyond writing the PowerState bits.
When clear (0), devices do perform an internal reset upon
transitioning from D3hot to D0 via software control of the
PowerState bits. Configuration Context is lost when performing
the soft reset. Upon transition from the D3hot to the D0 state, full
reinitialization sequence is needed to return the device to D0
Initialized.
Regardless of this bit, devices that transition from D3hot to D0 by
a system or bus segment reset will return to the device state D0
Uninitialized with only PME context preserved if PME is supported
and enabled.
Reserved 2 RO 0x0 –
Default
Name Bits Access Value Description
Power State 1:0 RW 0x0 Indicates the current power state of the device when read.
When written, it sets the device into the specified power state
00: D0 - Select D0
01: D1 - Select D1
10: D2 - Select D2
11: D3-Hot - Select D3
These bits may be used by the system to set the power state. The
register is implemented as two banks of two bits each. Can be
written from both configuration space and from the PCI register
space as the PM_STATE bits. When written from the PCI bus, only
values of 0 and 3 will be accepted. This is the register returned on
reads of this register from configuration space. The second bank
catches all writes values. The value of the second register is
returned when the PM_STATE bits are read from register space.
The idea of these registers is to a) Provide compatible operation
to 5701 b) Allow implementation of other power states though
firmware.
Default
Name Bits Access Value Description
MSI Control 31:25 R/O 0x00 Reserved
MSI_PVMASK_ 24 RO 0 This bit indicates if the function supports per vector
CAPABLE masking. This value comes from the MSI_PV_MASK_CAP
bit in the register space.
64-bit Address 23 RO 1 Hardwired
Capable Advertise 64-bit address capable
This bit indicates that the chip is capable of generating 64
bit MSI messages.
Multiple Message 22:20 R/W 0x0 These bits indicate the number of message that the chip is
Enable configured (allowed) to generate. Number of allocated
message:
0 1 Chip is set to generate 1 message
1 2 Chip is set to generate 2 messages
2 4 Chip is set to generate 4 messages
3 8 Chip is set to generate 8 messages
4 16 Chip is set to generate 16 messages
5 32 Chip is set to generate 32 messages
Default
Name Bits Access Value Description
Multiple Message 19:17 R/O 0x3 These bits indicate the number of messages that the chip
Capable is capable of generating. This value comes from the bit in
the register space. Number of requested message:
0 1 Chip is set to generate 1 message
1 2 Chip is set to generate 2 messages
2 4 Chip is set to generate 4 messages
3 8 Chip is set to generate 8 messages
4 16 Chip is set to generate 16 messages
5 32 Chip is set to generate 32 messages
MSI Enable 16 R/W 0 When this bit is set, the chip will generate MSI cycles to
indicate interrupts instead of asserting the INTA# pin.
When this bit is zero, the INTA# pin will be used.
Next Capability 15:8 RO A0 This value continues the PCI capability chain. It's value
Pointer (MSIX Cap) specified an offset in the PCI address space of the next
capability. The read-only value of this register is controlled
by the CAP_ENA register in the PCI register space.
MSI capability ID 7:0 RO 0x5 The 8-bit MSI Capability ID is set to 5 to indicate that the
next 8 bytes are a Message Signaled Interrupt capability
block.
Default
Name Bits Access Value Description
MSI Lower 31:2 R/W Unknown MSI Lower Address
Address
Reserved 1:0 RO 0 –
Default
Name Bits Access Value Description
MSI Upper 31:0 R/W Unknown MSI Upper Address
Address
Default
Name Bits Access Value Description
MSI Data 15:0 R/W Unknown MSI Data
Default
Name Bits Access Value Description
ASIC Rev ID 31:28 R Product ID 0xF indicates that the new revision ID format is in effect.
input
27:24 R ASIC Rev External All Layer Revision ID.
Input These bits will reflect in offset 8 --- bit mapping description:
0x0: A
0x1: B
0x2: C
23:16 R ASIC Rev Metal Rev Number:
Input 0x0: 0
0x1: 1
0x2: 2
Unused 15:10 RW 0 Unused
Enable Tagged 9 RW 0 When set, an unique eight-bit tag value will be inserted into
Status Mode the Status block status tag.
Mask Interrupt 8 RW 0 When set, the interrupt is masked. However, the internal
Mode interrupt state (host coalescing event) will not be cleared.
Enable indirect 7 RW 0 Set this bit to enable indirect addressing mode.
access
Enable Register 6 RW 0 Set this bit to enable word swapping when accessing
Word Swap registers through the PCI target device.
Unused 5 RW 0 Set this bit enable clock control register read/write
capability, otherwise, the clock control register is read only.
Enable PCI State 4 RW 0 Set this bit to enable PCI state register read/write capability,
register read/write otherwise the register is read only.
capability
Enable Endian Word 3 RW 0 Set this bit to enable endian word swapping when accessing
Swap for target through PCIe target interface.
access
Enable Endian Byte 2 RW 0 Set this bit to enable endian byte swapping when accessing
Swap for target through PCIe target interface
access
Mask Interrupt 1 RW 0 Setting this bit will mask future interrupt events from being
generated. Setting this bit will not clear or deassert the
internal interrupt state, nor will it deassert the external
interrupt state.
Unused 0 WO 0 Not used in BCM57785 family.
This bit used to be defined as the Clear Interrupt Bit. Setting
this bit will clear interrupt as long as the mask interrupt bit is
not set. If mask interrupt bit is set, then writing 1 to this bit
will not deassert interrupt, however, it will clear the internal
unmasked interrupt state, so if the interrupt is later
unmasked, the interrupt will deassert.
Default
Name Bits Access Value Description
Reserved 31:25 RW 0x0 –
CR Write 24:22 RW 0x7 CR DMA Write Watermark:
Watermark 0 = 32B
1 = 64B
2 = 96B
3 = 128B
4 = 160B
5 = 192B
6 = 224B
7 = 256B
DMA Write 21:19 RW 0x7 DMA Write Watermark:
Watermark 0 = 32B
1 = 64B
2 = 96B
3 = 128B
4 = 160B
5 = 192B
6 = 224B
7 = 256B
Reserved 18:10 RW 0 –
Card-Reader DMA 9:7 RW 0 This parameter is compared with the system MRRS. The
Read MRRS smaller value of this value and MRRS from pcie_core will be
used as for max DMA read length.
0 = 1024B
1 = 128B
2 = 256B
3 = 512B
4 = 512+256B
5 = 1024+512B
6 = 2048B
7 = 4096B
Default
Name Bits Access Value Description
DMA read MRRS 6:4 RW 0 for 10M/100M Ethernet DMA read, the smaller value of
for slow speed this value and MRRS from pcie_core will be used as for max
DMA read length. This configure has no effect for GIGA
mode.
0 = 1024B
1 = 128B
2 = 256B
3 = 512B
4 = 512+256B
5 = 1024+512B
6 = 2048B
7 = 4096B
Reserved 3:1 R/W 0 –
disable_cache_ 0 RW 0 Disable cache alignment for DMA write to Host memory
alignment
Default
Name Bits Access Value Description
Reset Counter 5 Register 31:28 Host RW Any Keep tracks of the number of Core Syn Reset that are
(PCI CLK Core Syn Reset) synchronized in the PCI Clock Domain
Reset Counter 4 Register 27:24 Host RW Any Keep tracks of the number of Hot Reset events.
(Hot Reset)
Reset Counter 3 Register 23:16 Host RW Any Keep tracks of the number of GRC Reset.
(GRC Reset)
Reset Counter 2 Register 15:8 Host RW Any Keep tracks of the number of Perst events.
(Perst Reset)
Reset Counter 1 Register 7:0 Host RW Any Keep tracks of the number of LinkDown Reset events.
(LinkDown Reset)
Default
Name Bits Access Value Description
Reserved 31:18 RO 0 –
Register Base 17:2 RW X Local controller memory address of a register than can be
Register written or read by writing to the register data register
Reserved 1:0 RO 0 –
Default
Name Bits Access Value Description
Reserved 31:24 RO 0 –
Memory Base 23:2 RW X Local controller memory address of the NIC memory region
Register that can be accessed via Memory Window data register
Reserved 1:0 RO 0 –
Default
Name Bits Access Value Description
Register Data 31:0 RW X Register Data at the location pointed by the Register Base
Register Address register
Default
Name Bits Access Value Description
Memory Base 31:0 RW X Memory value at the location pointed by the Memory
Register Window Base Address register
Default
Name Bits Access Value Description
MSIX_ENABLE 31 RW 0 If 1, and the MSI enable bit in the MSI message control
register is 0, the function is permitted to use MSIX
request service and profited from using INTx#
messages.
FUNC_MASK 30 RW 0 If 1, all of the vectors associated with the function are
masked regardless of their per vector Mask bit.
RESERVED 29-27 RO 0 Reserved
TABLE_SIZE 26-16 RO 0 System sw reads this field to determine the MSI-X table
size N, which is encoded as N-1
MSIX_NEXT_CAP_ 15-8 RO 0xAC This value continues the PCI capability chain. It's value
PTR (PCIe Cap) specified an offset in the PCI address space of the next
capability. The read-only value of this register is
controlled by the CAP_ENA register in the PCI register
space.
MSIX_CAP_ID 7-0 RO 0x11 Capability ID for MSIX
Default
Name Bits Access Value Description
TABLE_OFFSET 31-3 RO 0 –
TABLE_BIR 2-0 RO 0 Indicates which one of functions BAR is used to map
MSI-X table into memory space.
Default
Name Bits Access Value Description
PBA_OFFSET 31-3 RO 0 –
PBA_BIR 2-0 RO 0 Indicates which one of functions BAR is used to map MSI-
X PBA into memory space.
Default
Name Bits Access Value Description
Reserved 31:30 RO 0 Unused
Message Number 29-25 FW-RW 0 Interrupt Message Number:indicate which MSI/MSI-X vector
RO is used for the interrupt message generated in association
with any of the status bits of this capability structure. For MSI,
the value in this register indicates the offset between the
base Message Data and the interrupt message that is
generated. For MSI-X, the value in this register indicates
which MSI-X Table entry is used to generate the interrupt
message. The entry must be one of the first 32 entries even if
the function implements more than 32 entries.
Slot implemented 24 RO 0 Hardwired to 0 because this is an endpoint device.
Slot Implemented. This register is not supported.
Device/Port Type 23-20 RO 0 Hardwired to 0 because this is an endpoint device.
Device/Port Type. Device is an End Point.
Capability Version 19-16 RO 2 Capability Version. PCI Express Capability structure version
number. These bits are hardwired to 2h.
PCIE_NEXT_CAP_P 15-8 RO 0 This registers contains the pointer to the next PCI capability
TR structure.
PCIE_CAP_ID 7-0 RO 0x10 This register contains the PCI Express Capability ID.
Default
Name Bits Access Value Description
Reserved 31:29 RO 0 –
FLR_CAP_ 28 RO 0 FLR capability is advertised when flr_supported bit in private
SUPPORTED device_capability register space is set.
Captured Slot 27:26 RO 0 This value specifies the scale used for the Power Limit:
Power Limit Scale 00 = 1.0x
01 = 0.1x
10 = 0.01x
11 = 0.001x
Specifies the scale used for the Slot Power Limit Value. It is set
by the Set_Slot_Power_Limit Message. This field is not set for
Root ports.
Captured Slot 25:18 RO 0 This value specifies the upper limit on the power supplied for
Power Limit Value this device.
Specifies the upper limit on power supplied by slot. It is set by
the Set_Slot_Power_Limit Message. This field is not set for
Root ports.
Reserved 17:16 RO 0 Unused
Role Based Error 15 RO 1 When set to 1, this value indicates that a role based error is
Support supported. Indicate device is conforming to the ECN, PCI
Express Base Specification, Revision 1.1., or subsequent PCI
Express Base Specification revisions
Reserved 14-12 RO 0 Unused
Endpoint L1 11:9 FW-RW 6h This value returns the latency that this device can accept
Acceptable when transitioning from the L1 to the L0 state:
Latency 000 = less than 1 us
001 = 1 us to less than 2 us
010 = 2 us to less than 4 us
011 = 4 us to less than 8 us
100 = 8 us to less than 16 us
101 = 16 us to less than 32 us
110 = 32 us to 64 us
111 = Greater than 64 us
Endpoint L1 Acceptable Latency. These bits are
programmable through register space. The bits should be 0
for Root ports.
Default
Name Bits Access Value Description
Endpoint L0s 8:6 FW-RW 6h This value returns the total latency that this device can accept
Acceptable when transitioning from the L0s to L0 state:
Latency 000 = less than 64 ns
001 = 64 ns to less than 128 ns
010 = 128 ns to less than 256 ns
011 = 256 ns to less than 512 ns
100 = 512 ns to less than 1 us
101 = 1 us to less than 2 us
110 = 2 us to 4 us
111 = Greater than 4 us
Endpoint L0s Acceptable Latency. These bits are
programmable through register space. The value should be 0
for root ports.
Extended Tag Field 5 RO 0 This value returns the maximum supported tag field size
Supported when this function acts as a requester.
0 = 5-bit tag field
1 = 8-bit tag field
We do support extended tag.
Extended Tag Field Support. This bit is programmable through
register space. This capability is not currently supported.
Reserved 4:3 RO 0 Unused
Max Payload Size 2:0 FW-RW 0 This value returns the maximum data payload size (in bytes)
Supported that this function supports for TLPs:
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7 = Reserved
Max Payload Size Supported. These bits are programmable
from the register space and default value is based on define
in version.v file.
Default
Name Bits Access Value Description
Reserved 31-22 RO 0 –
Transaction 21 RO 0 When this bit is set to 1, it indicates that this device has issued
Pending nonposted request packets which have not been completed.
This is bit is read back a 1, whenever a nonposted request
initiated by PCIe core is pending to be completed.
Default
Name Bits Access Value Description
Aux Power 20 RO 0 When this bit is set to 1, it indicates that Aux power has been
Detected detected.
This bit is the current state of the VAUX_PRSNT pin of the
device. When it is 1, it is indicating that part needs VAUX and
detects the VAUX is present.
Unsupported 19 W2C 0 When this bit is set to 1, it indicates that an Unsupported
Request Detected Request has been received.
Unsupported Request Detected.
Fatal Error 18 W2C 0 When this bit is set to 1, it indicates that a Fatal Error has been
Detected detected. Fatal error detected.
Non-fatal Error 17 W2C 0 When this bit is set to 1, it indicates that a nonfatal error has
Detected been detected. Nonfatal error detected.
Correctable Error 16 W2C 0 When this bit is set to 1, it indicates that a correctable error
Detected has been detected. Correctable error detected.
FLR_INITIATED 15 RW 0 Initiate Function Level reset. This bit is writeable only if
flr_supported bit in private device_capability register is set. A
write of 1 to this bit initiates Function Level Reset. The value
read by s/w from this bit is always 0.
Max Read Request 14:12 RW 2 This value controls the maximum read requests size for this
Size device when acting as the requester:
0 = 128
1 = 256
2= 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Maximum Read Request Size. Depending on the spec, internal
logic uses either the min or the max of the value of the two
functions.
Enable No Snoop 11 RW 1 When this bit is set, the memory accessed by this device will
not be cached by the processor. Enable No Snoop. When this
bit is set to 1, PCIe initiates a read request with the No Snoop
bit in the attribute field set for the transactions that request
the No Snoop attribute.
Aux Power PM 10 RO 1 When this bit is set, this device is enabled to draw aux power
Enable independent of PME power. This bit when set enables device
to draw aux power independent of PME AUX power
RESERVED 9 RO 0 Unused
Extended Tag Field 8 RW 0 When this bit is set, it enables this device to use an 8-bit Tag
Enable field as a requester. This capability is not supported.
Default
Name Bits Access Value Description
Max Payload Size 7:5 RW 0 This value sets the maximum TLP data payload size (in bytes)
for this device:
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Max Payload Size. Depending on the spec, internal logic uses
either the min or the max of the value of the two functions.
Enabled Relaxed 4 RW 1 When this bit is set, this device is permitted to set the Relaxed
Ordering Ordering bit. Relax Ordering Enable.
Unsupported 3 RW 0 When this bit is set, Unsupported Request reporting is
Request Reporting enabled. Unsupported request reporting enable.
Enable
Fatal Error 2 RW 0 When this bit is set, Fatal Error reporting is enabled. Fatal
Reporting Enabled Error Reporting Enable.
Non-fatal Error 1 RW 0 When this bit is set, nonfatal error reporting is enabled.
Reporting Enabled Nonfatal Error reporting enable.
Correctable Error 0 RW 0 When this bit is set, Correctable Error reporting is enabled.
Reporting Enabled Correctable Error reporting enable.
Default
Name Bits Access Value Description
Port Number 31:24 RO 0:HWinit This value indicates the port number associated with this.
PCIe Port Number. These bits are programmable through
register.
Reserved 23:22 RO 0 –
LINK_BW_NOTIFY 21 RO 0 Link Bandwidth Notification Capability: RC: A value of 1b
indicates support for the Link Bandwidth Notification
status and interrupt mechanisms. This capability is
required for all Root Ports and Switch Downstream Ports
supporting Links wider than x1 and/or multiple Link
speeds. RC: Field is implemented. EP: Not supported and
hardwired to 0.
Default
Name Bits Access Value Description
DL_ACTIVE_REP 20 RO 0 Data Link Layer Link Active Reporting Capable: RC: this bit
must be hardwired to 1b if the component supports the
optional capability of reporting the DL_Active state of the
Data Link Control and Management State Machine. RC:
Implemented (RW) for RC. Default to 0. EP: Not supported
and hardwired to 0.
SUR_DWN_ERR_REP 19 RO 0 Surprise Down Error Reporting Capable: RC: this bit must
be set if the component supports the optional capability
of detecting and reporting a Surprise Down error
condition. RC: Not supported and hardwired to 0. EP: Not
supported and hardwired to 0.
Clock Power 18 Host RO 1 1 = clkreq capable
Management FW R/W 0 = clkreq not capable
If it's mobile bonding, the default value will be 1;
otherwise, 0.
L1 Exit Latency 17:15 RO 2 This value returns the L1 exit latency for this link:
FW-RW 0 = Maximum of 1 us
1 = Maximum of 2 us
2 = Maximum of 4 us
3 = Maximum of 8 us
4 = Maximum of 16 us
5 = Maximum of 32 us
6 = Maximum of 64 us
7 = No limit
L1 Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
L0s Exit Latency 14:12 RO 4 This value returns the L0s exit latency for this link:
FW-RW 0 = less than 64 ns
1 = less than 128 ns
2 = less than 256 ns
3 = less than 512 ns
4 = less than 1 us
5 = less than 2 us
6 = less than 4 us
7 = greater than 4 us
L0s Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Default
Name Bits Access Value Description
Active State power 11:10 RO 3 This value returns the supported ASPM states;
management support FW-RW 0 = reserved
1 = L0s supported
2 = reserved
3 = L0s and L1 supported
ASPM Support. These bits are programmable through reg
space.
Maximum Link Width 9:4 RO 1 This value returns the maximum link width. Allowable
FW-RW values are 1, 2, 4, 8, 12, 16, and 32 only. All other values
are reserved.
Value Name Description
1 1 One Lane Max
2 2 Two Lanes Max
4 4 Four Lanes Max
8 8 Eight Lanes Max
Maximum Link Width. These are programmable through
reg space.Bit 9 is always 0 and is not programmable.
Default value is based on numLanes field in version.v
Maximum Link Speed 3:0 RO 1 This value returns the Maximum Link Speed. 1 = 2.5Gbps.
FW-RW All other values reserved.
Value Name Description
1 2_5 2.5 Gbps Max
2 5 5 Gbps Max
Value used by internal logic is the smaller of the value
programmed for each function.
Default
Name Bits Access Value Description
Reserved 31-30 RO 0 Unused
DL_ACTIVE 29 RO 0 Data Link Layer Link Active: returns a 1b to indicate the
DL_Active state, 0b otherwise. Not implemented and
hardwire to 0.
Slot Clock 28 RO 1 This value indicates that this device uses the same physical
Configuration reference clock that the platform provides on the
connector. Slot Clock configuration. This bit is read-only by
host, but read/write via backdoor CS bus.
LINK_TRAINING 27 RO 0 EP: This bit is N/A and is hardwired to 0.
Reserved 26 RO 0 Unused
Negotiated Link 25-20 RO 0 This value returns the negotiated link width. The only valid
Width values are 1, 2, 4, 8, 12, 16, 32
Default
Name Bits Access Value Description
Negotiated Link 19-16 RO 0 This value returns the negotiated link speed. 1 = 2.5 Gbps.
Speed Link Speed. These bits indicate the negotiated link speed of
the PCI Express link.
Reserved 15:12 RO 0 Unused
LINK_BW_INT_EN 11 RO 0 Link Autonomous Bandwidth Interrupt Enable: When Set,
this bit enables the generation of an interrupt to indicate
that the Link Autonomous Bandwidth Status bit has been
Set. RC: Not implemented and hardwired to 0. EP: N/A and
hardwired to 0.
LINK_BW_MGMT_IN 10 RO 0 Link Bandwidth Management Interrupt Enable: when Set,
T_EN this bit enables the generation of an interrupt to indicate
that the Link Bandwidth Management Status bit has been
Set. RC: N/A and hardwired to 0. EP: Not implemented and
hardwired to 0.
HW_AUTO_WIDTH_ 9 RO 0 Hardware Autonomous Width Disable: When Set, this bit
DIS disables hardware from changing the Link width for
reasons other than attempting to correct unreliable Link
operation by reducing Link width. Other functions are
reserved. RC: Not applicable and hardwire to 0 EP: If
supported, only apply to function0. Not implemented and
hardwire to 0.
Clock Request Enable 8 RW 0 1 = clkreq is enabled
0 = clkreq is disabled
Enable Clock Power Management: RC: N/A and hardwired
to 0. EP: When this bit is set, the device is permitted to use
CLKREQ# signal to power management. Feature is enabled
through version.v define.
Extended Synch 7 RW 0 When this bit is set, it forces extended sync which gives
external devices (such as logic analyzers) additional time to
achieve bit and symbol lock. Extended Synch. This bit when
set forces the transmission of 4096 FTS ordered sets in the
L0s state followed by a single SKP ordered set prior to
entering the L0 state, and the transmission of 1024 TS1
ordered sets in the L1 state prior to entering the Recovery
state. Value used by logic is resolved to 1 if either function
has this bit set.
Common Clock 6 RW 0 When this bit is set, it indicates that the link partners are
Configuration using a common reference clock. Common Clock
Configuration. Value used by logic is resolved to 1 only if
both functions (when enabled) have this bit set.
Reserved (Retrain 5 RO 0 The device does not support this feature. Requesting PHY
Link) to retrain the link. This bit is only applicable to RC. So for EP
it is read only bit.
Reserved (Link 4 RO 0 The device does not support this feature. Requesting PHY
Disable) to disable the link. This bit is only applicable to RC. So for EP
it is read only bit.
Default
Name Bits Access Value Description
Read Completion 3 RW 0 This value indicates the Read Completion Boundary value
Boundary (in bytes) of the upstream root port:
0 = 64
1 = 128
Reserved 2 RO 0 Unused
Active State Power 1:0 RW 0 This value control the Active State power management
Management supported on this link:
Control 0 = Disabled
1 = L0s entry enabled
2 = L1 entry enabled
3 = L0s and L1 entry enabled
ASPM Control. Value used by logic is dependent on the
value of this bit for each enabled function and also on the
programmed powerstate of each function.
Default
Name Bits Access Value Description
PHYSICAL_SLOT_NUMBER 31-19 RO 0 Not Implemented
RESERVED 18-17 RO 0 Unused
SLOT_POWER_LIMIT_SCALE 16-15 RO 0 Not Implemented
SLOT_POWER_LIMIT_VALUE 14-7 RO 0 Not Implemented
RESERVED 6-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS 31-23 RO 0 Not Implemented
PRESENCE_DETECT 22 RO 0 Not Implemented
RESERVED 21-16 RO 0 Not Implemented
SLOT_CONTROL 15-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-12 RO 0 Unused
LTR_MECHANISM_ 11 RO 0 Latency Tolerance Reporting Mechanism Supported,
SUPPORTED Programmable through register space. This field will
read 1, when bit 5 of ext_cap_ena field in private
register space is set.
RESERVED 10-5 RO 0 Unused
CMPL_TIMEOUT_DISABL_ 4 RO 1 Completion Timeout Disable Supported,
SUPPORTED Programmable through register space
CMPL_TIMEOUT_RANGES 3-0 RO F Completion Timeout Ranges Supported.
_SUPPORTED Programmable through register space.
Value Name Description
15 ABCD Ranges A,B,C, and D
Default
Name Bits Access Value Description
DEVICE_STATUS_2 31-16 RO 0 Placeholder for Gen2
RESERVED 15-11 RO 0 Unused
LTR_MECHANISM 10 RW 0 Latency Tolerance Reporting Mechanism Enable, This field is
_ENABLE writeable, when bit 5 of ext_cap_ena field in private register
space is set. This bit is RW only in function 0 and is RsvdP for
all other functions.
IDO_CPL_ENABLE 9 RW 0 IDO Completion Enable, This field is writeable, when bit
ido_supported bit of private device_capability_2 register is
set. When this bit is set, function is permitted to set ID based
Ordering Attribute of Completions it returns.
IDO_REQ_ENABLE 8 RW 0 IDO Request Enable, This field is writeable, when bit
ido_supported bit of private device_capability_2 register is
set. When this bit is set, function is permitted to set ID based
Ordering Attribute of Requests it initiates.
RESERVED 7-5 RO 0 Unused
Default
Name Bits Access Value Description
CMPL_TIMEOUT_ 4 RW 0 Completion Timeout Disable
DISABLE
CMPL_TIMEOUT_ 3-0 RW 0 Completion timeout value. The spec specifies a range, the
VALUE device uses the max value in the range.
Value Name Description
0 50MS 50 ms
1 100US 100 us
2 10MS 10 ms
3 55MS 55 ms
4 210MS 210 ms
5 900MS 900 ms
6 3_5S 3.5s
7 13S 13s
8 64S 64s
Default
Name Bits Access Value Description
LINK_CAPABILITY_2 31-0 RO 0 Placeholder for Gen2
Defaul
Name Bits Access t Value Description
LINK_STATUS_2 31-17 RO 0 Placeholder for Gen2
CURR_DEEMPH_ 16 RO 0 curr_deemph_level
LEVEL
RESERVED 15-13 RO 0 Unused
CFG_COMPLIANCE 12 RW 0 Compliance deemphasis.
_DEEMPH
CFG_COMPLIANCE 11 RW 0 Compliance SOS.
_SOS
CFG_ENTER_MOD 10 RW 0 Enter Modified Compliance.
_COMPLIANCE
Defaul
Name Bits Access t Value Description
CFG_TX_MARGIN 9-7 RW 0 Controls the value of non deemphasized voltage level at the TX
pins. Value used by logic is resolved to the smaller binary value,
if two functions have different values.
0 000 800-1200 mV for full swing and 400-600 mV for half
swing
1 001 Values are monotonic with non-zero slope
2 010 Values are monotonic with non-zero slope
3 011 200-400 mV for full swing and 100-200 mV for half
swing
4 100 Reserved
5 101 Reserved
6 110 Reserved
7 111 Reserved
SEL_DEEMPHASIS 6 RW 0 When link is operating at Gen2 rates, this bit selects the level of
deemphasis. Value used by logic is resolved to 1 if either
function has this bit set.
0 0 – 6 dB
1 1 – 3.5 dB
HW_AUTO_SPEED 5 RO 0 Not Supported and hardwired to 0.
_DISABLE
ENTER_ 4 RW 0 S/W instructs link to enter compliance mode. Value used by
COMPLIANCE internal logic is set when either function has this bit enabled.
TARGET_LINK_ 3-0 RW 0 Upper limit of link speed:
SPEED 0 2_5 2.5 Gbps
1 5_0 5.0 Gbps
Defaul
Name Bits Access t Value Description
SLOT_CAPABILITY_2 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS_2 31-16 RO 0 Not Implemented
SLOT_CONTROL_2 15-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
Next Capability Offset 31:20 RO 0x13Ch Next Capabilities Pointer is 0x13C which is Power
Budget.
PCI Express Extended 15:0 RO 0x0001 PCI Express Extended Capability ID. These bits are
Capability ID hardwired to 0001h indicating the presence of PCI
Express Advanced Error Capability.
Default
Name Bits Access Value Description
Reserved 31:21 RO 0 –
Unsupported 20 RW1CS 0 This bit is set when an unsupported request error
Request Error Status occurs
ECRC Error Status 19 RW1CS 0 This bit is set when an ECRC error occurs
Malformed TLP 18 RW1CS 0 This bit is set when a Malformed TLP error occurs
Status
Receiver Overflow 17 RW1CS 0 This bit is set when a Receiver Overflow error occurs
Status
Unexpected 16 RW1CS 0 This bit is set when an Unexpected Completion error
Completion Status occurs
Completer Abort 15 RW1CS 0 This bit is set when a completer Abort error occurs
Status
Completion Timeout 14 RW1CS 0 This bit is set when completion timeout error occurs
Status
Flow control Protocol 13 RW1CS 0 This bit is set when a Flow control protocol error occurs
Error Status
Poisoned TLP Status 12 RW1CS 0 This bit is set when a Poisoned TLP error occurs
Reserved 11:5 RO 0 –
Default
Name Bits Access Value Description
Data Link Protocol 4 RW1CS 0 This bit is set when a Data Link Protocol error occurs
Error Status
Reserved 3:0 RO 0 –
Training Error Status 0 RW1CS 0 This bit is set when a training error occurs
Default
Name Bits Access Value Description
Reserved 31:21 RO 0 –
Unsupported Request 20 RWS 0 Setting this bit will mask Unsupported Request Error
Error Mask
ECRC Error Mask 19 RWS 0 Setting this bit will mask ECRC error
Malformed TLP Mask 18 RWS 0 Setting this bit will mask Malformed TLP error
Receiver Overflow 17 RWS 0 Setting this bit will mask Receiver overflow error
Mask
Unexpected 16 RWS 0 Setting this bit will mask unexpected completion
Completion Mask error
Completer Abort Mask 15 RWS 0 Setting this bit will mask completer abort error
Completion Timeout 14 RWS 0 Setting this bit will mask completion timeout error
Mask
Flow Control Protocol 13 RWS 0 Setting this bit will mask flow control protocol error
Error Mask
Poisoned TLP Mask 12 RWS 0 Setting this bit will mask poisoned TLP error
Reserved 11:5 RO 0 –
Data Link Protocol Error 4 RWS 0 Setting this bit will mask data link protocol error
Mask
Reserved 3:1 RO 0 –
Training Error Mask 0 RWS 0 Setting this bit will mask training error
Default
Name Bits Access Value Description
Reserved 31:21 RO 0 –
Default
Name Bits Access Value Description
Unsupported Request 20 RWS 0 This bit controls the severity
Error Severity 0 = nonfatal
1 = fatal
ECRC Error Severity 19 RWS 0 This bit controls the severity
0 = nonfatal
1 = fatal
Malformed TLP Severity 18 RWS 1 This bit controls the severity
0 = nonfatal
1 = fatal
Receiver Overflow Error 17 RWS 1 This bit controls the severity
Severity 0 = nonfatal
1 = fatal
Unexpected 16 RWS 0 This bit controls the severity
completion Error 0 = nonfatal
Severity
1 = fatal
Completer Abort Error 15 RWS 0 This bit controls the severity
Severity 0 = nonfatal
1 = fatal
Completion Timeout 14 RWS 0 This bit controls the severity
Error Severity 0 = nonfatal
1 = fatal
Flow control Protocol 13 RWS 1 This bit controls the severity
Error Severity 0 = nonfatal
1 = fatal
Poisoned TLP Severity 12 RWS 0 This bit controls the severity
0 = nonfatal
1 = fatal
Reserved 11:4 RO 0 –
Surprise down error 5 RO 1 Pcie 1.1 spec page 409
severity
Data Link Protocol Error 4 RWS 1 This bit controls the severity
Severity 0 = nonfatal
1 = fatal
Reserved 3:1 RO 0 –
Training Error Severity 0 RWS 1 This bit controls the severity
0 = nonfatal
1 = fatal
Default
Name Bits Access Value Description
Reserved 31:14 RO 0 –
Advisory Non-Fatal 13 RO 0 This bit is set when an advisory nonfatal error occurs
Error Status
Replay Timer Timeout 12 RW1CS 0 This bit is set when a replay timer timeout error occurs
Status
Reserved 11:9 RO 0 –
REPLAY_NUM Rollover 8 RW1CS 0 This bit is set when a REPLAY_NUM Rollover error occurs
Status
Bad DLLP Status 7 RW1CS 0 This bit is set when a Bad DLLP error occurs
Bad TLP Status 6 RW1CS 0 This bit is set when a Bad TLP error occurs
Reserved 5:1 RO 0 –
Receiver Error Status 0 RW1CS 0 This bit is set when a Receiver error occurs
Default
Name Bits Access Value Description
Reserved 31:14 RO 0 –
Advisory Non-Fatal 13 RWS 1 Setting this bit will mask advisory nonfatal errors
Error Mask
Replay Timer Timeout 12 RWS 0 Setting this bit will mask replay timer timeout errors
Mask
Reserved 11:9 RO 0 –
REPLAY_NUM Rollover 8 RWS 0 Setting this bit will mask REPLAY_NUM rollover errors
Mask
Bad DLLP Mask 7 RWS 0 Setting this bit will mask Bad DLLP errors
Bad TLP Mask 6 RWS 0 Setting this bit will mask Bad TLP errors
Reserved 5:1 RO 0 –
Receiver Error Mask 0 RWS 0 Setting this bit will mask receiver errors
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
ECRC Check Enable 8 RWS 0 Setting this bit will enable ECRC checking
Default
Name Bits Access Value Description
ECRC Check Capable 7 RO 1 When this bit is set, it indicates that this device supports
ECRC checking
ECRC Generation 6 RWS 0 Setting this bit will enable ECRC generation
Enable
ECRC Generation 5 RO 1 When this bit is set, it indicates that this device supports
Capable ECRC generation
First Error Pointer 4:0 ROS 0 This value indicates the bit position within the
“Uncorrectable Error Status Register” 0x104
Default
Name Bits Access Value Description
Header Byte 0 31:24 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 1 23:16 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 2 15:8 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 3 7:0 ROS The TLP header of the transaction that has incurred a
failure
Default
Name Bits Access Value Description
Header Byte 4 31:24 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 5 23:16 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 6 15:8 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 7 7:0 ROS The TLP header of the transaction that has incurred a
failure
Default
Name Bits Access Value Description
Header Byte 8 31:24 ROS The TLP header of the transaction that has incurred a
failure
Default
Name Bits Access Value Description
Header Byte 9 23:16 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 10 15:8 ROS The TLP header of the transaction that has incurred a
failure
Header Byte 11 7:0 ROS The TLP header of the transaction that has incurred a
failure
Default
Name Bits Access Value Description
Header Byte 12 31:24 ROS – The TLP header of the transaction that has incurred a
failure
Header Byte 13 23:16 ROS – The TLP header of the transaction that has incurred a
failure
Header Byte 14 15:8 ROS – The TLP header of the transaction that has incurred a
failure
Header Byte 15 7:0 ROS – The TLP header of the transaction that has incurred a
failure
Default
Name Bits Access Value Description
Next Capability Offset 31:20 RO 0x150 Next Capabilities Pointer.
(Power When bit 6 of register 7c04 is 1 else 0x0. Bit 6 of register
Budget) 7c04 is 1 by default. (PCIe Pwr Budget Cap Enable)
Revision ID 19:16 RO 0x1 0x1 for PCI Express
PCIE Capability ID 15:0 RO 0x0003 0x3 for PCIe Device Serial Number Capability ID
Default
Name Bits Access Value Description
reserved 31:0 Host RO/ 0xFE 0xFE when bit 23 of 7c04 is clear.
FW RW (bit
23 of 7c04
1) else RO
Lower MAC Address 23:0 Host RO/ 0xFFFFFF MAC Address(23:0) when bit 23 of 7c04 is clear.
FW RW (bit
23 of 7c04
1) else RO
Default
Name Bits Access Value Description
Upper MAC Address 31:8 Host RO/ 0xFFFFFF MAC Address(47:24) when bit 23 of 7c04 is clear
FW RW (bit
23 of 7c04
1) else RO
reserved 7:0 Host RO/ 0xFF 0xFF when bit 23 of 7c04 is clear.
FW RW (bit
23 of 7c04
1) else RO
Default
Name Bits Access Value Description
Next Capability Offset 31:20 RO 0x160 (VC) This value continues the PCI capability chain. It’s
value specified an offset in the PCI address space
of the next capability. The read-only value of this
register is controlled by the EXT_CAP_ENA
register in the PCI register space.
Revision ID 19:16 RO 0x1 0x1 for PCI Express
PCIe Power Budget 15:0 RO 0x0004 0x4 for PCIe Power Budget Capability ID
Capability ID
Default
Name Bits Access Value Description
Reserved 31:8 RO 0x000000 –
Data Select 7:0 RW 0x00 Index Power Budgeting Data reported through the Data
Register.
This value selects the value visible in the pb_dr.
0
0
Selects pb_cap value from 0x510[31:0].
1
1
Selects pb_cap value from 0x514[31:0].
2
2
Selects pb_cap value from 0x518[31:0].
3
3
Selects pb_cap value from 0x51c[31:0].
4
4
Selects pb_cap value from 0x520[31:0].
5
5
Selects pb_cap value from 0x524[31:0].
6
6
Selects pb_cap value from 0x528[31:0].
7
7
Selects pb_cap value from 0x52c[31:0].
Default
Name Bits Access Value Description
Reserved 31:21 RO 0x0 –
Power Rail 20:18 FW-RW 0b000 Specifies the power rail of the operating condition
Host-RO 12V (000)
3.3V (001)
1.8V (010)
Thermal (111)
Bit20 is hardwired to 0 because we don’t support
Thermal; Bit 19:18 are programmable via Firmware.
Type 17:15 FW-RW 0b000 Specifies the type of the operating condition
Host-RO PME Aux (000)
Auxiliary (001)
Idle (010)
Sustained (011)
Maximum (111)
PM State 14:13 FW-RW 0b00 Specifies the power management state of operating
Host-RO condition: D0, D3
PM Sub State 12:10 RO 0b000 Specifies the sub states of the operating condition
Data Scale 9:8 FW-RW 0b00 Specifies the scale to apply to the base power value; 0x1
Host-RO for 0.1x scale.
Base Power 7:0 FW-RW 0x00 Specifies in Watts the base power value in a given
Host-RO operating conditions.
2.2Watts in D0Max
1.1Watts in D3-Hot
0.54Watts in D3-Cold
Default
Name Bits Access Value Description
RESERVED 31:1 RO 0x000000 Unused
LOM Configuration 0 FW-RW 1 Indicate that the power budget for the device is included
Host-RO within the system power budget.
Derived from NVRAM configuration
If Configured as LOM, then write 1 to bit 5 of 0x7C04 else
write 0.
The “System Allocated” bit when set indicates that the
power budget for the device is included within the
system power budget. Reported Power Budgeting Data
for this device should be ignored by software for power
budgeting decisions if this bit is set. This register is Read
Only. The value can be written indirectly by writing into
Power Budget Capability Register (0x550[0])
Default
Name Bits Access Value Description
Next Capability Offset 31:20 RO 0x1b0 This value continues the PCI capability chain. It’s value
specified an offset in the PCI address space of the next
capability.
Capability Version 19:16 RO 0x1 Capability ID Version. These bits are hardwired to 1h
indicating the version of the capability ID. Hardwire to 1.
PCI Express Extended 15:0 RO 0x0002 Extended Capability ID for the Virtual Channel Capability
Capability ID is 0002h
Default
Name Bits Access Value Description
PORT_VC_CAPABILITY 31:0 RO 0 Not implemented.
Default
Name Bits Access Value Description
PORT_VC_CAPABILITY2 31:0 RO 0 Not implemented.
Default
Name Bits Access Value Description
PORT_VC_STATUS 31:16 RO 0 Not implemented.
PORT_VC_CONTROL 15:0 RO 0 Not implemented.
Default
Name Bits Access Value Description
Port Arbitration Table 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
VC Enable 31 RO 1 Enables virtual channel. This bit is hardwired to 1 for the
default VC0 and writing to this field has no effect.
Reserved 30:8 RO 0 –
TC/VC Map 7:1 RW 0x7f A 1 at bit n indicates that TC n is mapped to VC0 (bit 0 is
read only and is hardwired to 1). This field indicates the
TCs that are mapped to the VC resource. This field is valid
for all devices. Note: Bit 0 of this field is read only. It is set
to 1 for the default VC0.
Default_VC0 0 RO 1 –
Default
Name Bits Access Value Description
VC_RSRC_STATUS 31-16 RO 0 Not Implemented
Reserved 15-0 RO 0 Unused
Default
Name Bits Access Value Description
NEXT 31-20 RO 0 This value continues the PCI capability chain. It’s value
specified an offset in the PCI address space of the next
capability.
CAP_VER 19-16 RO 0x1 LTR Capability version. Hardwired to 0x1.
LTR_EXT_CAP_ID 15-0 RO 0x18 Vendor Specific Extended Capability ID.
Default
Name Bits Access Value Description
RESERVED 31-29 RO 0 Unused
MAX_NO_SNOOP_ 28-26 RW 00 Max No Snoop Latency Scale. This register provides a
LATE_SCALE scale for the value contained within the
max_no_snoop_late_value field.
MAX_NO_SNOOP_ 25-16 RW 0 Max No Snoop Latency Value. Along with Max No snoop
LATE_VALUE latency scale field, this register specifies the maximum
no-snoop latency that a device is permitted to request.
Software should set this to the platforms max supported
latency or less.
RESERVED 15-13 RO 0 Unused
MAX_SNOOP_LATE_ 12-10 RW 0 Max Snoop Latency Scale. This register provides a scale
SCALE for the value contained within the max_snoop_late_value
field.
MAX_SNOOP_LATE_ 9-0 RW 0 Max Snoop Latency Value. Along with Max snoop latency
VALUE scale field, this register specifies the maximum no-snoop
latency that a device is permitted to request. Software
should set this to the platforms max supported latency or
less.
• Write to register Card Reader BAR + 0x28 with a value of 0x06000000 (This is setting bits 1 and 2 in the
Wakeup Control register 0x2B in the standard card reader registers, which are not documented in this
Programmer's Guide. Refer to public card reader standards documentation.)
• Set bit 8 of Card Reader PCIe configuration space register 0x4c to enable PME event generation from the
card-reader function.
Note: The WoC Insertion/Removal Event is not enabled by default, which means that WoC is not
available when the system is in the Out-of-Box state (A/C power cord first attached).
Default
Name Bits Access Value Description
Device ID 31:16 FW-RW – Default for BCM57785, BCM57765, BCM57795 (SD/
Host-RO MMC Function 1): 0x16BC
Vendor ID 15:0 FW-RW 0x14E4 –
Host-RO
Default
Name Bits Access Value Description
Detected Parity Error 31 R/W2C 0x0 When this bit is set, it indicates that the function has
received a poisoned TLP
Signaled System Error 30 R/W2C 0x0 This bit is set when a function sends an ERR_FATAL or
ERR_NONFATAL message and the SERR enable bit in the
command register is set
Received Master Abort 29 R/W2C 0x0 This bit is set when a requester receives a completion
with UR completion status.
Received Target Abort 28 R/W2C 0x0 This bit is set when a requester receives a completion
with completer abort completion status.
Default
Name Bits Access Value Description
Signaled Target Abort 27 R/W2C 0x0 This bit is set when a function acting as a completer
terminates a request by issuing Completer abort
completion status to the requester
DEVSEL Timing 26:25 RO 0x0 Does not apply to PCIe
Master Data Parity 24 R/W2C 0x0 The master data parity error bit is set by a requester if
Error the parity error enable bit is set in its command register
and either of the following 2 conditions occur. If the
requester receives a poisoned completion if the
requester poisons a write request If the parity Error
enable bit is cleared , the master data parity error status
bit is never set.
Fast Back-to-back 23 RO 0x0 Does not apply to PCIe
capable
Reserved 22 RO 0x0 These bits are reserved and tied low per the PCI
specification.
66MHz Capable 21 RO 0x0 Does not apply to PCIe
Capabilities List 20 RO 0x1 This bit is tied high to indicate that the device supports a
capability list. The list starts at address 0x40.
Interrupt Status 19 RO 0x0 Indicates this device generated an interrupt
Reserved 18:16 RO 0x0 These bits are reserved and tied low per the PCIe
specification.
Reserved 15:11 RO 0x00 These bits are reserved and tied low per the PCIe
specification.
Interrupt Disable 10 RW 0x0 When this bit is set, function is not permitted to
generate IntX interrupt messages (deasserted)
regardless of any internal chip logic. Setting this bit has
no effect on the INT_STATUS bit below. Writing this bit to
0 will un-mask the interrupt and let it run normally.
Fast Back-to-back 9 RO 0x0 Does not apply to PCIe
Enable
System Error Enable 8 RW 0x0 When set, this bit enables the non fatal and fatal errors
detected by the function to be reported to the Root
Complex. The function reports such errors to the Root
Complex if it is enabled to do so either through this bit or
though PCI express specific bits in DCR.
Stepping Control 7 RO 0x0 Does not apply to PCIe
Parity Error Enable 6 RW 0x0 This bit enables the write to the Master data parity error
status bit. If this bit is cleared, the master data parity
error status bit will never be set.
VGA Palette Snoop 5 RO 0x0 Does not apply to PCIe
Memory Write and 4 RO 0x0 Does not apply to PCIe
Invalidate
Special Cycles 3 RO 0x0 Does not apply to PCIe
Default
Name Bits Access Value Description
Bus Master 2 RW 0x0 This bit controls the enabling of the bus master activity
by this device. When low, it disables an Endpoint
function from issuing memory or IO requests. Also
disables the ability to issue MSI messages.
Memory Space 1 RW 0x0 This bit controls the enabling of the memory space.
When disabled, memory transactions targeting this
device return completion with UR status.
I/O Space 0 RO 0x0 This bit indicates that the device does not support I/O
space access because it is zero and can not be modified.
IO transactions targeting this device return completion
with UR status .
Default
Name Bits Access Value Description
PCI Classcode 31:8 RO 0x080500 Default for (SD/MMC Function 1): 0x080500
Revision ID – All-layer 7:4 FW-RW ASIC Rev This field will be updated automatically by hardware
Revision ID Host-RO Input based on the External All Layer Revision ID. For example,
this field will contain a value of 0x0 after hard reset for
BCM57785 A0 silicon. Software shall use this field only to
display the Device Silicon Revision ID for application
where the user/customer needs to know the Device
Silicon Revision ID. One such application is the B57DIAG
Device Banner. Furthermore, Software (Boot Code/
Driver/B57DIAG) shall NOT use this field in determining
Bug Fixes. It should only use the Internal Revision ID, bits
31:24 and bits 19:16 from Register 68, for that purpose.
0x0 for A Steps
0x1 for B Steps
0x2 for C Steps
Revision ID – Metal 3:0 FW-RW ASIC Rev This field will be updated automatically by hardware
Revision ID Host-RO Input based on the Metal Revision ID.
0x0 for metal 0 step
0x1 for metal 1 step
0x2 for metal 2 step
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) –
Function 1
Default
Name Bits Access Value Description
BIST 31:24 RO 0x0 The 8-bit BIST register is used to initiate and report the
FW-RW results of any Built-In-Self-Test. This value can be written
by firmware through the PCI register space BIST register
to modify the read value to the host.
Header Type 23:16 RO 0x80 The 8-bit Header Type register identifies both the layout
of bytes 10h through 3Fh of the Configuration space, as
well as whether this adapter contains multiple functions.
A value of 0x80 indicates a multi function device (Type 0)
using the format specified in the PCI specification, while
a value of 0x0 indicates a single function Type 0 device.
Latency Timer 15:8 RO 0x0 This register does not apply to PCI express and must be
hardwired to zero
Cache Line Size 7:0 RO 0x0 This field is implemented by PCIe device as a read/write
FW-RW field for legacy compatibility purposes.
Default
Name Bits Access Value Description
Base Address (BAR_1) 31:8 RW 0x0 These bits set the address within a 32-bit address space
that will be card will respond in. These bits may be
combined with the bits in XBAR_2 to create a full 64 bit
address decode. Only the bits that address blocks bigger
than the setting in the BAR1_SIZE value are RW. All lower
bits are RO with a value of zero. This value is sticky and
only reset by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_1 may be
Strap pre-fetched or cached by the system without side
input to effects. Bit can be programmed from shadow register.
pcie block
Type 2:1 Host RO 0x0 These bits indicate that BAR_1 may be programmed to
Strap map this adapter to anywhere in the 64-bit address
input to space.
pcie block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For function 1, this value is 0 (32-bit enabled)
Default
Name Bits Access Value Description
Memory Space 0 RO 0x0 This bit indicates that BAR_1 maps a memory space and
Indicator is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RW 0x0 The 32-bit XBAR_2 register programs the upper half
(XBAR_2) RO if of the base address for the memory space mapped
bar1_64en by the card onto the PCI bus. These bits set the
a is 0’0’ address upper 32-bit address space. These bits may
be combined with the bits in BAR_1 to create a full
64 bit address decode. These bits must be set to
zero for the card to respond to single address cycle
requests. This value is sticky and only reset by
HARD Reset.
Default
Name Bits Access Value Description
Base Address (BAR_3) 31:8 RW 0x0 These bits set the address within a 32-bit address
space that will be card will respond in. These bits
may be combined with the bits in XBAR_4 to
create a full 64 bit address decode. Only the bits
that address blocks bigger than the setting in the
BAR2_SIZE value are RW. All lower bits are RO with
a value of zero. This value is sticky and only reset
by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_2
Strap input may be pre-fetched or cached by the system
to pcie without side effects.
block
Default
Name Bits Access Value Description
Type 2:1 Host RO 0x0 These bits indicate that BAR_2 may be
Strap input programmed to map this adapter to anywhere in
to pcie the 64-bit address space.
block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For function 1, this value is 0 (32-bit enabled)
Memory Space Indicator 0 RO 0x0 This bit indicates that BAR_2 maps a memory
space and is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RO 0x00 These bits set the address upper 32-bit address
4 (XBAR_4) space. These bits may be combined with the bits in
BAR_3 to create a full 64 bit address decode. These
bits must be set to zero for the card to respond to
single address cycle requests. This value is sticky
and only reset by HARD Reset
Default
Name Bits Access Value Description
Base Address (BAR_5) 31:8 RW 0x0 These bits set the address within a 32-bit address
space that will be card will respond in. These bits
may be combined with the bits in XBAR_6 to
create a full 64 bit address decode. Only the bits
that address blocks bigger than the setting in the
BAR3_SIZE value are RW. All lower bits are RO with
a value of zero. This value is sticky and only reset
by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Default
Name Bits Access Value Description
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_3
Strap input may be pre-fetched or cached by the system
to pcie without side effects.
block
Type 2:1 Host RO 0x0 These bits indicate that BAR_3 may be
Strap input programmed to map this adapter to anywhere in
to pcie the 64-bit address space.
block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For function 1, this value is 0 (32-bit enabled)
Memory Space Indicator 0 RO 0x0 This bit indicates that BAR_3 maps a memory
space and is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RW 0x00 These bits set the address upper 32-bit address
6 space. These bits may be combined with the bits in
(XBAR_6) BAR_5 to create a full 64 bit address decode. These
bits must be set to zero for the card to respond to
single address cycle requests. This value is sticky
and only reset by HARD Reset.
Default
Name Bits Access Value Description
Cardbus CIS Pointer 31:0 FW-RW 0x0 N/A for PCIe Device
Host - RO
Default
Name Bits Access Value Description
Subsystem Device ID 31:16 FW-RW 0x96BC Default for BCM57785, BCM57765, BCM57795 (SD/
Host - RO MMC Function 1): 0x96BC
Default
Name Bits Access Value Description
ROM Base Address 31:24 RW/RO 0xXXXX These bits indicate the address of the Expansion ROM
area.
ROM Size indication 23:11 RW/RO 0x00 These bits indicate the size of the Expansion ROM area
or the address of it. The boundary form RO bits to RW
bits is controlled by the EXP_ROM_SIZE bits.
Reserved 10:1 RO 0x000 These bits indicate that the Expansion ROM area is at
least 2k bytes. They always read as zero. P
Expansion ROM Enable 0 RW/RO 0x0 This bit indicates that the Expansion ROM BAR is valid
when set to one. If it is zero, the expansion BAR should
not be programmed or used. This bit will only be RW if it
is enabled by the EXP_ROM_ENA bit which defaults to 0.
Default
Name Bits Access Value Description
RESERVED 31:8 RO 0x0 Unused
Capabilities pointer 7:0 RO 0x48 The 8-bit Capabilities Pointer register specifies an offset
(PM Cap) in the PCI address space of a linked list of new
capabilities. The capabilities are PCI-X, PCI Power
Management, Vital Product Data (VPD), and Message
Signaled Interrupts (MSI) is supported. The read-only
value of this register is controlled by the CAP_ENA
register in the PCI register space. For function 1, this
should point to offset 0x80 which is the PM Cap.
Structure.
Default
Name Bits Access Value Description
MAXIMUM_LATENCY 31:24 RO 0x00 Hardwired to zero
MIN_GRANT 23:16 RO 0x00 Hardwired to zero
Interrupt Pin 15:8 RO 0x02 Indicates which interrupt pin this device uses
0: no Interrupt
1: Use Interrupt A
2: Use Interrupt B
3: Use Interrupt C
4: Use Interrupt D
Interrupt Line 7:0 RW 0x00 Identifies interrupt routing information
Default
Name Bits Access Value Description
RESERVED 31:7 RO 0x00 Unused
Number of Slots 6:4 RO 0x01 These statuses indicate the number of slots the
Host Controller supports. In the case of single
function, maximum 6 slots can be assigned.
000b: 1 slot
001b: 2 slot
010b: 3 slot
011b: 4 slot
100b: 5 slot
101b: 6 slot
Function 1 supports 2 slots: SD and MMC
RESERVED 3 RO 0x00 Unused
First Base Address 2:0 RO 0x00 Up to 6 Base Address can be specified in single
Register Number configuration. These bits indicate first Base
Address register number assigned for SD Host
Controller register set. In the case of single
function and multiple register sets, contiguous
base addresses are used. Number Of Slot specifies
number of base address.
Default
Name Bits Access Value Description
PME Support 31:27 RO 0x08 if no Indicates the power states in which the device may
aux assert PME. A 0 for any bit indicates that the device is
0x18 if not capable of asserting the PME pin signal while in that
aux power state
Bit 27: PME can be asserted from D0
Bit 28: PME can be asserted from D1
Bit 29: PME can be asserted from D2
Bit 30: PME can be asserted from D3H
Bit 31: PME can be asserted from D3C (default depends
on the presence of Aux power)
D2 Support 26 RO 0x0 Indicates whether the device supports the D2 PM state.
This device does not support D2; hardwired to 0
D1 Support 25 RO 0x0 Indicates whether the device supports the D1 PM state.
FW-RW This device does not support D1
Aux Current 24:22 RO 0x0 This device supports the data register for reporting Aux
FW-RW Current requirements so this field is N/A
DSI 21 RO 0x0 Indicates that the device requires device specific
FW-RW initialization (beyond PCI configuration header) before
the generic class device driver is able to use it. This
device hardwires this bit to 0 indicating that DSI is not
necessary
Reserved 20 RO 0x0 –
PME Clock 19 RO 0x0 Indicates that the device relies on the presence of the
PCI clock for PME operation. This device does not
require the PCI clock to generate PME. Therefore, the bit
is hardwired to 0
Version 18:16 RO 0x3 A value of 011b indicates that this function complies
with revision 1.2 of the PCI PM specification.
PM Next Capabilities 15:8 RO 0xAC Points to the next capabilities block which is Broadcom
Vendor Specific Capability Header
PM Capability ID 7:0 RO 0x01 Identifies this item as Power management capabilities
Default
Name Bits Access Value Description
PM Data 31:24 RO 0x00 Contains the power management data indicated by the
FW-RW Data Select field in PMCSR
Default
Name Bits Access Value Description
Reserved 23:16 RO 0x00
PME Status 15 RW2C 0x0 This bit is set when the device asserts the WAKE signal
independent of the PME enable bit. Writing 1 this bit
will clear it and cause the deice to stop asserting WAKE
Data Scale 14:13 RO 0x1 Indicates the scaling factor that is used when
interpreting the value of the data register (offset 7 in PM
capability space). The device hardwires this value to 1 to
indicate a scale of 1x
Data Select 12:9 RW 0x0 Indicates which data is to be reported via the Data
register (offset 7 in PM capability space)
PME Enable 8 RW 0x1 Enables the device to generate PME when this bit is set
to 1. When 0, PME generation is disabled
Reserved 7:4 RO 0x00 –
No Soft Reset 3 RO 0x1 No_Soft_Reset –
When set (1), this bit indicates that devices transitioning
from D3hot to D0 because of PowerState commands do
not perform an internal reset. Configuration Context is
preserved. Upon transition from the D3hot to the D0
Initialized state, no additional operating system
intervention is required to preserve Configuration
Context beyond writing the PowerState bits.
When clear (0), devices do perform an internal reset
upon transitioning from D3hot to D0 via software control
of the PowerState bits. Configuration Context is lost
when performing the soft reset. Upon transition from
the D3hot to the D0 state, full reinitialization sequence is
needed to return the device to D0 Initialized.
Regardless of this bit, devices that transition from D3hot
to D0 by a system or bus segment reset will return to the
device state D0 Uninitialized with only PME context
preserved if PME is supported and enabled
Reserved 2 RO 0x0 –
Default
Name Bits Access Value Description
Power State 1:0 RW 0x0 Indicates the current power state of the device when
read
When written, it sets the device into the specified power
state.
00: D0 – Select D0
01: D1 – Select D1
10: D2 – Select D2
11: D3-Hot – Select D3
These bits may be used by the system to set the power
state. The register is implemented as two banks of two
bits each. Can be written from both configuration space
and from the PCI register space as the PM_STATE bits.
When written from the PCI bus, only values of 0 and 3
will be accepted. This is the register returned on reads of
this register from configuration space. The second bank
catches all writes values. The value of the second
register is returned when the PM_STATE bits are read
from register space. The idea of these registers is to a)
Provide compatible operation to 5701 b) Allow
implementation of other power states though firmware.
Default
Name Bits Access Value Description
Reserved 31:30 RO 0 Unused
Message Number 29-25 FW-RW 0 Interrupt Message Number:indicate which MSI/MSI-X
RO vector is used for the interrupt message generated in
association with any of the status bits of this capability
structure. For MSI, the value in this register indicates the
offset between the base Message Data and the interrupt
message that is generated. For MSI-X, the value in this
register indicates which MSI-X Table entry is used to
generate the interrupt message. The entry must be one
of the first 32 entries even if the function implements
more than 32 entries.
Slot implemented 24 RO 0 Hardwired to 0 because this is an endpoint device
Slot Implemented. This register is not supported.
Device/Port Type 23-20 RO 0 Hardwired to 0 because this is an endpoint device
Device/Port Type. Device is an End Point.
Capability Version 19-16 RO 2 Capability Version. PCI Express Capability structure
version number. These bits are hardwired to 2h.
PCIE_NEXT_CAP_PTR 15-8 RO 0 This registers contains the pointer to the next PCI
capability structure.
PCIE_CAP_ID 7-0 RO 0x10 This register contains the PCIExpress Capability ID.
Default
Name Bits Access Value Description
Reserved 31:29 RO 0
FLR_CAP_SUPPORTED 28 RO 0 FLR capability is advertised when flr_supported bit in
private device_capability register space is set.
Captured Slot Power 27:26 RO 0 This value specifies the scale used for the Power Limit
Limit Scale 00 = 1.0x
01 = 0.1x
10 = 0.01x
11 = 0.001x
Specifies the scale used for the Slot Power Limit Value. It
is set by the Set_Slot_Power_Limit Message. This field is
not set for Root ports.
Captured Slot Power 25:18 RO 0 This value specifies the upper limit on the power
Limit Value supplied for this device
Specifies the upper limit on power supplied by slot. It is
set by the Set_Slot_Power_Limit Message. This field is
not set for Root ports.
Reserved 17:16 RO 0 Unused
Role Based Error 15 RO 1 When set to 1, this value indicates that a role based error
Support is supported. Indicate device is conforming to the ECN,
PCI Express Base Specification, Revision 1.1., or
subsequent PCI Express Base Specification revisions.
Reserved 14-12 RO 0 Unused
Endpoint L1 Acceptable 11:9 FW-RW 6h This value returns the latency that this device can accept
Latency when transitioning from the L1 to the L0 state
000 = less than 1us
001 = 1us to less than 2us
010 = 2us to less than 4us
011 = 4us to less than 8us
100 = 8us to less than 16us
101 = 16us to less than 32us
110 = 32us to 64us
111 = Greater than 64us
Endpoint L1 Acceptable Latency. These bits are
programmable through register space. The bits should
be 0 for Root ports.
Default
Name Bits Access Value Description
Endpoint L0s 8:6 FW-RW 6h This value returns the total latency that this device can
Acceptable Latency accept when transitioning from the L0s to L0 state
000 = less than 64ns
001 = 64ns to less than 128ns
010 = 128ns to less than 256ns
011 = 256ns to less than 512ns
100 = 512ns to less than 1us
101 = 1us to less than 2us
110 = 2us to 4us
111 = Greater than 4us
Endpoint L0s Acceptable Latency. These bits are
programmable through register space. The value should
be 0 for root ports.
Extended Tag Field 5 RO 0 This value returns the maximum supported tag field size
Supported when this function acts as a requester.
0 = 5bit tag field
1 = 8bit tag field
We do support extended tag
Extended Tag Field Support. This bit is programmable
through register space. This capability is not currently
supported.
Reserved 4:3 RO 0 Unused
Max Payload Size 2:0 FW-RW 0 This value returns the maximum data payload size (in
Supported bytes) that this function supports for TLPs
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7 = Reserved
Max Payload Size Supported. These bits are
programmable from the register space and default value
is based on define in version.v file.
Default
Name Bits Access Value Description
Reserved 31-22 RO 0 –
Transaction Pending 21 RO 0 When this bit is set to 1, it indicates that this device has
issued nonposted request packets which have not been
completed
This is bit is read back a 1, whenever a nonposted
request initiated by PCIe core is pending to be
completed.
Aux Power Detected 20 RO 0 When this bit is set to 1, it indicates that Aux power has
been detected
This bit is the current state of the VAUX_PRSNT pin of the
device. When it is 1, it is indicating that part needs VAUX
and detects the VAUX is present.
Unsupported Request 19 W2C 0 When this bit is set to 1, it indicates that an Unsupported
Detected Request has been received
Unsupported request detected.
Fatal Error Detected 18 W2C 0 When this bit is set to 1, it indicates that a Fatal Error has
been detected. Fatal error detected.
Non-fatal Error 17 W2C 0 When this bit is set to 1, it indicates that a nonfatal error
Detected has been detected. Nonfatal error detected.
Correctable Error 16 W2C 0 When this bit is set to 1, it indicates that a correctable
Detected error has been detected. Correctable error detected.
FLR_INITIATED 15 RW 0 Initiate Function Level reset. This bit is writeable only if
flr_supported bit in private device_capability register is
set. A write of 1 to this bit initiates Function Level Reset.
The value read by s/w from this bit is always 0.
Max Read Request Size 14:12 RW 2 This value controls the maximum read requests size for
this device when acting as the requester
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Maximum Read Request Size. Depending on the spec,
internal logic uses either the min or the max of the value
of the two functions.
Enable No Snoop 11 RW 1 When this bit is set, the memory accessed by this device
will not be cached by the processor. Enable No Snoop.
When this bit is set to 1, PCIe initiates a read request with
the No Snoop bit in the attribute field set for the
transactions that request the No Snoop attribute.
Default
Name Bits Access Value Description
Aux Power PM Enable 10 RO 1 When this bit is set, this device is enabled to draw aux
power independent of PME power. This bit when set
enables device to draw aux power independent of PME
AUX power
RESERVED 9 RO 0 Unused
Extended Tag Field 8 RW 0 When this bit is set, it enables this device to use an 8-bit
Enable Tag field as a requester. This capability is not supported.
Max Payload Size 7:5 RW 0 This value sets the maximum TLP data payload size (in
bytes) for this device
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Max Payload Size. Depending on the spec, internal logic
uses either the min or the max of the value of the two
functions.
Enabled Relaxed 4 RW 1 When this bit is set, this device is permitted to set the
Ordering Relaxed Ordering bit. Relax Ordering Enable.
Unsupported Request 3 RW 0 When this bit is set, Unsupported Request reporting is
Reporting Enable enabled. Unsupported Request Reporting Enable.
Fatal Error Reporting 2 RW 0 When this bit is set, Fatal Error reporting is enabled. Fatal
Enabled Error Reporting Enable.
Non-fatal Error 1 RW 0 When this bit is set, nonfatal error reporting is enabled.
Reporting Enabled Nonfatal error reporting enable.
Correctable Error 0 RW 0 When this bit is set, correctable error reporting is
Reporting Enabled enabled. Correctable error reporting enable.
Default
Name Bits Access Value Description
Port Number 31:24 RO 0:HWinit This value indicates the port number associated with
this. PCIe Port Number. These bits are programmable
through register.
Reserved 23:22 RO 0
Default
Name Bits Access Value Description
LINK_BW_NOTIFY 21 RO 0 Link Bandwidth Notification Capability: RC: A value of 1b
indicates support for the Link Bandwidth Notification
status and interrupt mechanisms. This capability is
required for all Root Ports and Switch Downstream Ports
supporting Links wider than x1 and/or multiple Link
speeds. RC: Field is implemented. EP: Not supported and
hardwired to 0.
DL_ACTIVE_REP 20 RO 0 Data Link Layer Link Active Reporting Capable: RC: this
bit must be hardwired to 1b if the component supports
the optional capability of reporting the DL_Active state
of the Data Link Control and Management State
Machine. RC: Implemented (RW) for RC. Default to 0. EP:
Not supported and hardwired to 0.
SUR_DWN_ERR_REP 19 RO 0 Surprise Down Error Reporting Capable: RC: this bit must
be set if the component supports the optional capability
of detecting and reporting a Surprise Down error
condition. RC: Not supported and hardwired to 0. EP:
Not supported and hardwired to 0.
Clock Power 18 Host RO 1 1: clkreq capable
Management FW R/W 0: clkreq not capable
If it’s mobile bonding, the default value will be 1,
otherwise 0.
L1 Exit Latency 17:15 RO 2 This value returns the L1 exit latency for this link
FW-RW 0 = Maximum of 1 us
1 = Maximum of 2 us
2 = Maximum of 4 us
3 = Maximum of 8 us
4 = Maximum of 16 us
5 = Maximum of 32 us
6 = Maximum of 64 us
7 = No limit
L1 Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Default
Name Bits Access Value Description
L0s Exit Latency 14:12 RO 4 This value returns the L0s exit latency for this link
FW-RW 0 = less than 64ns
1 = less than 128ns
2 = less than 256ns
3 = less than 512ns
4 = less than 1us
5 = less than 2us
6 = less than 4us
7 = greater than 4us
L0s Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Active State power 11:10 RO 3 This value returns the supported ASPM states
management support FW-RW 0 = reserved
1 = L0s supported
2 = reserved
3 = L0s and L1 supported
ASPM Support. These bits are programmable through
reg space.
Maximum Link Width 9:4 RO 1 This value returns the maximum link width. Allowable
FW-RW values are 1, 2, 4, 8, 12, 16, and 32 only. All other values
are reserved.
Value Name Description
1 1 One Lane Max
2 2 Two Lanes Max
4 4 Four Lanes Max
8 8 Eight Lanes Max
Maximum Link Width. These are programmable through
reg space.Bit 9 is always 0 and is not programmable.
Default value is based on numLanes field in version.v.
Maximum Link Speed 3:0 RO 1 This value returns the Maximum Link Speed. 1 =
FW-RW 2.5Gbps. All other values reserved.
Value Name Description
1 2.5 2.5 Gbps Max
2 5 5 Gbps Max
Value used by internal logic is the smaller of the value
programmed for each function.
Default
Name Bits Access Value Description
Reserved 31- RO 0 Unused
30
DL_ACTIVE 29 RO 0 Data Link Layer Link Active: returns a 1b to indicate the
DL_Active state, 0b otherwise. Not implemented and
hardwire to 0.
Slot Clock Configuration 28 RO 1 This value indicates that this device uses the same
physical reference clock that the platform provides on
the connector. Slot Clock configuration. This bit is read-
only by host, but read/write via backdoor CS bus.
LINK_TRAINING 27 RO 0 EP: This bit is N/A and is hardwired to 0.
Reserved 26 RO 0 Unused
Negotiated Link Width 25- RO 0 This value returns the negotiated link width. The only
20 valid values are 1, 2, 4, 8, 12, 16, 32
Negotiated Link Speed 19- RO 0 This value returns the negotiated link speed. 1 = 2.5Gbps
16 Link Speed. These bits indicate the negotiated link speed
of the PCI Express link.
Reserved 15:1 RO 0 Unused
2
LINK_BW_INT_EN 11 RO 0 Link Autonomous Bandwidth Interrupt Enable: When
Set, this bit enables the generation of an interrupt to
indicate that the Link Autonomous Bandwidth Status bit
has been Set. RC: Not implemented and hardwired to 0.
EP: N/A and hardwired to 0.
LINK_BW_MGMT_INT_E 10 RO 0 Link Bandwidth Management Interrupt Enable: when
N Set, this bit enables the generation of an interrupt to
indicate that the Link Bandwidth Management Status bit
has been Set. RC: N/A and hardwired to 0. EP: Not
implemented and hardwired to 0.
HW_AUTO_WIDTH_DIS 9 RO 0 Hardware Autonomous Width Disable: When Set, this bit
disables hardware from changing the Link width for
reasons other than attempting to correct unreliable Link
operation by reducing Link width. Other functions are
reserved. RC: Not applicable and hardwire to 0 EP: If
supported, only apply to function0. Not implemented
and hardwire to 0.
Clock Request Enable 8 RW 0 1: clkreq is enabled
0: clkreq is disabled
Enable Clock Power Management: RC: N/A and
hardwired to 0. EP: When this bit is set, the device is
permitted to use CLKREQ# signal to power management.
Feature is enabled through version.v define
Default
Name Bits Access Value Description
Extended Synch 7 RW 0 When this bit is set, it forces extended sync which gives
external devices (such as logic analyzers) additional time
to achieve bit and symbol lock. Extended Synch. This bit
when set forces the transmission of 4096 FTS ordered
sets in the L0s state followed by a single SKP ordered set
prior to entering the L0 state, and the transmission of
1024 TS1 ordered sets in the L1 state prior to entering
the Recovery state. Value used by logic is resolved to 1 if
either function has this bit set.
Common Clock 6 RW 0 When this bit is set, it indicates that the link partners are
Configuration using a common reference clock. Common Clock
Configuration. Value used by logic is resolved to 1 only if
both functions (when enabled) have this bit set.
Reserved (Retrain Link) 5 RO 0 The device does not support this feature. Requesting
PHY to retrain the link. This bit is only applicable to RC.
So for EP it is read only bit.
Reserved (Link Disable) 4 RO 0 The device does not support this feature. Requesting
PHY to disable the link. This bit is only applicable to RC.
So for EP it is read only bit.
Read Completion 3 RW 0 This value indicates the Read Completion Boundary
Boundary value (in bytes) of the upstream root port
0 = 64
1 = 128
Read Completion Boundary.
Reserved 2 RO 0 Unused
Active State Power 1:0 RW 0 This value control the Active State power management
Management Control supported on this link
0 = Disabled
1 = L0s entry enabled
2 = L1 entry enabled
3 = L0s and L1 entry enabled
ASPM Control. Value used by logic is dependent on the
value of this bit for each enabled function and also on
the programmed powerstate of each function.
Default
Name Bits Access Value Description
PHYSICAL_SLOT_NUMBER 31-19 RO 0 Not Implemented
RESERVED 18-17 RO 0 Unused
SLOT_POWER_LIMIT_SCALE 16-15 RO 0 Not Implemented
SLOT_POWER_LIMIT_VALUE 14-7 RO 0 Not Implemented
RESERVED 6-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS 31-23 RO 0 Not Implemented
PRESENCE_DETECT 22 RO 0 Not Implemented
RESERVED 21-16 RO 0 Not Implemented
SLOT_CONTROL 15-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-12 RO 0 Unused
LTR_MECHANISM_ 11 RO 0 Latency Tolerance Reporting Mechanism Supported,
SUPPORTED Programmable through register space. This field will
read 1, when bit 5 of ext_cap_ena field in private
register space is set.
RESERVED 10-5 RO 0 Unused
CMPL_TIMEOUT_DISABL_ 4 RO 1 Completion Timeout Disable Supported,
SUPPORTED Programmable through register space
CMPL_TIMEOUT_RANGES_ 3-0 RO F Completion Timeout Ranges Supported.
SUPPORTED Programmable through register space.
Value Name Description
15 ABCD 1 Ranges A,B,C and D
Default
Name Bits Access Value Description
DEVICE_STATUS_2 31-16 RO 0 Placeholder for Gen2
RESERVED 15-11 RO 0 Unused
LTR_MECHANISM_ENABLE 10 RW 0 Latency Tolerance Reporting Mechanism Enable, This
field is writeable, when bit 5 of ext_cap_ena field in
private register space is set. This bit is RW only in
Function 1 and is RsvdP for all other functions.
IDO_CPL_ENABLE 9 RW 0 IDO Completion Enable, This field is writeable, when
bit ido_supported bit of private device_capability_2
register is set. When this bit is set, function is
permitted to set ID based Ordering Attribute of
Completions it returns.
IDO_REQ_ENABLE 8 RW 0 IDO Request Enable, This field is writeable, when bit
ido_supported bit of private device_capability_2
register is set. When this bit is set, function is
permitted to set ID based Ordering Attribute of
Requests it initiates.
RESERVED 7-5 RO 0 Unused
CMPL_TIMEOUT_DISABLE 4 RW 0 Completion Timeout Disable
CMPL_TIMEOUT_VALUE 3-0 RW 0 Completion timeout value. The spec specifies a range,
the device uses the max value in the range.
Value Name Description
0 50MS 50 ms
1 100US 100 us
2 10MS 10 ms
3 55MS 55 ms
4 210MS 210 ms
5 900MS 900 ms
6 3_5S 3.5s
7 13S 13s
8 64S 64s
Default
Name Bits Access Value Description
LINK_CAPABILITY_2 31-0 RO 0 Placeholder for Gen2
Default
Name Bits Access Value Description
LINK_STATUS_2 31- RO 0 Placeholder for Gen2
17
CURR_DEEMPH_LEVEL 16 RO 0 curr_deemph_level
RESERVED 15- RO 0 Unused
13
CFG_COMPLIANCE_DEEMPH 12 RW 0 Compliance deemphasis.
CFG_COMPLIANCE_SOS 11 RW 0 Compliance SOS.
CFG_ENTER_MOD_ 10 RW 0 Enter Modified Compliance.
COMPLIANCE
CFG_TX_MARGIN 9-7 RW 0 Controls the value of non deemphasized voltage
level at the TX pins. Value used by logic is resolved to
the smaller binary value, if two functions have
different values.
0 000 800 – 1200 mV for full swing and
400 – 600 mV for half swing
1 001 Values are monotonic with non-zero
slope
2 010 Values are monotonic with non-zero
slope
3 011 200 – 400 mV for full swing and 100 –
200 mV for half swing
4 100 Reserved
5 101 Reserved
6 110 Reserved
7 111 Reserved
SEL_DEEMPHASIS 6 RW 0 When link is operating at Gen2 rates, this bit selects
the level of deemphasis. Value used by logic is
resolved to 1 if either function has this bit set.
0 0 – 6 dB
1 1 – 3.5 dB
HW_AUTO_SPEED_DISABLE 5 RO 0 Not Supported and hardwired to 0.
ENTER_COMPLIANCE 4 RW 0 S/W instructs link to enter compliance mode. Value
used by internal logic is set when either function has
this bit enabled.
TARGET_LINK_SPEED 3-0 RW 0 Upper limit of link speed:
0 2_5 2.5 Gbps
1 5_0 5.0 Gbps
Default
Name Bits Access Value Description
SLOT_CAPABILITY_2 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS_2 31-16 RO 0 Not Implemented
SLOT_CONTROL_2 15-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
Device ID 31:16 FW-RW 0x16BE Default for BCM57785, BCM57765, BCM57795 (SD/
Host-RO MMC Function 2): 0x16BE
Vendor ID 15:0 FW-RW 0x14E4 –
Host-RO
Default
Name Bits Access Value Description
Detected Parity Error 31 R/W2C 0x0 When this bit is set, it indicates that the function has
received a poisoned TLP.
Signaled System Error 30 R/W2C 0x0 This bit is set when a function sends an ERR_FATAL or
ERR_NONFATAL message and the SERR enable bit in the
command register is set.
Received Master Abort 29 R/W2C 0x0 This bit is set when a requester receives a completion
with UR completion status.
Received Target Abort 28 R/W2C 0x0 This bit is set when a requester receives a completion
with completer abort completion status.
Signaled Target Abort 27 R/W2C 0x0 This bit is set when a function acting as a completer
terminates a request by issuing Completer abort
completion status to the requester.
DEVSEL Timing 26:25 RO 0x0 Does not apply to PCIe
Master Data Parity 24 R/W2C 0x0 The master data parity error bit is set by a requester if
Error the parity error enable bit is set in its command register
and either of the following 2 conditions occur. If the
requester receives a poisoned completion if the
requester poisons a write request If the parity Error
enable bit is cleared , the master data parity error status
bit is never set.
Fast Back-to-back 23 RO 0x0 Does not apply to PCIe.
capable
Reserved 22 RO 0x0 These bits are reserved and tied low per the PCI
specification.
66MHz Capable 21 RO 0x0 Does not apply to PCIe
Capabilities List 20 RO 0x1 This bit is tied high to indicate that the device supports a
capability list. The list starts at address 0x40.
Interrupt Status 19 RO 0x0 Indicates this device generated an interrupt
Reserved 18:16 RO 0x0 These bits are reserved and tied low per the PCIe
specification.
Reserved 15:11 RO 0x00 These bits are reserved and tied low per the PCIe
specification.
Interrupt Disable 10 RW 0x0 When this bit is set, function is not permitted to
generate IntX interrupt messages (deasserted)
regardless of any internal chip logic. Setting this bit has
no effect on the INT_STATUS bit below. Writing this bit to
0 will un-mask the interrupt and let it run normally.
Fast Back-to-back 9 RO 0x0 Does not apply to PCIe
Enable
Default
Name Bits Access Value Description
System Error Enable 8 RW 0x0 When set, this bit enables the non fatal and fatal errors
detected by the function to be reported to the Root
Complex. The function reports such errors to the Root
Complex if it is enabled to do so either through this bit or
though PCI express specific bits in DCR
Stepping Control 7 RO 0x0 Does not apply to PCIe
Parity Error Enable 6 RW 0x0 This bit enables the write to the Master data parity error
status bit. If this bit is cleared , the master data parity
error status bit will never be set.
VGA Palette Snoop 5 RO 0x0 Does not apply to PCIe
Memory Write and 4 RO 0x0 Does not apply to PCIe
Invalidate
Special Cycles 3 RO 0x0 Does not apply to PCIe
Bus Master 2 RW 0x0 This bit controls the enabling of the bus master activity
by this device. When low, it disables an Endpoint
function from issuing memory or IO requests. Also
disables the ability to issue MSI messages.
Memory Space 1 RW 0x0 This bit controls the enabling of the memory space.
When disabled, memory transactions targeting this
device return completion with UR status
I/O Space 0 RO 0x0 This bit indicates that the device does not support I/O
space access because it is zero and can not be modified.
IO transactions targeting this device return completion
with UR status .
Default
Name Bits Access Value Description
PCI Classcode 31:8 RO 0x088000 Default for (SD/MMC Function 2): 0x088000
Revision ID – All-layer 7:4 FW-RW ASIC Rev This field will be updated automatically by hardware
Revision ID Host-RO Input based on the External All Layer Revision ID. For example,
this field will contain a value of 0x0 after hard reset for
BCM57785 A0 silicon. Software shall use this field only to
display the Device Silicon Revision ID for application
where the user/customer needs to know the Device
Silicon Revision ID. One such application is the B57DIAG
Device Banner. Furthermore, Software (Boot Code/
Driver/B57DIAG) shall NOT use this field in determining
Bug Fixes. It should only use the Internal Revision ID, bits
31:24 and bits 19:16 from Register 68, for that purpose.
0x0 for A Steps
0x1 for B Steps
0x2 for C Steps
Revision ID – Metal 3:0 FW-RW ASIC Rev This field will be updated automatically by hardware
Revision ID Host-RO Input based on the Metal Revision ID.
0x0 for metal 0 step
0x1 for metal 1 step
0x2 for metal 2 step
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) –
Function 2
Default
Name Bits Access Value Description
BIST 31:24 RO 0x0 The 8-bit BIST register is used to initiate and report the
FW-RW results of any Built-In-Self-Test. This value can be written
by firmware through the PCI register space BIST register
to modify the read value to the host. .
Header Type 23:16 RO 0x80 The 8-bit Header Type register identifies both the layout
of bytes 10h through 3Fh of the Configuration space, as
well as whether this adapter contains multiple functions.
A value of 0x80 indicates a multi function device (Type 0)
using the format specified in the PCI specification, while
a value of 0x0 indicates a single function Type 0 device.
Latency Timer 15:8 RO 0x0 This register does not apply to PCI express and must be
hardwired to zero.
Cache Line Size 7:0 RO 0x0 This field is implemented by PCIe device as a read/write
FW-RW field for legacy compatibility purposes.
Default
Name Bits Access Value Description
Base Address (BAR_1) 31:8 RW 0x0 These bits set the address within a 32-bit address space
that will be card will respond in. These bits may be
combined with the bits in XBAR_2 to create a full 64 bit
address decode. Only the bits that address blocks bigger
than the setting in the BAR1_SIZE value are RW. All lower
bits are RO with a value of zero. This value is sticky and
only reset by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_1 may be
Strap pre-fetched or cached by the system without side
input to effects. Bit can be programmed from shadow register.
pcie block
Type 2:1 Host RO 0x0 These bits indicate that BAR_1 may be programmed to
Strap map this adapter to anywhere in the 64-bit address
input to space.
pcie block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For Function 2, this value is 0 (32-bit enabled)
Memory Space 0 RO 0x0 This bit indicates that BAR_1 maps a memory space and
Indicator is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RW 0x0 The 32-bit XBAR_2 register programs the upper half
(XBAR_2) RO if of the base address for the memory space mapped
bar1_64en by the card onto the PCI bus. . These bits set the
a is 0’0’ address upper 32-bit address space. These bits may
be combined with the bits in BAR_1 to create a full
64 bit address decode. These bits must be set to
zero for the card to respond to single address cycle
requests. This value is sticky and only reset by
HARD Reset.
Default
Name Bits Access Value Description
Base Address (BAR_3) 31:8 RW 0x0 These bits set the address within a 32-bit address
space that will be card will respond in. These bits
may be combined with the bits in XBAR_4 to
create a full 64 bit address decode. Only the bits
that address blocks bigger than the setting in the
BAR2_SIZE value are RW. All lower bits are RO with
a value of zero. This value is sticky and only reset
by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_2
Strap input may be pre-fetched or cached by the system
to pcie without side effects.
block
Type 2:1 Host RO 0x0 These bits indicate that BAR_2 may be
Strap input programmed to map this adapter to anywhere in
to pcie the 64-bit address space.
block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For Function 2, this value is 0 (32-bit enabled)
Memory Space Indicator 0 RO 0x0 This bit indicates that BAR_2 maps a memory
space and is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RO 0x00 These bits set the address upper 32-bit address
4 (XBAR_4) space. These bits may be combined with the bits in
BAR_3 to create a full 64 bit address decode. These
bits must be set to zero for the card to respond to
single address cycle requests. This value is sticky
and only reset by HARD Reset
Default
Name Bits Access Value Description
Base Address (BAR_5) 31:8 RW 0x0 These bits set the address within a 32-bit address
space that will be card will respond in. These bits
may be combined with the bits in XBAR_6 to
create a full 64 bit address decode. Only the bits
that address blocks bigger than the setting in the
BAR3_SIZE value are RW. All lower bits are RO with
a value of zero. This value is sticky and only reset
by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_3
Strap input may be pre-fetched or cached by the system
to pcie without side effects.
block
Type 2:1 Host RO 0x0 These bits indicate that BAR_3 may be
Strap input programmed to map this adapter to anywhere in
to pcie the 64-bit address space.
block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For Function 2, this value is 0 (32-bit enabled)
Memory Space Indicator 0 RO 0x0 This bit indicates that BAR_3 maps a memory
space and is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RW 0x00 These bits set the address upper 32-bit address space.
6 These bits may be combined with the bits in BAR_5 to
(XBAR_6) create a full 64 bit address decode. These bits must be
set to zero for the card to respond to single address cycle
requests. This value is sticky and only reset by HARD
Reset.
Default
Name Bits Access Value Description
Cardbus CIS Pointer 31:0 FW-RW 0x0 N/A for PCIe Device
Host - RO
Default
Name Bits Access Value Description
Subsystem Device ID 31:16 FW-RW 0x96BE Default for BCM57785, BCM57765, BCM57795 (SD/
Host - RO MMC Function 2): 0x96BE
Default
Name Bits Access Value Description
ROM Base Address 31:24 RW/RO 0xXXXX These bits indicate the address of the Expansion ROM
area.
ROM Size indication 23:11 RW/RO 0x00 These bits indicate the size of the Expansion ROM area
or the address of it. The boundary form RO bits to RW
bits is controlled by the EXP_ROM_SIZE bits.
Reserved 10:1 RO 0x000 These bits indicate that the Expansion ROM area is at
least 2k bytes. They always read as zero.
Expansion ROM Enable 0 RW/RO 0x0 This bit indicates that the Expansion ROM BAR is valid
when set to one. If it is zero, the expansion BAR should
not be programmed or used. This bit will only be RW if it
is enabled by the EXP_ROM_ENA bit which defaults to 0.
Default
Name Bits Access Value Description
RESERVED 31:8 RO 0x0 Unused
Capabilities pointer 7:0 RO 0x48 The 8-bit Capabilities Pointer register specifies an offset
(PM Cap) in the PCI address space of a linked list of new
capabilities. The capabilities are PCI-X, PCI Power
Management, Vital Product Data (VPD), and Message
Signaled Interrupts (MSI) is supported. The read-only
value of this register is controlled by the CAP_ENA
register in the PCI register space. For Function 2, this
should point to offset 0x80 which is the PM Cap.
Structure.
Default
Name Bits Access Value Description
MAXIMUM_LATENCY 31:24 RO 0x00 Hardwired to zero
MIN_GRANT 23:16 RO 0x00 Hardwired to zero
Interrupt Pin 15:8 RO 0x02 Indicates which interrupt pin this device uses
0: no Interrupt
1: Use Interrupt A
2: Use Interrupt B
3: Use Interrupt C
4: Use Interrupt D
Interrupt Line 7:0 RW 0x00 Identifies interrupt routing information
Default
Name Bits Access Value Description
RESERVED 31:7 RO 0x00 Unused
Number of Slots 6:4 RO 0x01 These statuses indicate the number of slots the
Host Controller supports. In the case of single
function, maximum 6 slots can be assigned.
000b: 1 slot
001b: 2 slot
010b: 3 slot
011b: 4 slot
100b: 5 slot
101b: 6 slot
Function 1 supports 2 slots: SD and MMC
Default
Name Bits Access Value Description
RESERVED 3 RO 0x00 Unused
First Base Address 2:0 RO 0x00 Up to 6 Base Address can be specified in single
Register Number configuration. These bits indicate first Base
Address register number assigned for SD Host
Controller register set. In the case of single
function and multiple register sets, contiguous
base addresses are used. Number Of Slot specifies
number of base address.
000b: Base Address 10h (BAR0)
001b: Base Address 14h (BAR1)
010b: Base Address 18h (BAR2)
011b: Base Address 1Ch (BAR3)
100b: Base Address 20h (BAR4)
10 1b: Base Address 24h (BAR5)
Default
Name Bits Access Value Description
PME Support 31:27 RO 0x08 if no Indicates the power states in which the device may
aux assert PME. A 0 for any bit indicates that the device is
0x18 if not capable of asserting the PME pin signal while in that
aux power state
Bit 27: PME can be asserted from D0
Bit 28: PME can be asserted from D1
Bit 29: PME can be asserted from D2
Bit 30: PME can be asserted from D3H
Bit 31: PME can be asserted from D3C (default depends
on the presence of Aux power)
D2 Support 26 RO 0x0 Indicates whether the device supports the D2 PM state.
This device does not support D2; hardwired to 0
D1 Support 25 RO 0x0 Indicates whether the device supports the D1 PM state.
FW-RW This device does not support D1
Aux Current 24:22 RO 0x0 This device supports the data register for reporting Aux
FW-RW Current requirements so this field is N/A
DSI 21 RO 0x0 Indicates that the device requires device specific
FW-RW initialization (beyond PCI configuration header) before
the generic class device driver is able to use it. This
device hardwires this bit to 0 indicating that DSI is not
necessary
Reserved 20 RO 0x0
Default
Name Bits Access Value Description
PME Clock 19 RO 0x0 Indicates that the device relies on the presence of the
PCI clock for PME operation. This device does not
require the PCI clock to generate PME. Therefore, the bit
is hardwired to 0
Version 18:16 RO 0x3 A value of 011b indicates that this function complies
with revision 1.2 of the PCI PM specification.
PM Next Capabilities 15:8 RO 0xAC Points to the next capabilities block which is Broadcom
Vendor Specific Capability Header
PM Capability ID 7:0 RO 0x01 Identifies this item as Power management capabilities
Default
Name Bits Access Value Description
PM Data 31:24 RO 0x00 Contains the power management data indicated by the
FW-RW Data Select field in PMCSR
Reserved 23:16 RO 0x00
PME Status 15 RW2C 0x0 This bit is set when the device asserts the WAKE signal
independent of the PME enable bit. Writing 1 this bit
will clear it and cause the deice to stop asserting WAKE
Data Scale 14:13 RO 0x1 Indicates the scaling factor that is used when
interpreting the value of the data register (offset 7 in PM
capability space). The device hardwires this value to 1 to
indicate a scale of 1x
Data Select 12:9 RW 0x0 Indicates which data is to be reported via the Data
register (offset 7 in PM capability space)
PME Enable 8 RW 0x1 Enables the device to generate PME when this bit is set
to 1. When 0, PME generation is disabled
Reserved 7:4 RO 0x00
Default
Name Bits Access Value Description
No Soft Reset 3 RO 0x1 No_Soft_Reset –
When set (1), this bit indicates that devices transitioning
from D3hot to D0 because of PowerState commands do
not perform an internal reset. Configuration Context is
preserved. Upon transition from the D3hot to the D0
Initialized state, no additional operating system
intervention is required to preserve Configuration
Context beyond writing the PowerState bits.
When clear (0), devices do perform an internal reset
upon transitioning from D3hot to D0 via software control
of the PowerState bits. Configuration Context is lost
when performing the soft reset. Upon transition from
the D3hot to the D0 state, full reinitialization sequence is
needed to return the device to D0 Initialized.
Regardless of this bit, devices that transition from D3hot
to D0 by a system or bus segment reset will return to the
device state D0 Uninitialized with only PME context
preserved if PME is supported and enabled
Reserved 2 RO 0x0 –
Default
Name Bits Access Value Description
Power State 1:0 RW 0x0 Indicates the current power state of the device when
read
When written, it sets the device into the specified
power state
00: D0 – Select D0
01: D1 – Select D1
10: D2 – Select D2
11: D3-Hot – Select D3
These bits may be used by the system to set the power
state. The register is implemented as two banks of two
bits each. Can be written from both configuration space
and from the PCI register space as the PM_STATE bits.
When written from the PCI bus, only values of 0 and 3
will be accepted. This is the register returned on reads
of this register from configuration space. The second
bank catches all writes values. The value of the second
register is returned when the PM_STATE bits are read
from register space. The idea of these registers is to a)
Provide compatible operation to 5701 b) Allow
implementation of other power states though
firmware.
Default
Name Bits Access Value Description
Reserved 31:30 RO 0 Unused
Message Number 29-25 FW-RW 0 Interrupt Message Number:indicate which MSI/MSI-X
RO vector is used for the interrupt message generated in
association with any of the status bits of this capability
structure. For MSI, the value in this register indicates the
offset between the base Message Data and the interrupt
message that is generated. For MSI-X, the value in this
register indicates which MSI-X Table entry is used to
generate the interrupt message. The entry must be one
of the first 32 entries even if the function implements
more than 32 entries.
Slot implemented 24 RO 0 Hardwired to 0 because this is an endpoint device
Slot Implemented. This register is not supported.
Device/Port Type 23-20 RO 0 Hardwired to 0 because this is an endpoint device
Device/Port Type. Device is an End Point.
Capability Version 19-16 RO 2 Capability Version. PCI Express Capability structure
version number. These bits are hardwired to 2h.
PCIE_NEXT_CAP_PTR 15-8 RO 0 This registers contains the pointer to the next PCI
capability structure.
PCIE_CAP_ID 7-0 RO 0x10 This register contains the PCIExpress Capability ID.
Default
Name Bits Access Value Description
Reserved 31:29 RO 0
FLR_CAP_SUPPORTED 28 RO 0 FLR capability is advertised when flr_supported bit in
private device_capability register space is set.
Captured Slot Power 27:26 RO 0 This value specifies the scale used for the Power Limit
Limit Scale 00 = 1.0x
01 = 0.1x
10 = 0.01x
11 = 0.001x
Specifies the scale used for the Slot Power Limit Value. It
is set by the Set_Slot_Power_Limit Message. This field is
not set for Root ports
Captured Slot Power 25:18 RO 0 This value specifies the upper limit on the power
Limit Value supplied for this device
Specifies the upper limit on power supplied by slot. It is
set by the Set_Slot_Power_Limit Message. This field is
not set for Root ports.
Reserved 17:16 RO 0 Unused
Role Based Error 15 RO 1 When set to 1, this value indicates that a role based error
Support is supported. Indicate device is conforming to the ECN,
PCI Express Base Specification, Revision 1.1., or
subsequent PCI Express Base Specification revisions.
Reserved 14-12 RO 0 Unused
Endpoint L1 Acceptable 11:9 FW-RW 6h This value returns the latency that this device can accept
Latency when transitioning from the L1 to the L0 state
000 = less than 1us
001 = 1 us to less than 2u s
010 = 2 us to less than 4 us
011 = 4 us to less than 8u s
100 = 8 us to less than 16 us
101 = 16 us to less than 32 us
110 = 32 us to 64 us
111 = Greater than 64 us
Endpoint L1 Acceptable Latency. These bits are
programmable through register space. The bits should
be 0 for Root ports.
Default
Name Bits Access Value Description
Endpoint L0s 8:6 FW-RW 6h This value returns the total latency that this device can
Acceptable Latency accept when transitioning from the L0s to L0 state
000 = less than 64ns
001 = 64ns to less than 128ns
010 = 128ns to less than 256ns
011 = 256ns to less than 512ns
100 = 512ns to less than 1us
101 = 1us to less than 2us
110 = 2us to 4us
111 = Greater than 4us
Endpoint L0s Acceptable Latency. These bits are
programmable through register space. The value should
be 0 for root ports.
Extended Tag Field 5 RO 0 This value returns the maximum supported tag field size
Supported when this function acts as a requester.
0 = 5bit tag field
1 = 8bit tag field
We do support extended tag
Extended Tag Field Support. This bit is programmable
through register space. This capability is not currently
supported.
Reserved 4:3 RO 0 Unused
Max Payload Size 2:0 FW-RW 0 This value returns the maximum data payload size (in
Supported bytes) that this function supports for TLPs
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7 = Reserved
Max Payload Size Supported. These bits are
programmable from the register space and default value
is based on define in version.v file.
Default
Name Bits Access Value Description
Reserved 31-22 RO 0
Transaction Pending 21 RO 0 When this bit is set to 1, it indicates that this device has
issued nonposted request packets which have not been
completed
This is bit is read back a 1, whenever a nonposted
request initiated by PCIe core is pending to be
completed.
Aux Power Detected 20 RO 0 When this bit is set to 1, it indicates that Aux power has
been detected
This bit is the current state of the VAUX_PRSNT pin of the
device. When it is 1, it is indicating that part needs VAUX
and detects the VAUX is present.
Unsupported Request 19 W2C 0 When this bit is set to 1, it indicates that an Unsupported
Detected Request has been received
Unsupported Request Detected.
Fatal Error Detected 18 W2C 0 When this bit is set to 1, it indicates that a Fatal Error has
been detected. Fatal Error Detected.
Non-fatal Error 17 W2C 0 When this bit is set to 1, it indicates that a nonfatal error
Detected has been detected. Nonfatal error detected.
Correctable Error 16 W2C 0 When this bit is set to 1, it indicates that a correctable
Detected error has been detected. Correctable error detected. .
FLR_INITIATED 15 RW 0 Initiate Function Level reset. This bit is writeable only if
flr_supported bit in private device_capability register is
set. A write of 1 to this bit initiates Function Level Reset.
The value read by s/w from this bit is always 0.
Max Read Request Size 14:12 RW 2 This value controls the maximum read requests size for
this device when acting as the requester
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Maximum Read Request Size. Depending on the spec,
internal logic uses either the min or the max of the value
of the two functions. .
Enable No Snoop 11 RW 1 When this bit is set, the memory accessed by this device
will not be cached by the processor. Enable No Snoop.
When this bit is set to 1, PCIe initiates a read request with
the No Snoop bit in the attribute field set for the
transactions that request the No Snoop attribute.
Default
Name Bits Access Value Description
Aux Power PM Enable 10 RO 1 When this bit is set, this device is enabled to draw aux
power independent of PME power. This bit when set
enables device to draw aux power independent of PME
AUX power.
RESERVED 9 RO 0 Unused
Extended Tag Field 8 RW 0 When this bit is set, it enables this device to use an 8-bit
Enable Tag field as a requester. This capability is not supported.
Max Payload Size 7:5 RW 0 This value sets the maximum TLP data payload size (in
bytes) for this device
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Max Payload Size. Depending on the spec, internal logic
uses either the min or the max of the value of the two
functions.
Enabled Relaxed 4 RW 1 When this bit is set, this device is permitted to set the
Ordering Relaxed Ordering bit. Relax Ordering Enable.
Unsupported Request 3 RW 0 When this bit is set, Unsupported Request reporting is
Reporting Enable enabled. Unsupported Request Reporting Enable.
Fatal Error Reporting 2 RW 0 When this bit is set, Fatal Error reporting is enabled. Fatal
Enabled Error Reporting Enable.
Non-fatal Error 1 RW 0 When this bit is set, nonfatal error reporting is enabled.
Reporting Enabled Nonfatal error reporting enable.
Correctable Error 0 RW 0 When this bit is set, Correctable error reporting is
Reporting Enabled enabled. Correctable error reporting enable. .
Default
Name Bits Access Value Description
Port Number 31:24 RO 0:HWinit This value indicates the port number associated with
this. PCIe Port Number. These bits are programmable
through register.
Reserved 23:22 RO 0
LINK_BW_NOTIFY 21 RO 0 Link Bandwidth Notification Capability: RC: A value of 1b
indicates support for the Link Bandwidth Notification
status and interrupt mechanisms. This capability is
required for all Root Ports and Switch Downstream Ports
supporting Links wider than x1 and/or multiple Link
speeds. RC: Field is implemented. EP: Not supported and
hardwired to 0.
DL_ACTIVE_REP 20 RO 0 Data Link Layer Link Active Reporting Capable: RC: this
bit must be hardwired to 1b if the component supports
the optional capability of reporting the DL_Active state
of the Data Link Control and Management State
Machine. RC: Implemented (RW) for RC. Default to 0. EP:
Not supported and hardwired to 0.
SUR_DWN_ERR_REP 19 RO 0 Surprise Down Error Reporting Capable: RC: this bit must
be set if the component supports the optional capability
of detecting and reporting a Surprise Down error
condition. RC: Not supported and hardwired to 0. EP:
Not supported and hardwired to 0.
Clock Power 18 Host RO 1 1: clkreq capable
Management FW R/W 0: clkreq not capable
If it’s mobile bonding, the default value will be 1,
otherwise 0.
L1 Exit Latency 17:15 RO 2 This value returns the L1 exit latency for this link
FW-RW 0 = Maximum of 1 us
1 = Maximum of 2 us
2 = Maximum of 4 us
3 = Maximum of 8 us
4 = Maximum of 16 us
5 = Maximum of 32us
6 = Maximum of 64us
7 = No limit
L1 Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Default
Name Bits Access Value Description
L0s Exit Latency 14:12 RO 4 This value returns the L0s exit latency for this link
FW-RW 0 = less than 64ns
1 = less than 128ns
2 = less than 256ns
3 = less than 512ns
4 = less than 1us
5 = less than 2us
6 = less than 4us
7 = greater than 4us
L0s Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Active State power 11:10 RO 3 This value returns the supported ASPM states
management support FW-RW 0 = reserved
1 = L0s supported
2 = reserved
3 = L0s and L1 supported
ASPM Support. These bits are programmable through
reg space.
Maximum Link Width 9:4 RO 1 This value returns the maximum link width. Allowable
FW-RW values are 1, 2, 4, 8, 12, 16, and 32 only. All other values
are reserved.
Value Name Description
1 1 One Lane Max
2 2 Two Lanes Max
4 4 Four Lanes Max
8 8 Eight Lanes Max
Maximum Link Width. These are programmable through
reg space.Bit 9 is always 0 and is not programmable.
Default value is based on numLanes field in version.v.
Maximum Link Speed 3:0 RO 1 This value returns the Maximum Link Speed. 1 =
FW-RW 2.5Gbps. All other values reserved.
Value Name Description
1 2_5 2.5 Gbps Max
2 5 5 Gbps Max
Value used by internal logic is the smaller of the value
programmed for each function.
Default
Name Bits Access Value Description
Reserved 31- RO 0 Unused
30
DL_ACTIVE 29 RO 0 Data Link Layer Link Active: returns a 1b to indicate the
DL_Active state, 0b otherwise. Not implemented and
hardwire to 0.
Slot Clock Configuration 28 RO 1 This value indicates that this device uses the same
physical reference clock that the platform provides on
the connector. Slot Clock configuration. This bit is read-
only by host, but read/write via backdoor CS bus.
LINK_TRAINING 27 RO 0 EP: This bit is N/A and is hardwired to 0.
Reserved 26 RO 0 Unused
Negotiated Link Width 25- RO 0 This value returns the negotiated link width. The only
20 valid values are 1, 2, 4, 8, 12, 16, 32
Negotiated Link Speed 19- RO 0 This value returns the negotiated link speed. 1 = 2.5Gbps
16 Link Speed. These bits indicate the negotiated link speed
of the PCI Express link.
Reserved 15:1 RO 0 Unused
2
LINK_BW_INT_EN 11 RO 0 Link Autonomous Bandwidth Interrupt Enable: When
Set, this bit enables the generation of an interrupt to
indicate that the Link Autonomous Bandwidth Status bit
has been Set. RC: Not implemented and hardwired to 0.
EP: N/A and hardwired to 0.
LINK_BW_MGMT_INT_E 10 RO 0 Link Bandwidth Management Interrupt Enable: when
N Set, this bit enables the generation of an interrupt to
indicate that the Link Bandwidth Management Status bit
has been Set. RC: N/A and hardwired to 0. EP: Not
implemented and hardwired to 0.
HW_AUTO_WIDTH_DIS 9 RO 0 Hardware Autonomous Width Disable: When Set, this bit
disables hardware from changing the Link width for
reasons other than attempting to correct unreliable Link
operation by reducing Link width. Other functions are
reserved. RC: Not applicable and hardwire to 0 EP: If
supported, only apply to function0. Not implemented
and hardwire to 0.
Clock Request Enable 8 RW 0 1: clkreq is enabled
0: clkreq is disabled
Enable Clock Power Management: RC: N/A and
hardwired to 0. EP: When this bit is set, the device is
permitted to use CLKREQ# signal to power management.
Feature is enabled through version.v define.
Default
Name Bits Access Value Description
Extended Synch 7 RW 0 When this bit is set, it forces extended sync which gives
external devices (such as logic analyzers) additional time
to achieve bit and symbol lock. Extended Synch. This bit
when set forces the transmission of 4096 FTS ordered
sets in the L0s state followed by a single SKP ordered set
prior to entering the L0 state, and the transmission of
1024 TS1 ordered sets in the L1 state prior to entering
the Recovery state. Value used by logic is resolved to 1 if
either function has this bit set.
Common Clock 6 RW 0 When this bit is set, it indicates that the link partners are
Configuration using a common reference clock. Common Clock
Configuration. Value used by logic is resolved to 1 only if
both functions (when enabled) have this bit set.
Reserved (Retrain Link) 5 RO 0 The device does not support this feature. Requesting
PHY to retrain the link. This bit is only applicable to RC.
So for EP it is read only bit.
Reserved (Link Disable) 4 RO 0 The device does not support this feature. Requesting
PHY to disable the link. This bit is only applicable to RC.
So for EP it is read only bit.
Read Completion 3 RW 0 This value indicates the Read Completion Boundary
Boundary value (in bytes) of the upstream root port
0 = 64
1 = 128
Read Completion Boundary.
Reserved 2 RO 0 Unused
Active State Power 1:0 RW 0 This value control the Active State power management
Management Control supported on this link
0 = Disabled
1 = L0s entry enabled
2 = L1 entry enabled
3 = L0s and L1 entry enabled
ASPM Control. Value used by logic is dependent on the
value of this bit for each enabled function and also on
the programmed powerstate of each function.
Acces Default
Name Bits s Value Description
PHYSICAL_SLOT_NUMBER 31- RO 0 Not Implemented
19
RESERVED 18- RO 0 Unused
17
SLOT_POWER_LIMIT_SCALE 16- RO 0 Not Implemented
15
Acces Default
Name Bits s Value Description
SLOT_POWER_LIMIT_VALUE 14-7 RO 0 Not Implemented
RESERVED 6-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS 31-23 RO 0 Not Implemented
PRESENCE_DETECT 22 RO 0 Not Implemented
RESERVED 21-16 RO 0 Not Implemented
SLOT_CONTROL 15-0 RO 0 Not Implemented
Acces Default
Name Bits s Value Description
RESERVED 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-12 RO 0 Unused
LTR_MECHANISM_ 11 RO 0 Latency Tolerance Reporting Mechanism Supported,
SUPPORTED Programmable through register space. This field will
read 1, when bit 5 of ext_cap_ena field in private
register space is set.
RESERVED 10-5 RO 0 Unused
CMPL_TIMEOUT_DISABL_ 4 RO 1 Completion Timeout Disable Supported,
SUPPORTED Programmable through register space.
CMPL_TIMEOUT_RANGES_ 3-0 RO F Completion Timeout Ranges Supported.
SUPPORTED Programmable through register space .
Value Name Description
15 ABCD Ranges A,B,C and D
Default
Name Bits Access Value Description
DEVICE_STATUS_2 31-16 RO 0 Placeholder for Gen2
RESERVED 15-11 RO 0 Unused
LTR_MECHANISM_ENABLE 10 RW 0 Latency Tolerance Reporting Mechanism Enable,
This field is writeable, when bit 5 of ext_cap_ena
field in private register space is set. This bit is RW
only in Function 2 and is RsvdP for all other functions.
IDO_CPL_ENABLE 9 RW 0 IDO Completion Enable, This field is writeable, when
bit ido_supported bit of private device_capability_2
register is set. When this bit is set, function is
permitted to set ID based Ordering Attribute of
Completions it returns.
IDO_REQ_ENABLE 8 RW 0 IDO Request Enable, This field is writeable, when bit
ido_supported bit of private device_capability_2
register is set. When this bit is set, function is
permitted to set ID based Ordering Attribute of
Requests it initiates.
RESERVED 7-5 RO 0 Unused
CMPL_TIMEOUT_DISABLE 4 RW 0 Completion Timeout Disable
CMPL_TIMEOUT_VALUE 3-0 RW 0 Completion timeout value. The spec specifies a
range, the device uses the max value in the range.
Value Name Description
0 50MS 50 ms
1 100US 100 us
2 10MS 10 ms
3 55MS 55 ms
4 210MS 210 ms
5 900MS 900 ms
6 3_5S 3.5s
7 13S 13s
8 64S 64s
Default
Name Bits Access Value Description
LINK_CAPABILITY_2 31-0 RO 0 Placeholder for Gen2
Default
Name Bits Access Value Description
LINK_STATUS_2 31-17 RO 0 Placeholder for Gen2
CURR_DEEMPH_LEVEL 16 RO 0 curr_deemph_level
RESERVED 15-13 RO 0 Unused
CFG_COMPLIANCE_DEEMP 12 RW 0 Compliance Deemphasis.
H
CFG_COMPLIANCE_SOS 11 RW 0 Compliance SOS.
CFG_ENTER_MOD_ 10 RW 0 Enter Modified Compliance.
COMPLIANCE
CFG_TX_MARGIN 9-7 RW 0 Controls the value of non deemphasized voltage
level at the TX pins. Value used by logic is resolved to
the smaller binary value, if two functions have
different values.
0 000 800 – 1200 mV for full swing and
400 – 600 mV for half swing
1 001 Values are monotonic with non-zero
slope
2 010 Values are monotonic with non-zero
slope
3 011 200 – 400 mV for full swing and 100 –
200 mV for half swing
4 100 Reserved
5 101 Reserved
6 110 Reserved
7 111 Reserved
SEL_DEEMPHASIS 6 RW 0 When link is operating at Gen2 rates, this bit selects
the level of deemphasis. Value used by logic is
resolved to 1 if either function has this bit set.
0 0 – 6 dB
1 1 – 3.5 dB
HW_AUTO_SPEED_DISABLE 5 RO 0 Not Supported and hardwired to 0.
ENTER_COMPLIANCE 4 RW 0 S/W instructs link to enter compliance mode. Value
used by internal logic is set when either function has
this bit enabled.
TARGET_LINK_SPEED 3-0 RW 0 Upper limit of link speed:
0 2_5 2.5 Gbps
1 5_0 5.0 Gbps
Default
Name Bits Access Value Description
SLOT_CAPABILITY_2 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS_2 31-16 RO 0 Not Implemented
SLOT_CONTROL_2 15-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
Device ID 31:16 FW-RW 0x16BF Default for BCM57785, BCM57765, BCM57795 (SD/
Host-RO MMC Function 3): 0x16BF
Vendor ID 15:0 FW-RW 0x14E4 –
Host-RO
Default
Name Bits Access Value Description
Detected Parity Error 31 R/W2C 0x0 When this bit is set, it indicates that the function has
received a poisoned TLP.
Signaled System Error 30 R/W2C 0x0 This bit is set when a function sends an ERR_FATAL or
ERR_NONFATAL message and the SERR enable bit in the
command register is set.
Received Master Abort 29 R/W2C 0x0 This bit is set when a requester receives a completion
with UR completion status.
Received Target Abort 28 R/W2C 0x0 This bit is set when a requester receives a completion
with completer abort completion status.
Signaled Target Abort 27 R/W2C 0x0 This bit is set when a function acting as a completer
terminates a request by issuing Completer abort
completion status to the requester.
DEVSEL Timing 26:25 RO 0x0 Does not apply to PCIe
Master Data Parity 24 R/W2C 0x0 The master data parity error bit is set by a requester if
Error the parity error enable bit is set in its command register
and either of the following 2 conditions occur. If the
requester receives a poisoned completion if the
requester poisons a write request If the parity Error
enable bit is cleared , the master data parity error status
bit is never set.
Fast Back-to-back 23 RO 0x0 Does not apply to PCIe.
capable
Reserved 22 RO 0x0 These bits are reserved and tied low per the PCI
specification.
66MHz Capable 21 RO 0x0 Does not apply to PCIe
Capabilities List 20 RO 0x1 This bit is tied high to indicate that the device supports a
capability list. The list starts at address 0x40.
Interrupt Status 19 RO 0x0 Indicates this device generated an interrupt
Reserved 18:16 RO 0x0 These bits are reserved and tied low per the PCIe
specification.
Reserved 15:11 RO 0x00 These bits are reserved and tied low per the PCIe
specification.
Interrupt Disable 10 RW 0x0 When this bit is set, function is not permitted to
generate IntX interrupt messages (deasserted)
regardless of any internal chip logic. Setting this bit has
no effect on the INT_STATUS bit below. Writing this bit to
0 will un-mask the interrupt and let it run normally.
Fast Back-to-back 9 RO 0x0 Does not apply to PCIe
Enable
Default
Name Bits Access Value Description
System Error Enable 8 RW 0x0 When set, this bit enables the non fatal and fatal errors
detected by the function to be reported to the Root
Complex. The function reports such errors to the Root
Complex if it is enabled to do so either through this bit or
though PCI express specific bits in DCR
Stepping Control 7 RO 0x0 Does not apply to PCIe
Parity Error Enable 6 RW 0x0 This bit enables the write to the Master data parity error
status bit. If this bit is cleared , the master data parity
error status bit will never be set.
VGA Palette Snoop 5 RO 0x0 Does not apply to PCIe
Memory Write and 4 RO 0x0 Does not apply to PCIe
Invalidate
Special Cycles 3 RO 0x0 Does not apply to PCIe
Bus Master 2 RW 0x0 This bit controls the enabling of the bus master activity
by this device. When low, it disables an Endpoint
function from issuing memory or IO requests. Also
disables the ability to issue MSI messages.
Memory Space 1 RW 0x0 This bit controls the enabling of the memory space.
When disabled, memory transactions targeting this
device return completion with UR status
I/O Space 0 RO 0x0 This bit indicates that the device does not support I/O
space access because it is zero and can not be modified.
IO transactions targeting this device return completion
with UR status .
Default
Name Bits Access Value Description
PCI Classcode 31:8 RO 0x088000 Default for (xD Function 3): 0x088000
Revision ID – All-layer 7:4 FW-RW ASIC Rev This field will be updated automatically by hardware
Revision ID Host-RO Input based on the External All Layer Revision ID. For example,
this field will contain a value of 0x0 after hard reset for
BCM57785 A0 silicon. Software shall use this field only to
display the Device Silicon Revision ID for application
where the user/customer needs to know the Device
Silicon Revision ID. One such application is the B57DIAG
Device Banner. Furthermore, Software (Boot Code/
Driver/B57DIAG) shall NOT use this field in determining
Bug Fixes. It should only use the Internal Revision ID, bits
31:24 and bits 19:16 from Register 68, for that purpose.
0x0 for A Steps
0x1 for B Steps
0x2 for C Steps
Default
Name Bits Access Value Description
Revision ID – Metal 3:0 FW-RW ASIC Rev This field will be updated automatically by hardware
Revision ID Host-RO Input based on the Metal Revision ID.
0x0 for metal 0 step
0x1 for metal 1 step
0x2 for metal 2 step
BIST, Header Type, Latency Timer, Cache Line Size Register (offset: 0x0C) –
Function 3
Default
Name Bits Access Value Description
BIST 31:24 RO 0x0 The 8-bit BIST register is used to initiate and report the
FW-RW results of any Built-In-Self-Test. This value can be written
by firmware through the PCI register space BIST register
to modify the read value to the host.
Header Type 23:16 RO 0x80 The 8-bit Header Type register identifies both the layout
of bytes 10h through 3Fh of the Configuration space, as
well as whether this adapter contains multiple functions.
A value of 0x80 indicates a multi function device (Type 0)
using the format specified in the PCI specification, while
a value of 0x0 indicates a single function Type 0 device.
Latency Timer 15:8 RO 0x0 This register does not apply to PCI express and must be
hardwired to zero
Cache Line Size 7:0 RO 0x0 This field is implemented by PCIe device as a read/write
FW-RW field for legacy compatibility purposes.
Default
Name Bits Access Value Description
Base Address (BAR_1) 31:8 RW 0x0 These bits set the address within a 32-bit address space
that will be card will respond in. These bits may be
combined with the bits in XBAR_2 to create a full 64 bit
address decode. Only the bits that address blocks bigger
than the setting in the BAR1_SIZE value are RW. All lower
bits are RO with a value of zero. This value is sticky and
only reset by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_1 may be
Strap pre-fetched or cached by the system without side
input to effects. Bit can be programmed from shadow register.
pcie block
Default
Name Bits Access Value Description
Type 2:1 Host RO 0x0 These bits indicate that BAR_1 may be programmed to
Strap map this adapter to anywhere in the 64-bit address
input to space.
pcie block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For Function 3, this value is 0 (32-bit enabled)
Memory Space 0 RO 0x0 This bit indicates that BAR_1 maps a memory space and
Indicator is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RW 0x0 The 32-bit XBAR_2 register programs the upper half
(XBAR_2) RO if of the base address for the memory space mapped
bar1_64en by the card onto the PCI bus. These bits set the
a is 0’0’ address upper 32-bit address space. These bits may
be combined with the bits in BAR_1 to create a full
64 bit address decode. These bits must be set to
zero for the card to respond to single address cycle
requests. This value is sticky and only reset by
HARD Reset.
Default
Name Bits Access Value Description
Base Address (BAR_3) 31:8 RW 0x0 These bits set the address within a 32-bit address
space that will be card will respond in. These bits
may be combined with the bits in XBAR_4 to
create a full 64 bit address decode. Only the bits
that address blocks bigger than the setting in the
BAR2_SIZE value are RW. All lower bits are RO with
a value of zero. This value is sticky and only reset
by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Default
Name Bits Access Value Description
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_2
Strap input may be pre-fetched or cached by the system
to pcie without side effects.
block
Type 2:1 Host RO 0x0 These bits indicate that BAR_2 may be
Strap input programmed to map this adapter to anywhere in
to pcie the 64-bit address space.
block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For Function 3, this value is 0 (32-bit enabled)
Memory Space Indicator 0 RO 0x0 This bit indicates that BAR_2 maps a memory
space and is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RO 0x00 These bits set the address upper 32-bit address
4 (XBAR_4) space. These bits may be combined with the bits in
BAR_3 to create a full 64 bit address decode. These
bits must be set to zero for the card to respond to
single address cycle requests. This value is sticky
and only reset by HARD Reset
Default
Name Bits Access Value Description
Base Address (BAR_5) 31:8 RW 0x0 These bits set the address within a 32-bit address
space that will be card will respond in. These bits
may be combined with the bits in XBAR_6 to
create a full 64 bit address decode. Only the bits
that address blocks bigger than the setting in the
BAR3_SIZE value are RW. All lower bits are RO with
a value of zero. This value is sticky and only reset
by HARD Reset.
Size indication 7:4 RO 0x0 RO bits indicate size of memory space.
7:4 RO=0 (256B BAR
Prefetchable 3 RO 0x0 This bit indicates that the area mapped by BAR_3
Strap input may be pre-fetched or cached by the system
to pcie without side effects.
block
Type 2:1 Host RO 0x0 These bits indicate that BAR_3 may be
Strap input programmed to map this adapter to anywhere in
to pcie the 64-bit address space.
block Encoded with the following values
00: located anywhere in 32-bit address space
01: reserved
10: located anywhere in 64-bit address space
11: reserved
For Function 3, this value is 0 (32-bit enabled)
Memory Space Indicator 0 RO 0x0 This bit indicates that BAR_3 maps a memory
space and is always read as 0.
Default
Name Bits Access Value Description
Extended Base Address 31:0 RW 0x00 These bits set the address upper 32-bit address
6 space. These bits may be combined with the bits in
(XBAR_6) BAR_5 to create a full 64 bit address decode. These
bits must be set to zero for the card to respond to
single address cycle requests. This value is sticky
and only reset by HARD Reset.
Default
Name Bits Access Value Description
Cardbus CIS Pointer 31:0 FW-RW 0x0 N/A for PCIe Device
Host - RO
Default
Name Bits Access Value Description
Subsystem Device ID 31:16 FW-RW 0x96BF Default for BCM57785, BCM57765, BCM57795 (SD/
Host - RO MMC Function 3): 0x96BF
Default
Name Bits Access Value Description
ROM Base Address 31:24 RW/RO 0xXXXX These bits indicate the address of the Expansion ROM
area.
ROM Size indication 23:11 RW/RO 0x00 These bits indicate the size of the Expansion ROM area
or the address of it. The boundary form RO bits to RW
bits is controlled by the EXP_ROM_SIZE bits.
Reserved 10:1 RO 0x000 These bits indicate that the Expansion ROM area is at
least 2k bytes. They always read as zero.
Expansion ROM Enable 0 RW/RO 0x0 This bit indicates that the Expansion ROM BAR is valid
when set to one. If it is zero, the expansion BAR should
not be programmed or used. This bit will only be RW if it
is enabled by the EXP_ROM_ENA bit which defaults to 0.
Default
Name Bits Access Value Description
RESERVED 31:8 RO 0x0 Unused
Capabilities pointer 7:0 RO 0x48 The 8-bit Capabilities Pointer register specifies an offset
(PM Cap) in the PCI address space of a linked list of new
capabilities. The capabilities are PCI-X, PCI Power
Management, Vital Product Data (VPD), and Message
Signaled Interrupts (MSI) is supported. The read-only
value of this register is controlled by the CAP_ENA
register in the PCI register space. For Function 3, this
should point to offset 0x80 which is the PM Cap.
Structure.
Default
Name Bits Access Value Description
MAXIMUM_LATENCY 31:24 RO 0x00 Hardwired to zero
MIN_GRANT 23:16 RO 0x00 Hardwired to zero
Interrupt Pin 15:8 RO 0x02 Indicates which interrupt pin this device uses
0: no Interrupt
1: Use Interrupt A
2: Use Interrupt B
3: Use Interrupt C
4: Use Interrupt D
Interrupt Line 7:0 RW 0x00 Identifies interrupt routing information
Default
Name Bits Access Value Description
RESERVED 31:7 RO 0x00 Unused
Number of Slots 6:4 RO 0x01 These statuses indicate the number of slots the
Host Controller supports. In the case of single
function, maximum 6 slots can be assigned.
000b: 1 slot
001b: 2 slot
010b: 3 slot
011b: 4 slot
100b: 5 slot
101b: 6 slot
Function 1 supports 2 slots: SD and MMC
Default
Name Bits Access Value Description
RESERVED 3 RO 0x00 Unused
First Base Address 2:0 RO 0x00 Up to 6 Base Address can be specified in single
Register Number configuration. These bits indicate first Base
Address register number assigned for SD Host
Controller register set. In the case of single
function and multiple register sets, contiguous
base addresses are used. Number Of Slot specifies
number of base address.
Default
Name Bits Access Value Description
PME Support 31:27 RO 0x08 if no Indicates the power states in which the device may
aux assert PME. A 0 for any bit indicates that the device is
0x18 if not capable of asserting the PME pin signal while in that
aux power state
Bit 27: PME can be asserted from D0
Bit 28: PME can be asserted from D1
Bit 29: PME can be asserted from D2
Bit 30: PME can be asserted from D3H
Bit 31: PME can be asserted from D3C (default depends
on the presence of Aux power)
D2 Support 26 RO 0x0 Indicates whether the device supports the D2 PM state.
This device does not support D2; hardwired to 0
D1 Support 25 RO 0x0 Indicates whether the device supports the D1 PM state.
FW-RW This device does not support D1
Aux Current 24:22 RO 0x0 This device supports the data register for reporting Aux
FW-RW Current requirements so this field is N/A
DSI 21 RO 0x0 Indicates that the device requires device specific
FW-RW initialization (beyond PCI configuration header) before
the generic class device driver is able to use it. This
device hardwires this bit to 0 indicating that DSI is not
necessary
Reserved 20 RO 0x0 –
Default
Name Bits Access Value Description
PME Clock 19 RO 0x0 Indicates that the device relies on the presence of the
PCI clock for PME operation. This device does not
require the PCI clock to generate PME. Therefore, the bit
is hardwired to 0
Version 18:16 RO 0x3 A value of 011b indicates that this function complies
with revision 1.2 of the PCI PM specification.
PM Next Capabilities 15:8 RO 0xAC Points to the next capabilities block which is Broadcom
Vendor Specific Capability Header
PM Capability ID 7:0 RO 0x01 Identifies this item as Power management capabilities
Default
Name Bits Access Value Description
PM Data 31:24 RO 0x00 Contains the power management data indicated by the
FW-RW Data Select field in PMCSR
Reserved 23:16 RO 0x00 –
PME Status 15 RW2C 0x0 This bit is set when the device asserts the WAKE signal
independent of the PME enable bit. Writing 1 this bit
will clear it and cause the deice to stop asserting WAKE
Data Scale 14:13 RO 0x1 Indicates the scaling factor that is used when
interpreting the value of the data register (offset 7 in PM
capability space). The device hardwires this value to 1 to
indicate a scale of 1x
Data Select 12:9 RW 0x0 Indicates which data is to be reported via the Data
register (offset 7 in PM capability space)
PME Enable 8 RW 0x1 Enables the device to generate PME when this bit is set
to 1. When 0, PME generation is disabled
Reserved 7:4 RO 0x00 –
Default
Name Bits Access Value Description
No Soft Reset 3 RO 0x1 No_Soft_Reset –
When set (1), this bit indicates that devices transitioning
from D3hot to D0 because of PowerState commands do
not perform an internal reset. Configuration Context is
preserved. Upon transition from the D3hot to the D0
Initialized state, no additional operating system
intervention is required to preserve Configuration
Context beyond writing the PowerState bits.
When clear (0), devices do perform an internal reset
upon transitioning from D3hot to D0 via software control
of the PowerState bits. Configuration Context is lost
when performing the soft reset. Upon transition from
the D3hot to the D0 state, full reinitialization sequence is
needed to return the device to D0 Initialized.
Regardless of this bit, devices that transition from D3hot
to D0 by a system or bus segment reset will return to the
device state D0 Uninitialized with only PME context
preserved if PME is supported and enabled
Reserved 2 RO 0x0 –
Power State 1:0 RW 0x0 Indicates the current power state of the device when
read
When written, it sets the device into the specified power
state
00: D0 – Select D0
01: D1 – Select D1
10: D2 – Select D2
11: D3-Hot – Select D3
These bits may be used by the system to set the power
state. The register is implemented as two banks of two
bits each. Can be written from both configuration space
and from the PCI register space as the PM_STATE bits.
When written from the PCI bus, only values of 0 and 3
will be accepted. This is the register returned on reads of
this register from configuration space. The second bank
catches all writes values. The value of the second
register is returned when the PM_STATE bits are read
from register space. The idea of these registers is to a)
Provide compatible operation to 5701 b) Allow
implementation of other power states though firmware.
Default
Name Bits Access Value Description
Reserved 31:30 RO 0 Unused
Message Number 29-25 FW-RW 0 Interrupt Message Number:indicate which MSI/MSI-X
RO vector is used for the interrupt message generated in
association with any of the status bits of this capability
structure. For MSI, the value in this register indicates the
offset between the base Message Data and the interrupt
message that is generated. For MSI-X, the value in this
register indicates which MSI-X Table entry is used to
generate the interrupt message. The entry must be one
of the first 32 entries even if the function implements
more than 32 entries.
Slot implemented 24 RO 0 Hardwired to 0 because this is an endpoint device
Slot Implemented. This register is not supported.
Device/Port Type 23-20 RO 0 Hardwired to 0 because this is an endpoint device
Device/Port Type. Device is an End Point.
Capability Version 19-16 RO 2 Capability Version. PCI Express Capability structure
version number. These bits are hardwired to 2h.
PCIE_NEXT_CAP_PTR 15-8 RO 0 This registers contains the pointer to the next PCI
capability structure.
PCIE_CAP_ID 7-0 RO 0x10 This register contains the PCIExpress Capability ID.
Default
Name Bits Access Value Description
Reserved 31:29 RO 0 –
FLR_CAP_SUPPORTED 28 RO 0 FLR capability is advertised when flr_supported bit in
private device_capability register space is set.
Captured Slot Power 27:26 RO 0 This value specifies the scale used for the Power Limit
Limit Scale 00 = 1.0x
01 = 0.1x
10 = 0.01x
11 = 0.001x
Specifies the scale used for the Slot Power Limit Value. It
is set by the Set_Slot_Power_Limit Message. This field is
not set for Root ports.
Default
Name Bits Access Value Description
Captured Slot Power 25:18 RO 0 This value specifies the upper limit on the power
Limit Value supplied for this device
Specifies the upper limit on power supplied by slot. It is
set by the Set_Slot_Power_Limit Message. This field is
not set for Root ports.
Reserved 17:16 RO 0 Unused
Role Based Error 15 RO 1 When set to 1, this value indicates that a role based error
Support is supported. Indicate device is conforming to the ECN,
PCI Express Base Specification, Revision 1.1., or
subsequent PCI Express Base Specification revisions
Reserved 14-12 RO 0 Unused
Endpoint L1 Acceptable 11:9 FW-RW 6h This value returns the latency that this device can accept
Latency when transitioning from the L1 to the L0 state
000 = less than 1us
001 = 1us to less than 2us
010 = 2us to less than 4us
011 = 4us to less than 8us
100 = 8us to less than 16us
101 = 16us to less than 32us
110 = 32us to 64us
111 = Greater than 64us
Endpoint L1 Acceptable Latency. These bits are
programmable through register space. The bits should
be 0 for Root ports.
Endpoint L0s 8:6 FW-RW 6h This value returns the total latency that this device can
Acceptable Latency accept when transitioning from the L0s to L0 state
000 = less than 64ns
001 = 64ns to less than 128ns
010 = 128ns to less than 256ns
011 = 256ns to less than 512ns
100 = 512ns to less than 1us
101 = 1us to less than 2us
110 = 2us to 4us
111 = Greater than 4us
Endpoint L0s Acceptable Latency. These bits are
programmable through register space. The value should
be 0 for root ports.
Extended Tag Field 5 RO 0 This value returns the maximum supported tag field size
Supported when this function acts as a requester.
0 = 5bit tag field
1 = 8bit tag field
We do support extended tag
Extended Tag Field Support. This bit is programmable
through register space. This capability is not currently
supported.
Default
Name Bits Access Value Description
Reserved 4:3 RO 0 Unused
Max Payload Size 2:0 FW-RW 0 This value returns the maximum data payload size (in
Supported bytes) that this function supports for TLPs
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7 = Reserved
Max Payload Size Supported. These bits are
programmable from the register space and default value
is based on define in version.v file.
Default
Name Bits Access Value Description
Reserved 31-22 RO 0 –
Transaction Pending 21 RO 0 When this bit is set to 1, it indicates that this device has
issued nonposted request packets which have not been
completed
This is bit is read back a 1, whenever a nonposted
request initiated by PCIe core is pending to be
completed.
Aux Power Detected 20 RO 0 When this bit is set to 1, it indicates that Aux power has
been detected.
This bit is the current state of the VAUX_PRSNT pin of the
device. When it is 1, it is indicating that part needs VAUX
and detects the VAUX is present.
Unsupported Request 19 W2C 0 When this bit is set to 1, it indicates that an Unsupported
Detected Request has been received
unsupported request detected.
Fatal Error Detected 18 W2C 0 When this bit is set to 1, it indicates that a Fatal Error has
been detected. Fatal Error Detected.
Non-fatal Error 17 W2C 0 When this bit is set to 1, it indicates that a nonfatal error
Detected has been detected. Nonfatal error detected.
Correctable Error 16 W2C 0 When this bit is set to 1, it indicates that a correctable
Detected error has been detected. Correctable error detected.
FLR_INITIATED 15 RW 0 Initiate Function Level reset. This bit is writeable only if
flr_supported bit in private device_capability register is
set. A write of 1 to this bit initiates Function Level Reset.
The value read by s/w from this bit is always 0.
Max Read Request Size 14:12 RW 2 This value controls the maximum read requests size for
this device when acting as the requester
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Maximum Read Request Size. Depending on the spec,
internal logic uses either the min or the max of the value
of the two functions.
Enable No Snoop 11 RW 1 When this bit is set, the memory accessed by this device
will not be cached by the processor. Enable No Snoop.
When this bit is set to 1, PCIe initiates a read request with
the No Snoop bit in the attribute field set for the
transactions that request the No Snoop attribute.
Default
Name Bits Access Value Description
Aux Power PM Enable 10 RO 1 When this bit is set, this device is enabled to draw aux
power independent of PME power. This bit when set
enables device to draw aux power independent of PME
AUX power.
RESERVED 9 RO 0 Unused
Extended Tag Field 8 RW 0 When this bit is set, it enables this device to use an 8-bit
Enable Tag field as a requester. This capability is not supported.
Max Payload Size 7:5 RW 0 This value sets the maximum TLP data payload size (in
bytes) for this device
0 = 128
1 = 256
2 = 512
3 = 1024
4 = 2048
5 = 4096
6, 7, = Reserved
Max Payload Size. Depending on the spec, internal logic
uses either the min or the max of the value of the two
functions.
Enabled Relaxed 4 RW 1 When this bit is set, this device is permitted to set the
Ordering Relaxed Ordering bit. Relax Ordering Enable.
Unsupported Request 3 RW 0 When this bit is set, Unsupported Request reporting is
Reporting Enable enabled. Unsupported Request Reporting Enable.
Fatal Error Reporting 2 RW 0 When this bit is set, Fatal Error reporting is enabled. Fatal
Enabled Error Reporting Enable.
Non-fatal Error 1 RW 0 When this bit is set, nonfatal error reporting is enabled.
Reporting Enabled Nonfatal error reporting enable.
Correctable Error 0 RW 0 When this bit is set, correctable error reporting is
Reporting Enabled enabled. Correctable error reporting enable.
Default
Name Bits Access Value Description
Port Number 31:24 RO 0:HWinit This value indicates the port number associated with
this. PCIe Port Number. These bits are programmable
through register.
Reserved 23:22 RO 0 –
LINK_BW_NOTIFY 21 RO 0 Link Bandwidth Notification Capability: RC: A value of 1b
indicates support for the Link Bandwidth Notification
status and interrupt mechanisms. This capability is
required for all Root Ports and Switch Downstream Ports
supporting Links wider than x1 and/or multiple Link
speeds. RC: Field is implemented. EP: Not supported and
hardwired to 0.
DL_ACTIVE_REP 20 RO 0 Data Link Layer Link Active Reporting Capable: RC: this
bit must be hardwired to 1b if the component supports
the optional capability of reporting the DL_Active state
of the Data Link Control and Management State
Machine. RC: Implemented (RW) for RC. Default to 0. EP:
Not supported and hardwired to 0.
SUR_DWN_ERR_REP 19 RO 0 Surprise Down Error Reporting Capable: RC: this bit must
be set if the component supports the optional capability
of detecting and reporting a Surprise Down error
condition. RC: Not supported and hardwired to 0. EP:
Not supported and hardwired to 0.
Clock Power 18 Host RO 1 1: clkreq capable
Management FW R/W 0: clkreq not capable
If it’s mobile bonding, the default value will be 1,
otherwise 0.
L1 Exit Latency 17:15 RO 2 This value returns the L1 exit latency for this link
FW-RW 0 = Maximum of 1 us
1 = Maximum of 2 us
2 = Maximum of 4 us
3 = Maximum of 8 us
4 = Maximum of 16 us
5 = Maximum of 32us
6 = Maximum of 64us
7 = No limit
L1 Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Default
Name Bits Access Value Description
L0s Exit Latency 14:12 RO 4 This value returns the L0s exit latency for this link
FW-RW 0 = less than 64ns
1 = less than 128ns
2 = less than 256ns
3 = less than 512ns
4 = less than 1us
5 = less than 2us
6 = less than 4us
7 = greater than 4us
L0s Exit Latency. These bits are programmable through
register space. Depending on whether device is in
common clock mode or not, the value reflected by these
bits is one of the following.
Active State power 11:10 RO 3 This value returns the supported ASPM states
management support FW-RW 0 = reserved
1 = L0s supported
2 = reserved
3 = L0s and L1 supported
ASPM Support. These bits are programmable through
reg space.
Maximum Link Width 9:4 RO 1 This value returns the maximum link width. Allowable
FW-RW values are 1, 2, 4, 8, 12, 16, and 32 only. All other values
are reserved.
Value Name Description
1 1 One Lane Max
2 2 Two Lanes Max
4 4 Four Lanes Max
8 8 Eight Lanes Max
Maximum Link Width. These are programmable through
reg space.Bit 9 is always 0 and is not programmable.
Default value is based on numLanes field in version.v.
Maximum Link Speed 3:0 RO 1 This value returns the Maximum Link Speed. 1 =
FW-RW 2.5Gbps. All other values reserved.
Value Name Description
1 2_5 2.5 Gbps Max
2 5 5 Gbps Max
Value used by internal logic is the smaller of the value
programmed for each function.
Default
Name Bits Access Value Description
Reserved 31- RO 0 Unused
30
DL_ACTIVE 29 RO 0 Data Link Layer Link Active: returns a 1b to indicate the
DL_Active state, 0b otherwise. Not implemented and
hardwire to 0.
Slot Clock Configuration 28 RO 1 This value indicates that this device uses the same
physical reference clock that the platform provides on
the connector. Slot Clock configuration. This bit is read-
only by host, but read/write via backdoor CS bus.
LINK_TRAINING 27 RO 0 EP: This bit is N/A and is hardwired to 0.
Reserved 26 RO 0 Unused
Negotiated Link Width 25- RO 0 This value returns the negotiated link width. The only
20 valid values are 1, 2, 4, 8, 12, 16, 32
Negotiated Link Speed 19- RO 0 This value returns the negotiated link speed. 1 = 2.5Gbps
16 Link Speed. These bits indicate the negotiated link speed
of the PCI Express link.
Reserved 15:1 RO 0 Unused
2
LINK_BW_INT_EN 11 RO 0 Link Autonomous Bandwidth Interrupt Enable: When
Set, this bit enables the generation of an interrupt to
indicate that the Link Autonomous Bandwidth Status bit
has been Set. RC: Not implemented and hardwired to 0.
EP: N/A and hardwired to 0.
LINK_BW_MGMT_INT_E 10 RO 0 Link Bandwidth Management Interrupt Enable: when
N Set, this bit enables the generation of an interrupt to
indicate that the Link Bandwidth Management Status bit
has been Set. RC: N/A and hardwired to 0. EP: Not
implemented and hardwired to 0.
HW_AUTO_WIDTH_DIS 9 RO 0 Hardware Autonomous Width Disable: When Set, this bit
disables hardware from changing the Link width for
reasons other than attempting to correct unreliable Link
operation by reducing Link width. Other functions are
reserved. RC: Not applicable and hardwire to 0 EP: If
supported, only apply to function0. Not implemented
and hardwire to 0.
Clock Request Enable 8 RW 0 1: clkreq is enabled
0: clkreq is disabled
Enable Clock Power Management: RC: N/A and
hardwired to 0. EP: When this bit is set, the device is
permitted to use CLKREQ# signal to power management.
Feature is enabled through version.v define.
Default
Name Bits Access Value Description
Extended Synch 7 RW 0 When this bit is set, it forces extended sync which gives
external devices (such as logic analyzers) additional time
to achieve bit and symbol lock. Extended Synch. This bit
when set forces the transmission of 4096 FTS ordered
sets in the L0s state followed by a single SKP ordered set
prior to entering the L0 state, and the transmission of
1024 TS1 ordered sets in the L1 state prior to entering
the Recovery state. Value used by logic is resolved to 1 if
either function has this bit set.
Common Clock 6 RW 0 When this bit is set, it indicates that the link partners are
Configuration using a common reference clock. Common Clock
Configuration. Value used by logic is resolved to 1 only if
both functions (when enabled) have this bit set.
Reserved (Retrain Link) 5 RO 0 The device does not support this feature. Requesting
PHY to retrain the link. This bit is only applicable to RC.
So for EP it is read only bit.
Reserved (Link Disable) 4 RO 0 The device does not support this feature. Requesting
PHY to disable the link. This bit is only applicable to RC.
So for EP it is read only bit.
Read Completion 3 RW 0 This value indicates the Read Completion Boundary
Boundary value (in bytes) of the upstream root port
0 = 64
1 = 128
Read Completion Boundary.
Reserved 2 RO 0 Unused
Active State Power 1:0 RW 0 This value control the Active State power management
Management Control supported on this link
0 = Disabled
1 = L0s entry enabled
2 = L1 entry enabled
3 = L0s and L1 entry enabled
ASPM Control. Value used by logic is dependent on the
value of this bit for each enabled function and also on
the programmed powerstate of each function.
Default
Name Bits Access Value Description
PHYSICAL_SLOT_NUMBER 31-19 RO 0 Not Implemented
RESERVED 18-17 RO 0 Unused
SLOT_POWER_LIMIT_SCALE 16-15 RO 0 Not Implemented
SLOT_POWER_LIMIT_VALUE 14-7 RO 0 Not Implemented
RESERVED 6-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS 31-23 RO 0 Not Implemented
PRESENCE_DETECT 22 RO 0 Not Implemented
RESERVED 21-16 RO 0 Not Implemented
SLOT_CONTROL 15-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
RESERVED 31-12 RO 0 Unused
LTR_MECHANISM_ 11 RO 0 Latency Tolerance Reporting Mechanism Supported,
SUPPORTED Programmable through register space. This field will
read 1, when bit 5 of ext_cap_ena field in private
register space is set.
RESERVED 10-5 RO 0 Unused
CMPL_TIMEOUT_DISABL_ 4 RO 1 Completion Timeout Disable Supported,
SUPPORTED Programmable through register space
CMPL_TIMEOUT_RANGES_ 3-0 RO F Completion Timeout Ranges Supported.
SUPPORTED Programmable through register space.
Value Name Description
15 ABCD Ranges A,B,C, and D
Default
Name Bits Access Value Description
DEVICE_STATUS_2 31-16 RO 0 Placeholder for Gen2
RESERVED 15-11 RO 0 Unused
LTR_MECHANISM_ENABLE 10 RW 0 Latency Tolerance Reporting Mechanism Enable, This
field is writeable, when bit 5 of ext_cap_ena field in
private register space is set. This bit is RW only in
Function 3 and is RsvdP for all other functions.
IDO_CPL_ENABLE 9 RW 0 IDO Completion Enable, This field is writeable, when
bit ido_supported bit of private device_capability_2
register is set. When this bit is set, function is
permitted to set ID based Ordering Attribute of
Completions it returns.
IDO_REQ_ENABLE 8 RW 0 IDO Request Enable, This field is writeable, when bit
ido_supported bit of private device_capability_2
register is set. When this bit is set, function is
permitted to set ID based Ordering Attribute of
Requests it initiates.
RESERVED 7-5 RO 0 Unused
CMPL_TIMEOUT_DISABLE 4 RW 0 Completion Timeout Disable
CMPL_TIMEOUT_VALUE 3-0 RW 0 Completion timeout value. The spec specifies a range,
the device uses the max value in the range.
Value Name Description
0 50MS 50 ms
1 100US 100 us
2 10MS 10 ms
3 55MS 55 ms
4 210MS 210 ms
5 900MS 900 ms
6 3_5S 3.5s
7 13S 13s
8 64S 64s
Default
Name Bits Access Value Description
LINK_CAPABILITY_2 31-0 RO 0 Placeholder for Gen2
Default
Name Bits Access Value Description
LINK_STATUS_2 31-17 RO 0 Placeholder for Gen2
CURR_DEEMPH_LEVEL 16 RO 0 curr_deemph_level
RESERVED 15-13 RO 0 Unused
CFG_COMPLIANCE_DEEMP 12 RW 0 Compliance Deemphasis.
H
CFG_COMPLIANCE_SOS 11 RW 0 Compliance SOS.
CFG_ENTER_MOD_ 10 RW 0 Enter Modified Compliance.
COMPLIANCE
CFG_TX_MARGIN 9-7 RW 0 Controls the value of non deemphasized voltage
level at the TX pins. i_cfg_exp_cap Value used by
logic is resolved to the smaller binary value, if two
functions have different values.
0 000 800 – 1200 mV for full swing and
400 – 600 mV for half swing
1 001 Values are monotonic with non-zero
slope
2 010 Values are monotonic with non-zero
slope
3 011 200 – 400 mV for full swing and 100 –
200 mV for half swing
4 100 Reserved
5 101 Reserved
6 110 Reserved
7 111 Reserved
SEL_DEEMPHASIS 6 RW 0 When link is operating at Gen2 rates, this bit selects
the level of deemphasis. Value used by logic is
resolved to 1 if either function has this bit set.
0 0 – 6 dB
1 1 – 3.5 dB
HW_AUTO_SPEED_DISABLE 5 RO 0 Not Supported and hardwired to 0.
ENTER_COMPLIANCE 4 RW 0 S/W instructs link to enter compliance mode. Value
used by internal logic is set when either function has
this bit enabled.
TARGET_LINK_SPEED 3-0 RW 0 Upper limit of link speed :
0 2_5 2.5 Gbps
1 5_0 5.0 Gbps
Default
Name Bits Access Value Description
SLOT_CAPABILITY_2 31-0 RO 0 Not Implemented
Default
Name Bits Access Value Description
SLOT_STATUS_2 31- RO 0 Not Implemented
16
SLOT_CONTROL_2 15-0 RO 0 Not Implemented
Offset Bits/Description
0x00 Bits 31:24 – Status Tag
Bits 7:0 – In_ISR
0x04 Note used
EthernetMAC Registers
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
Loopback mode 4 RW 0 When set, an internal loopback path is enabled from the
transmit MAC to the receive MAC. This bit is provided for
diagnostic purposes only
Port Mode 3:2 RW 01 These bits determine what interface the port is running
11: TBI
10: GMII
01: MII
00: None (default)
Half-duplex 1 RW 0 When set, the MII/GMII interface is configured to
operate in half-duplex mode and the CSMA/CD state
machines in the MAC are set to half-duplex mode
Global Reset 0 RW 0 When this bit is set to 1, the MAC state machine is reset.
This is a self-clearing bit
Default
Name Bits Access Value Description
Shared Traffic/Link LED 14 RW 1 When this bit is set, the Link LED is solid green when
mode there is a link and blinks when there is traffic.
(The LED_MODE field must be set to 00 before enabling
this bit)
MAC Mode 13 RW 0 When this bit is set, the traffic LED blinks only when
traffic is addressed for the device (The LED_MODE field
must be set to 00 before enabling this bit)
LED Mod 12:11 RW 01 00: MAC Mode – LED signal is in active low (on) when
link is established and is in tristate (off) when link is not
established
01: PHY Mode 1 – LED signal is in active low (on) when
link is established and is in tristate (off) when link is not
established
LINKLEDB = Link 10 (open drain)
SPD100LEDB = Link 100 (open drain)
SPD1000LEDB = Link10000 (open drain)
TRAFFICLEDB = PHY RCVLED or PHY XMTLED
10: PHY Mode 2 – LED signal is in active low (on) when
link is established and is in high (off) when link is not
established
LINKLEDB = Link 10
SPD100LEDB = Link 100 and valid data or idle
SPD1000LEDB = Link10000 and valid data or idle
TRAFFICLEDB = PHY RCVLED or PHY XMTLED
11: Same as PHY Mode 1
Traffic LED Status 10 RO n/a –
10Mbps LED Status 9 RO n/a –
100Mbps LED Status 8 RO n/a –
1000Mbps LED Status 7 RO n/a –
Traffic LED 6 RW 0 If set along with the Override Traffic bit, the Traffic LED
is turned on. If the Blink Traffic LED bit is also set, the LED
will blink with blink rate specified in Override Blink Rate
(bit 31) and Blink Period (bits 30-19) fields
Blink Traffic LED 5 RW 0 If set along with the Override Traffic bit and Traffic LED
bit, the Traffic LED will blink with the blink rate specified
in Override Blink Rate (bit 31) and Blink Period (bits 30-
19) fields
Override Traffic LED 4 RW 0 If set, overrides hardware control of the Traffic LED.
The Traffic LED will then be controlled via bit 6 and bit 5
10 Mbps LED 3 RW 0 If set along with the LED Override bit, turns on the 10
Mbps LED
100 Mbps LED 2 RW 0 If set along with the LED Override bit, turns on the 100
Mbps LED
1000 Mbps LED 1 RW 0 If set along with the LED Override bit, turns on the 1000
Mbps LED
Default
Name Bits Access Value Description
Override Link LEDs 0 RW 0 If set, overrides hardware control of the three link LEDs.
The LEDs will be controlled via bits 3-1
Default
Name Bits Access Value Description
Port polling 4 RW 0 Set to enable autopolling of the transceiver link
information from the MII management interface
If cleared, the device will obtain the link status
information from the state of the LINKRDY input signal
Reserved 3 RO 0 –
Auto_control 2 RW 0 –
Use Short Preamble 1 RW 0 Use short preamble while polling, if set
Fast_Clock 0 RW 0 –
Default
Name Bits Access Value Description
Disable 802.3 length 29 R/W 0 If clear, 802.3 length check takes VLAN length into
check fix for VLAN Tag account properly.
frames
Reserved 28 RO 0 –
Reserved 27 RO 0 –
Reserved 26 RO 0 –
IPv4 Fragment Fix 25 RW 1 –
IPV6 Enable 24 RW 0 1: Enable IPv6 RX
0: Disable IPv6 RX which includes IPv6 packet parsing,
checksum offload and IPv6 RSS
RSS_enable 23 RW 0 1: Enable RSS function.
0: Disable RSS function. FHDE will ignore the RSS_valid
from Frame Cracker and set RSS_valid to be 0 in frame
descriptor of each packet.
RSS Hash Mask Bits 22:20 RW 0x7 These bits specify the number of hash bits that are used
to offset into the indirection table. A value of one
specifies that only bit 0 of the hash is used to offset into
the indirection table (so only the first two entries of the
table are utilized.) A value of seven specifies that bits 6:0
of the hash are used to offset into the indirection table.
A value of zero will result in undefined behavior and
should not be programmed.
RSS TCP/IPV6 Hash 19 RW 0 When this bit is set, 4-tuple hashes are enabled for TCP
Enable over IPV6 packets. This bit should be set to 0 if IPv6 RX is
disabled.
RSS IPV6 Hash Enable 18 RW 0 When this bit is set, 2-tuple hashes are enabled for IPV6
packets. This bit should be set to 0 if IPv6 RX is disabled.
RSS TCP/IPV4 Hash 17 RW 0 When this bit is set, 4-tuple hashes are enabled for TCP
Enable over IPV4 packets.
RSS IPV4 Hash Enable 16 RW 0 When this bit is set, 2-tuple hashes are enabled for IPV4
packets.
Reserved 15:12 RO 0 –
Filter Broadcast 11 RW 0 When set, reception of broadcast frames is disabled
Keep VLAN Tag Diag 10 RW 0 If set, forces Receive MAC to keep the VLAN tag in the
Mode frame.
This is for debugging purpose only and should be reset
during normal operation
No CRC Check 9 RW 0 When set, mo CRC check by receive MAC on incoming
frames.
Also, allows the reception of packets received with
RXERR on MII/GMII
Promiscuous Mode 8 RW 0 When set, no source address or MC hashing checking
will be performed on incoming frames
All frames will be accepted
Default
Name Bits Access Value Description
Length Check 7 RW 0 If set, 802.2 length checking is done on LLC frames
Accept Runts 6 RW 0 If set, MAC accepts packets less than 64 bytes
Reserved 5 RO 0 –
Keep Pause 4 RW 0 If set, MAC forwards pause frame to host buffer
Reserved 3 RO 0 –
Enable Flow Control 2 RW 0 Enable automatic processing of 802.3x flow control
frames
This bit is orthogonal to the Keep Pause bit
Enable 1 RW 0 This bit controls whether the Receive MAC state
machine is active or not.
When set to 0, it completes the current operation and
cleanly halts. Until it is completely halted, it remains 1
when read.
Reset 0 RW 0 When this bit is set to 1, the Receive MAC state machine
will be reset.
This is a self-clearing bit
Default
Name Bits Access Value Description
Enable 31 RW 0 Corresponding Rule is enabled when set
And With Next 30 RW 0 This rule and next must both be true to match. The class
fields must be the same.
A disabled next rule is considered true. Processor
activation bits are specified in the first rule in series
Activate Processor 1 29 RW 0 If the rule matches, the processor is activated in the
queue descriptor for the Receive Queue Placement state
machine
Reserved 28 RO 0 Reserved
Reserved 27 RO 0 Reserved
Default
Name Bits Access Value Description
Mask 26 RW 0 IF set, specifies that the value/mask field is split into a
16-bit mask instead of a 32bit value
Discard 25 RW 0 Discard frame if it matches the rule
Map 24 RW 0 Use the masked value and map it to the class
Reserved for future use 23:18 RW 0 –
Comparison Operator 17:16 RW 0 Specifies how to determine the match:
00: Equal
01: Not Equal
10: Greater Than
11: Less Than
Header Type 15:13 RW 0 Specifies which header the offset is for:
000: Start of Frame (always valid)
001: Start of IP Header (if present)
010: Start of TCP Header (if present)
011: Start of UDP Header (if present)
100: Start of Data (always valid, context sensitive)
Class 12:8 RW 0 The class this frame is place into if the rule matches. 0-
16 where 0 means discard.
The number of valid classes is the number of active
queues divided by the Number of Interrupt Distribution
Groups.
Ring 1 has the highest priority
Offset 7:0 RW 0 Number of bytes offset specified by the header type
Default
Name Bits Access Value Description
Mask/Value 31:16 RW 0 For each bit cleared, the corresponding bit in the value
field is ignored during the rule match process
If bit 26 of the corresponding rule control register is 0,
the field is used as the upper 16-bit value for rule
comparison
Value 15:0 RW 0 This field specifies a 16-bit value for rule comparison
Default
Name Bits Access Value Description
Enable Link LED pin 5 RW 0x0 Set to 1 to override Link LED pin
override
Link LED pin input 4 RO 0x0 Link LED pin input
Traffic LED pin output 3 RW 0x0 Override value of Traffic LED pin output
override
Traffic LED pin oe 2 RW 0x0 Override value of Traffic LED pin output enable
override
Enable Traffic LED pin 1 RW 0x0 Set to 1 to override Traffic LED pin
override
Traffic LED pin input 0 RO 0x0 Traffic LED pin input
RSS Registers
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
table_entry12 13:12 RW 0 The RSS_ring value for entry 12.
Reserved 11:10 RO 0 Not Used
table_entry13 9:8 RW 0 The RSS_ring value for entry 13.
Reserved 7:6 RO 0 Not Used
table_entry14 5:4 RW 0 The RSS_ring value for entry 14.
Reserved 3:2 RO 0 Not Used
table_entry15 1:0 RW 0 The RSS_ring value for entry 15.
Default
Name Bits Access Value Description
Reserved 3:2 RO 0 Not Used
table_entry39 1:0 RW 0 The RSS_ring value for entry 39.
Default
Name Bits Access Value Description
table_entry52 13:12 RW 0 The RSS_ring value for entry 52.
Reserved 11:10 RO 0 Not Used
table_entry53 9:8 RW 0 The RSS_ring value for entry 53.
Reserved 7:6 RO 0 Not Used
table_entry54 5:4 RW 0 The RSS_ring value for entry 54.
Reserved 3:2 RO 0 Not Used
table_entry55 1:0 RW 0 The RSS_ring value for entry 55.
Default
Name Bits Access Value Description
Reserved 23:22 RO 0 Not Used
table_entry66 21:20 RW 0 The RSS_ring value for entry 66.
Reserved 19:18 RO 0 Not Used
table_entry67 17:16 RW 0 The RSS_ring value for entry 67.
Reserved 15:14 RO 0 Not Used
table_entry68 13:12 RW 0 The RSS_ring value for entry 68.
Reserved 11:10 RO 0 Not Used
table_entry69 9:8 RW 0 The RSS_ring value for entry 69.
Reserved 7:6 RO 0 Not Used
table_entry70 5:4 RW 0 The RSS_ring value for entry 70.
Reserved 3:2 RO 0 Not Used
table_entry71 1:0 RW 0 The RSS_ring value for entry 71.
Default
Name Bits Access Value Description
Reserved 3:2 RO 0 Not Used
table_entry95 1:0 RW 0 The RSS_ring value for entry 95.
Default
Name Bits Access Value Description
table_entry108 13:12 RW 0 The RSS_ring value for entry 108.
Reserved 11:10 RO 0 Not Used
table_entry109 9:8 RW 0 The RSS_ring value for entry 109.
Reserved 7:6 RO 0 Not Used
table_entry110 5:4 RW 0 The RSS_ring value for entry 110.
Reserved 3:2 RO 0 Not Used
table_entry111 1:0 RW 0 The RSS_ring value for entry 111.
Default
Name Bits Access Value Description
Reserved 23:22 RO 0 Not Used
table_entry122 21:20 RW 0 The RSS_ring value for entry 122.
Reserved 19:18 RO 0 Not Used
table_entry123 17:16 RW 0 The RSS_ring value for entry 123.
Reserved 15:14 RO 0 Not Used
table_entry124 13:12 RW 0 The RSS_ring value for entry 124.
Reserved 11:10 RO 0 Not Used
table_entry125 9:8 RW 0 The RSS_ring value for entry 125.
Reserved 7:6 RO 0 Not Used
table_entry126 5:4 RW 0 The RSS_ring value for entry 126.
Reserved 3:2 RO 0 Not Used
table_entry127 1:0 RW 0 The RSS_ring value for entry 127.
Default
Name Bits Access Value Description
Hash_key[311:304] 15:8 RW 0 The 39th byte of the hash_key. The bits are in the big
endian format
Hash_key[319:312] 7:0 RW 0 The 40th byte of the hash_key. The bits are in the big
endian format
Statistics Registers
Default
Name Bits Access Value Description
Statistics Clear 2 RW 0 If set, resets local statistics counters to zero
Clears only masked statistics
Self-clearing when don
Faster Update 1 RW 0 –
Statistics Enable 0 RW 0 When set, allows the local statistics counters to
increment. When reset, counters hold their values until
next update to NIC memory
Enables only masked statistics
Default
Name Bits Access Value Description
Counter Value 9:0 RO 0 The current counter value for statistics kept by the Send
Data Initiator
Default
Name Bits Access Value Description
Don’t Generate CRC 1 RW – Do not generate CRC
Pass through Send Buffer Descriptor flag
No Byte Swap 0 RW – Set to disable endian byte swap on data from PCIe bus
Default
Name Bits Access Value Description
Flush Statistic 3 RW 0 –
Statistics Clear 2 RW 0 If set, resets local statistics counters to zero
Clears only masked statistics
Self-clearing when don
Faster Update 1 RW 0 –
Statistics Enable 0 RW 0 When set, allows the local statistics counters to
increment. When reset, counters hold their values until
next update to NIC memory
Enables only masked statistics
This threshold is introduced to limit the b/w in fetching SBD on Ring#1. This does not influence Ring#2.
Default
Name Bits Access Value Description
Reserved 31:6 RO 0x00 Unused
Send Ring#1 BD Fetch 5:0 RW 0x1F The value programmed in this field sets a cap to
Threshold the number of SBDs that would be fetched by a
single DMA transaction (although there are other
factors which might further limit the DMA size).
This parameter applies only to Send Ring#1
Default
Name Bits Access Value Description
Reserved 31:16 RO 0 –
List Non-Empty Bits 15:0 RO – If set, the bit indicates that the associated list is not
empty (that is the counter is non-zero).
Default
Name Bits Access Value Description
Statistics Enable 0 RW 0 When set, allow the local statistics counters to
increment.
When reset, counters hold their values until the next
update to the NIC memory.
Enables only masked statistics
Default
Name Bits Access Value Description
A1 Silent indication 1 RO 0x0 1: Not silent
0: Silent
Chip is A1 if ASIC rev id is A1 and this bit is 1
Chip is A1_silent if ASIC rev id is A1 and this bit is 0
Chip is A2 if ASIC rev id is A2 and this bit does not care
Enable COS stats 0 RW 0x1 1: Enabled
0: Disabled
Default
Name Bits Access Value Description
Host Address High 31:0 RW 0 The host ring address is the host address of the first ring
element.
The host ring address is in host address format
Default
Name Bits Access Value Description
Host Address Low 31:0 RW 0 The host ring address is the host address of the first ring
element.
The host ring address is in host address format
Default
Name Bits Access Value Description
Ring Size 31:16 RW 0 Control number of elements in the Receive Producer
Ring. Valid values are:
512
256
128
64
32
Maximum Ethernet 15:2 RW 0 Unused for jumbo rings. Otherwise, specifies the
Frame Length maximum size of an Ethernet frame plus VLAN tag.
Disable Ring 1 RW 0 Set to disable the use of the ring
Reserved 0 RO 0 Reserved
Default
Name Bits Access Value Description
NIC Address 31:0 RW 0 The NIC ring address is the NIC address of the first ring
element. Unlike most NetXtreme® controllers that use
the hardware default value in this field, for the
BCM57785 Family, the driver must program 0x6000 here
(and 0x7000 for the equivalent jumbo ring setting in
register 0x244C).
Receive Diagnostic Data and Receive BD Ring Initiator Local NIC Mini
Receive BD Consumer Index (offset: 0x2478)
These registers are not applicable.
CPMU Registers
The following describes the registers which are required by BCM57785 CPMU specifications for configuration.
Default
Name Bits Access Value Description
Reserved 31 R/W 0x0 Reserved
Always force GPHY DLL 28 R/W 0x0 Always force the GPHY DLL on whenever this bit is
on set and the chip is not in low power mode
1: Enable
0: Disable
Enable GPHY 27 R/W 0x0 Enable CPMU to powerdown GPHY when the
powerdown in D0u device enters D0u
1: Enable
0: Disable
Reserved 26:19 R/W 0x0 Reserved
Media Sense Power 20 R/W 0x0 Media Sense Power Mode Enable
Mode Enable 1: Enable
0: Disable
Reserved 19 R/W 0x0 –
Legacy Timer Enable 18 R/W 0x0 This bit controls cpmu_legacy_timer_enable
output.
Default
Name Bits Access Value Description
Frequency Multiplier 17 R/W 0x1 Frequency Multiplier Enable
Enable 1: Enable
0: Disable
GPHY 10MB Receive 16 R/W 0x1 Enables GPHY 10MB Receive Only Mode when this
Only Mode Enable bit is set to 1
Play Dead Mode Enable 15 R/W 0x1 Play Dead Power Mode Enable
1: Enable
0: Disable
Link Speed Power Mode 14 R/W 0x0 Enable clock adjustment based on the link speed
Enable in mission mode
Hide PCIe Function 13:11 R/W 0x0 SW controlled bits to hide PCIe functions. These
bits are cleared by a rising edge of PERST_L
000: PCIe Functions 3,2,1 are on
001: Hide PCIe Function 1
010: Hide PCIe Function 2
100: Hide PCIe Function 3
111: Hide PCIe functions 1,2,3
110: Hide PCIe Functions 3 and 2
011: Hide PCIe Functions 1 and 2
Link Aware Power Mode 10 R/W 0x0 Link Aware Power Mode Enable
Enable 1 : Enable
0 : Disable
Link Idle Power Mode 9 R/W 0x0 Link Idle Power Mode Enable
Enable 1 : Enable
0 : Disable
Card Reader Idle Enable 8 R/W 0x1 Card Read Idle Power Mode Enable
1: Enable
0: Disable
Card Read IDDQ 7 R/W 0x0 SW controlled card reader IDDQ. This bit is cleared
by a rising edge of PERST_L.
LAN IDDQ 6 R/W 0x0 SW controlled LAN IDDQ. This bit is cleared by a
rising edge of PERST_L.
Default
Name Bits Access Value Description
CPMU Software Reset 0 R/W SC 0x0 Software reset for all the CPMU logic expect for
registers
Link Speed 10MB/No Link Power Mode Clock Policy Register (offset:
0x3604)
This register is reset by POR Reset or CPMU Register Software Reset. Please note that clocks generated by
digital frequency multiplier could be up to 3% slower than intended clock speed.
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x17 Software Controlled MAC Core Clock Speed Select:
00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Link Speed 100MB Power Mode Clock Policy Register (offset: 0x3608)
This register is reset by POR Reset or CPMU Register Software Reset. Please note that clocks generated by
digital frequency multiplier could be up to 3% slower than intended clock speed.
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x11 Software Controlled MAC Core Clock Speed Select:
00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x0 Software Controlled MAC Core Clock Speed Select:
00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x17 Software Controlled MAC Core Clock Speed Select:
00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x13 Software Controlled MAC Core Clock Speed Select:
00001: Core = 60.0 MHz (Alt Source/2)
00011: Core = 30.0 MHz (Alt Source/4)
00101: Core = 15.0 MHz (Alt Source/8)
00111: Core = 7.5 MHz (Alt Source/16)
01001: Core = 3.75 MHz (Alt Source/32)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11001: Core = 781 kHz (CK25/32)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x15 Software Controlled MAC Core Clock Speed Select::
00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/W 0x0 Software Controlled MAC Core Clock Speed Select:
00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8)
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:14 R/O 0x0 –
MAC Clock Speed 13 R/W 0x0 Enable MAC clock speed override*
Override Enable 1: Enable
0: Disable
Reserved 12:0 R/W 0x0 –
Default
Name Bits Access Value Description
Reserved 31:23 R/O 0x0 –
Default
Name Bits Access Value Description
Power Management 3:0 R/O – Indicates the current state of hardware power management
State Machine State state machine
0x0: MISSION_AC
0x1: LOWPWR_MODE
0x2 : LOWPWR_MODE_AC
0x3 : LINK_AWARE_MODE
0x4 : LINK_AWARE_MODE_AC
0x5 : LINK_IDLE_MODE
0x6 : LINK_IDLE_MODE_AC
0x7 : PM_MISSION
0x8 : PLAYDEAD MODE
0x9 : PLAYDEAD MODE AC
Default
Name Bits Access Value Description
Reserved 31:21 R/O 0x0 –
MAC Clock Switch 20:16 R/O – MAC Core Clock Speed Select Status:
Status 00000: Core = 62.5 MHz (GPHY DLL/2)
10001: Core = 12.5 MHz (CK25/2)
10011: Core = 6.25 MHz (CK25/4)
10101: Core = 3.125 MHz (CK25/8
10111: Core = 1.563 MHz (CK25/16)
11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Reserved 15:0 R/O 0x0 –
Default
Name Bits Access Value Description
pcie_dl_active 31 R/O – –
PCIE debug vector sel 2 30:27 R/W – –
PCIE debug vector 2 26:16 R/O – –
pcie_phylinkup 15 R/O – –
PCIE debug vector sel 1 14:11 R/W – –
PCIE debug vector 1 10:0 R/O – –
Default
Name Bits Access Value Description
Reserved 31:14 RO 0x0 –
GPHY 10MB Receive 13:12 RO 0x1 10MB Receive Only Mode TX Idle Debounce Timer.
Only Mode TX Idle 0x0 = 0 us
Debounce Timer
0x1 = 6 us
0x2 = 12 us
0x3 = 18 us
Reserved 11 RO 0x0 –
Default
Name Bits Access Value Description
BIAS IDDQ 1 R/W 0x0 Legacy Address: 0x6804:[22]
When this bit is set, BIAS will be powered down
GPHY IDDQ 0 R/W 0x0 Legacy Address: 0x6804:[21]
When this bit is set, GPHY will be powered down
Default
Name Bits Access Value Description
Core RAM Power down 31 R/W 0x0 Legacy Address: 0x6804:[24]
Core RAM power-down
Power down all rams except misc_bd and Txmbuf
BD RAM Power down 30 R/W 0x0 Legacy Address: 0x6804:[24]
Misc_bd/Txmbuf RAM power-down
Reserved 29:0 R/O 0x0 –
Default
Name Bits Access Value Description
Reserved 31:8 R/O 0x0 –
Card Reader Idle 15:0 R/W 0xA Debounce timer setting for card reader from active to
Detection Debounce nonactive.
Timer Unit is in number of us.
Default Value: 10 us.
Default
Name Bits Access Value Description
EEE Debug Information 31:0 R/O – –
Default
Name Bits Access Value Description
Reserved 31:8 R/O 0x0 –
Link Idle Detection 7:0 R/W 0x20 Debounce timer setting for core link from active to nonactive.
Debounce Timer Unit is in number of CPMU clock cycles.
Range: up to 232 CPMU clock cycles.
Default Value (32 CPMU CLK) multiplied by given Core CLK
scale parameter below:
x1 00000: Core = 62.5 MHz (GPHY DLL/2)
x8 10001: Core = 12.5 MHz (CK25/2)
x16 10011: Core = 6.25 MHz (CK25/4)
x32 10101: Core = 3.125 MHz (CK25/8)
x64 10111: Core = 1.563 MHz (CK25/16)
x64 11111: Core = 12.5 MHz/1.25 MHz (MII_CLK/2)
Default
Name Bits Access Value Description
Reserved 31:8 R/O 0x0 –
PCIE Idle Detection 7:0 R/W 0x19 Debounce timer setting for PCIe link from active to nonactive.
Debounce Timer Unit is in number of CPMU clock cycles.
Range: up to 28 CPMU clock cycles.
Default: 25 CPMU clocks.
Default
Name Bits Access Value Description
Reserved 31:10 R/O 0x0 –
Default
Name Bits Access Value Description
Select HW_Energy_Det 8 R/W 0x1 This bit selects the source of the System Energy_Det
output.
This bit is allows the boot code to reset the GPHY during
an unexpected shutdown, so that it enters 100BT instead
of remaining in the Gig mode to avoid unnecessary power
consumption.
1: Select output of debounce logic
0: Select combination of software Force_Energy_Det and
output of debounce logic to generate system Energy_Det
Select 7 R/W 0x0 This bit is allows the boot code to reset the GPHY during
SW_HW_Oring_Energy_De an unexpected shutdown, so that it enters 100 BT instead
t of remaining in the Gig mode to avoid unnecessary power
consumption.
1: Generate system Energy_Det by Oring the
SW_Force_Energy_Det with the output of the debounce
logic
0: Generate system Energy_Det based on the
SW_Force_Energy_Det Output
SW_Force_Energy_Det_Val 6 R/W 0x1 This bit allows the software to control the state of the
ue System Energy_Det signal if the Select_HW_Energy_Det
control bit (b12) is 0.
1: Drive System Energy_Det high
0: Drive System Energy_Det low
Disable Energy_Det 5 R/W 0x1 This bit is used to disable the Energy_Det_Debounce_Low
Debounce Low logic from debouncing the GPHY Energy_Det_APD signal
going low. When disabled, the Energy_Det signal will go
low if the GPHY Energy_Det input signal is low for at least
640 ns.
0: Enable debounce low
1: Disable debounce low
Disable Energy_Det 4 R/W 0x1 This bit is used to disable the Energy_Det_Debounce_High
Debounce High Logic from debouncing the GPHY Energy_Det_APD signal
going high. When disabled, the Energy_Det signal will go
high if the GPHY Energy_Det input signal is high for at least
640 ns.
0: Enable debounce high
1: Disable debounce high
Energy_Det Debounce High 3:2 R/W 0x0 This parameter is used to control the debounce limit of
Limit the GPHY Energy_Det_APD signal going high.
00: 128 million CPMU clocks (5 seconds if CPMU clock
frequency is 25 Mhz)
01: 256 million CPMU clocks (10 seconds if CPMU clock
frequency is 25 Mhz)
10: 512 million CPMU clocks (20 seconds if CPMU clock
frequency is 25 Mhz)
11: 1024 million CPMU clocks (40 seconds if CPMU clock
frequency is 25 Mhz)
Default
Name Bits Access Value Description
Energy_Det Debounce Low 1:0 R/W 0x1 This parameter is used to control the debounce limit of
Limit the GPHY Energy_Det_APD signal going low.
00: 128 million CPMU clocks (5 seconds if CPMU clock
frequency is 25 Mhz)
01: 256 million CPMU clocks (10 seconds if CPMU clock
frequency is 25 Mhz)
10: 512 million CPMU clocks (20 seconds if CPMU clock
frequency is 25 Mhz)
11: 1024 million CPMU clocks (40 seconds if CPMU clock
frequency is 25 Mhz)
Default
Name Bits Access Value Description
Reserved 31:12 R/O 0x0 –
GPHY DLL Lock Timer 11 R/W 0x1 Use GPHY DLL lock timer instead of GPHY dll_lock signal:
Enable 1: Enable (use GPHY DLL lock timer)
0: Disable (use GPHY dll_lock signal from GPHY)
GPHY DLL Lock Timer 10:0 RO 0x3FF GPHY DLL Lock timer value.
Unit is in number of CPMU clock cycles.
Range: up to 81920 CPMU clock cycles.
Default: 1024 CPMU clocks (40.9 micro-seconds if CPMU clock
frequency is 25 Mhz)
Default
Name Bits Access Value Description
Chip ID 31:28 R/O 0x5 –
Default
Name Bits Access Value Description
Reserved 31:13 R/O 0x0 –
Set Request/Request 12 R/W1S 0x0 Writing a 1 to any of these bits (2,4,8,12) pends a Mutex lock
Pending 12 request on behalf of a s/w agent. The bit is subsequently
latched by h/w and shall read 1 as long as the request is
pending. Writing a 0 to a bit shall have no effect.
Reading this field may return zero or more bits with value 1 –
each bit with value 1 indicates a pending request.
Reserved 11:9 R/O 0x0 –
Default
Name Bits Access Value Description
Reserved 31:13 RO 0x0 –
Request Grant 12 12 R/W1S 0x0 Reading bits 2, 4, 8, 12 shall return a maximum of one set bit
at any time. The set bit shall point to the lock owner. If the
Mutex is not locked, then a read shall return a value 0x0000.
Writing a 1 to the already set bit shall relinquish the lock and
the set bit shall be cleared.
Writing a 1 to an unset bit shall cancel the corresponding
pending request if there was any – and the pending bit in the
Mutex_Request_Reg shall be cleared.
Writing a 0 to any bits has no effect.
Reserved 11:9 RO 0x0 –
Reserved 3 RO 0x0 –
Default
Name Bits Access Value Description
Cpmu_power_sm_or_st 31:28 R/W 0x0 This 4-bits parameter is used to force the CPMU State
ate Machine to the specified state when the
cpmu_power_sm_override bit is set
PM_MISSION_AC: 4’h0
PM_LOWPWR_MODE: 4’h1
PM_LOWPWR_MODE_AC: 4’h2
PM_LOWPWR_ED_MODE: 4’h3
PM_LOWPWR_ED_MODE_AC: 4’h4
PM_LINK_AWARE_MODE: 4’h5
PM_LINK_AWARE_MODE_AC: 4’h6
PM_AIRPLANE_MODE:4’h7
PM_AIRPLANE_MODE_AC:4’h8
PM_LINK_IDLE_MODE: 4’h9
PM_LINK_IDLE_MODE_AC: 4’hA
PM_MISSION : 4hB
Cpmu_power_sm_overri 27 R/W 0x0 This bit when set forces the CPMU State Machine to the
de state specified by the cpmu_power_sm_or_state
parameter.
Reserved 26:16 R/W 0x0 –
Card reader IO hys_en 26 R/W 0 Disable card reader IO hys.
Enable card activity led 25 R/W 0 Enable card activity LED.
0: Disable.
1: Enable.
Switching regulator 24 R/W 0 0: Use internal signal dout_cr_bus_pow to turn off
power off option switching regulator.
1:Use OTP bit [130] to control.
Disable CR_BUS_POW 23 R/W 0 0: Enable CR_BUS_POW feature.
1: Disable CR_BUS_POW feature.
PCIE Serdes PLL Tuning 19 R/W 0x0 Fast Pll tuning sequence, Keep prev pll_range value and skip
Bypass this in next pll_tuning seq
0 = disable
1 = enable
PCIE Serdes lfck_rx select 18 R/W 0x0 Select div2(high) or div4(low) div4 of refclk for lfck_rx to fast
cnt0 rx_seq, Fast L1,L0s exit time.
0 = lfck_rx is using refclk/div4
1 = lfck_rx is using refclk/div2
PCIE Serdes lfck_rx select 17 R/W 0x0 Select refclk lfck_rx to fast rx_seq, Fast L1,L0s exit time
refclk 0 = lfck_rx is based on bit 18
1 = lfck_rx is using refclk
Default
Name Bits Access Value Description
Reserved 16 R/W 0x0 –
Disable Clkreq_l in low 15 R/W 0x0 Clear this bit to force Clkreq_l to be deasserted in low power
power mode mode or during powering up
improvement Set this bit to disable this improvement
CQ31984 Option 2 Fix 14 R/W 0x0 Disable fix for CQ31984 option 2
Disable 1 = Disable
0 = Enable
Serdes Stanalone mode 13 R/W 0x0 SerDes Standalone mode
1 = Put device into SerDes into Standalone mode
0 = Normal operation
pipe_StandAloneMode 12 R/W 0x0 pipe_StandAloneMode Control
Control 1 = Assert pipe_StandAloneMode
0 = Normal operation (deassert pipe_StandAloneMode)
CQ31984 Option 4 Fix 11 R/W 0x0 Enable fix for CQ31984 option 4
Enable 1 = Enable
0 = Disable
CQ31177 Fix Disable 10 R/W 0x0 Disable fix for incorrect checksum on LSO packets
1 = Disable
0 = Enable
CQ30674 Fix Enable 9 R/W 0x0 Enable fix for GRC_clkreq_enable (0x6890 bit 27)
1 = Enable
0 = Disable
Capability version for 8 R/W 0x0 Chicken bit for CQ31116
completion timeout ECN 1 = Version 1 ; Fix Disable
for PCIE 1.1
0 = Version 2 ; Fix Enable
CQ31984 Option 3 Fix 7 R/W 0x1 Disable fix for CQ31984 option 3
Disable 1 = Disable
0 = Enable
Disable default gigabit 6 R/W 0x0 Set this bit to change GPHY gigabit advertisement register
advertisement default value to disable state. This bit is used in the 10/100
SKU.
Enable gphy reset on 5 R/W 0x1 Enable gphy reset on perst_l deassertion
PERST_L deassertion 1 = Enable
0 = Disable
CQ39842 fix disable 4 R/W 0x0 Disables the fix where our device does not sent out
adequate number of TS2 order set during recovery
0: Enable the fix
1: Disable the fix
Default
Name Bits Access Value Description
CQ39544 fix disable 3 R/W 0x0 Disables the fix whereby BIOS does not need to put the
device into D3 Hot when deposit the DEADDEAD signature
in Shared Memory or setting software low power bit
(0x3600[2] to IDDQ the device
1: Disable the fix
0: Enable the fix
Reserved 2 R/W 0x1 –
Eclk switch using link 1 R/W 0x1 Switch emac clocks to core clock based on lnk state
status Disable (CQ32677)
0: Enable
1: Disable
PERST_L pad hysteresis 0 R/W 0x1 PERST_L Pad Hysteresis Enable
Enable 1: Enable
0: Disable
Default
Name Bits Access Value Description
Reserved 31:29 R/W 0 Readable and writeable reserved bits
ISO SBD Producer Ring 28 R/W 0 Link idle/Host Access condition control
Empty 1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
ISO TX MBUF Empty 27 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
SMBus FIFO empty 26 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
SMBus SM Idle 25 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
Default
Name Bits Access Value Description
PCIE Idle 24 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
ISO SBDI Idle 23 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
ISO RDMA Idle 22 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
DBU Idle 21 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
NVM Idle 20 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
SBDI Idle 19 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
RBDI Idle 18 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
MB Idle 17 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
ISO FTQ Empty 16 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
Default
Name Bits Access Value Description
WDMA Idle 15 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
RDMA Idle 14 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
MSI Idle 13 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
TXMAC FIFO empty 12 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
RXMAC FIFO empty 11 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
COL = 0 10 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
CRS = 0 9 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
TXAMAC Idle 8 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
RXER = 0 7 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
Default
Name Bits Access Value Description
RXDV = 0 6 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
MDIO Idle 5 R/W 1 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
FTQ empty 4 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
GRC Idle 3 R/W 1 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
MBUF empty 2 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
MA Idle 1 R/W 1 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
No core reset 0 R/W 0 Link idle/Host Access condition control
1: disable this idle condition when entering link idle mode and
host access mode
0: enable this idle condition when entering link idle mode and
host access mode
Defaul
Name Bits Access t Value Description
Reserved 31:29 RO 0 Readable and writeable reserved bits
Defaul
Name Bits Access t Value Description
ISO SBD Producer Ring 28 RO Idle Status
Empty 1: Idle
0: Busy
ISO TX MBUF Empty 27 RO Idle Status
1: Idle
0: Busy
SMBus FIFO empty 26 RO 0 Idle Status
1: Idle
0: Busy
SMBus SM Idle 25 RO 0 Idle Status
1: Idle
0: Busy
PCIE Idle 24 RO Idle Status
1: Idle
0: Busy
ISO SBDI Idle 23 RO Idle Status
1: Idle
0: Busy
ISO RDMA Idle 22 RO Idle Status
1: Idle
0: Busy
DBU Idle 21 RO Idle Status
1: Idle
0: Busy
NVM Idle 20 RO Idle Status
1: Idle
0: Busy
SBDI Idle 19 RO Idle Status
1: Idle
0: Busy
RBDI Idle 18 RO Idle Status
1: Idle
0: Busy
MB Idle 17 RO Idle Status
1: Idle
0: Busy
ISO FTQ Empty 16 RO Idle Status
1: Idle
0: Busy
Defaul
Name Bits Access t Value Description
WDMA Idle 15 RO Idle Status
1: Idle
0: Busy
RDMA Idle 14 RO Idle Status
1: Idle
0: Busy
MSI Idle 13 RO Idle Status
1: Idle
0: Busy
TXMAC FIFO empty 12 RO Idle Status
1: Idle
0: Busy
RXMAC FIFO empty 11 RO Idle Status
1: Idle
0: Busy
COL = 0 10 RO Idle Status
1: Idle
0: Busy
CRS = 0 9 RO Idle Status
1: Idle
0: Busy
TXAMAC Idle 8 RO Idle Status
1: Idle
0: Busy
RXER = 0 7 RO Idle Status
1: Idle
0: Busy
RXDV = 0 6 RO Idle Status
1: Idle
0: Busy
MDIO Idle 5 RO Idle Status
1: Idle
0: Busy
FTQ empty 4 RO Idle Status
1: Idle
0: Busy
GRC Idle 3 RO Idle Status
1: Idle
0: Busy
Defaul
Name Bits Access t Value Description
MBUF empty 2 RO Idle Status
1: Idle
0: Busy
MA Idle 1 RO Idle Status
1: Idle
0: Busy
No core reset 0 RO Idle Status
1: Idle
0: Busy
Default
Name Bits Access Value Description
Reserved 31:19 RO 0x0 –
IDDQ Detection 18:0 R/W 0xA IDDQ Detection Debounce Timer for Play Dead Mode
Debounce Timer for Unit is in us.
Play Dead Mode
Default is 10 us.
Default
Name Bits Access Value Description
Reserved 31:0 RO 0x0 –
Default
Name Bits Access Value Description
Debug bus 31:0 R/O 0x0 –
Default
Name Bits Access Value Description
Reserved 31:0 RO 0 –
Default
Name Bits Access Value Description
Family Device ID 31 RO 0 This bit is derived from OTP Bit 144 and it controls the Asic
revision.
OTP bit 144 also controls the Function 0 PCIe Device ID and
subsystem ID when OTP Bits 191:176 are set to 0 or 1.
0: 0x1686 (Aspen+)when OTP Bits 191:176 are 0 or 1 for
Function 0
1: 0x16b4 (Aspen) when OTP Bits 191:176 are 0 or 1 for
Function 0
0: 0x16BC (Aspen+) when OTP Bits 207:192 are 0 or 1 for
Function 1
1: 0x16BC(Aspen) when OTP Bits 207:192 are 0 or 1 for
Function 1
0: 0x16BE(Aspen+) when OTP Bits 223:208 are 0 or 1 for
Function 2
1: 0x16BE(Aspen) when OTP Bits 223:208 are 0 or 1 for
Function 2
0: 0x16BF (Aspen+) when OTP Bits 239:224 are 0 or 1 for
Function 3
1: 0x16BF (Aspen) when OTP Bits 239:224 are 0 or 1 for
Function 3
When the OTP bits that control the PCIe Device ID in the four
PCIe functions are Non-0s or Non-1s, the PCIe DEVICE ID in
the PCIe Configuration Space uses the values that are in these
OTP Bits regardless of the value of OTP Bit 144. See the OTP
Bits mapping for the PCIe Device ID’s below.
Usage Model:
For Aspen family devices, OTP bit 144 needs to be
programmed to 1 by OPS/Bench. In addition, OPS/Bench also
needs to program OTP Bits 255:240 with 0x7785 for the
device to come up as a BCM57785 family device. The
BCM57100 falls under the BCM57785 family device ID.
Therefore, OTP Bit 144 must be programmed accordingly.
For the Aspen+ family of devices, OTP bit 144 needs to be 0.
OPS/Bench does not need to program OTP bits 255:240
because the family device ID is not selected in this
configuration when OTP Bit 144 = 0. Instead it is hardcoded to
0x57766 by default. This Family Device ID is reflected in the
Register 0xFC in the PCIe configuration space. The BCM57101
is part of the BCM57766 family device ID. Therefore, OTP Bit
144 must be programmed accordingly.
Note that, if required, bc can override the Asic Revision and
the device ID.
Default
Name Bits Access Value Description
Card-Reader Only SKU 30 RO 0 This bit is derived from OTP Bit 143. It needs to be
programmed to 1 for Card-Reader Only SKU and clear for
otherwise.
For example, BCM57100 or BCM57101 would fall into this
Card-Reader Only SKU. Therefore, OPS/Bench needs to
program OTP Bit 143 to 1 for those two SKUs and 0 otherwise.
0: CR + LAN SKU or LAN Only SKU
1: CR Only SKU
When this bit is 1, firmware/romcode uses this bit to program
the dummy LAN Device ID with 0x16A3.
SW_User_Send_LTR2 29 RW 0 This bit is used by the firmware to control the user_send_ltr2
message. When the HW_LTR2_Mode is 0, the firmware polls
the Link Status along with the Card-Reader Insertion Status to
drive this signal.
When there is no Ethernet Link and No Card is inserted, the
firmware may drive bit 29 to 1.
When a Link or Card Insertion is detected, the firmware drives
this control bit to 0. The polling of the Link Status and Card
Insertion Status must be in the Main Service Loop.
When the HW_LTR2_Mode is 1, the hardware takes full
control and the firmware does not need to poll for the status
of the Link nor Card Insertion in the Main Loop.
HW_LTR2_MODE 28 RW 0 This bit is used to enable or disable Hardware LTR2 Mode.
1: Enable HW LTR Mode.
0: Disable HW LTR Mode.
User_Send_LTR2 27 RO 0 Actual user_send_ltr2 signal sending to the PCIe IP address.
Mux_user_send_ltr2 26 RO 0 Internal Muxed User_send_LTR2 signal.
Reserved 25:24 RO 0 Reserved.
Prog_Asic_Rev 23:22 RW 2 Base Layer Asic Revision
00: A
01: B
10: C
11: D
Prog_Asic_Rev 21:20 RW 0 Metal Layer Asic Revision
New_device_id_msb 19:16 RW 0x5 These four bits control the value of the four most significant
bits of the 20-bit Family Device Family ID. The lower 16-bits of
the Device Family ID is controlled by the OTP Bits 255:240.
When the Use_New_Device_ID bit is 1, the firmware
programs these bits with a value.
OTP_Device_ID_LSB 15:0 RO 0x0 This 16-bit field is mapped from the OTP Bits 255:240. It is
used to program the sixteen LSBs of the Device ID.
Default
Name Bits Access Value Description
Reserved 23:22 RW 0x0 Reserved
SWR buck down control 30 RW 0x0 Controls the cpmu_swr_buck_down output
SWR burst mode 31 RW 0x0 This bit controls the cpmu_swr_burst_mode output
control when 0x36AC[2] is set.
Default
Name Bits Access Value Description
Reserved 15:12 RW 0x0 Reserved
Disable Legacy Power 11 RW 0x0 This bit, when set will disable the old legacy way of
Lost Detection generating reset for unexpected shutdown based on
Vmain Present Going Away while device is in D3
Disable New Power 10 RW 0x0 This bit, when set will disable the new legacy way of
Loss Detection generating reset for unexpected shutdown based on
PCIe Link not in L23 State while Perst_L is asserting
Clock ck25/9 shut down 9:8 RW 0x0 This bits indicate the amount of time to delay the ck25/9
delay timer value select clock shutdown after 0x36AC[1] is set.
2’b00: 5us
2’b01: 10us
2’b10: 15us
2’b11: 20us
Burst Mode IDDQ Delay 7:6 RW 0x0 These bits indicate the amount of time to delay the
timer value select assertion of low power IDDQ to generate
cpmu_swr_burst_mode when 0x36AC[2] is 1’b0.
2’b00: 4us
2’b01: 8us
2’b10: 12us
2’b11: 16us
IDDQ Delay Output 5 RW 0x0 This bit selects the cpmu_swr_iddq_dly output.
Select 1’b0: Original lp_iddq signal ORed with delayed version
base on the timer value in 0x36AC[4:3].
1’b1: Original lp_iddq signal
IDDQ delay timer value 4:3 RW 0x0 These bits indicate the amount of time to delay the
select deassertion of low power IDDQ output to the
SWRegulator by.
2’b00: 400us
2’b01: 800us
2’b10: 1200us
2’b11: 1600us
Disable New burst 2 RW 0x0 This bit disables the burst mode logic that’s tied to the
mode logic lp_iddq.
Reserved 1 RW 0x0 Reserved
SWR control enable 0 RW 0x0 FW sets this bit after it changes the SWR control registers
or set it at the beginning of boot code execution.
Default
Name Bits Access Value Description
Status Block Size 8:7 RW – Status Block Size for partial status block updates
00: Full status block
01: 64 byte
10: 32 byte
11: Undefined
MSI Bits 6:4 RW 1 The least significant MSI 16-bit word is overwritten by
these bits. Defaults to 0.
Coalesce Now 3 RW 0 If set, Host Coalescing updates the Status Block
immediately and sends an interrupt to host. This is a
self-clearing bit. (For debug purpose only.)
Attn Enable 2 RW – When this bit is set to 1, an internal attention is
generated when an error occurs.
Enable 1 RW – This bit control whether the Host Coalescing state
machine is active or not. When set to 0, it completes
the current operation and cleanly halts. Until it is
completely halted, it remains one when read.
Reset 0 RW – When this bit is set to 1, the Host Coalescing state
machine is reset. This is a self-clearing bit.
This register must be initialized by host software. A value of 0 in this register disables the receive tick coalescing
logic. In this case, status block updates will occur for receive event only if the Receive Max Coalesced BD value
is reached. Of course, status block updates for other reasons (e.g., transmit events) will also include any
updates to the receive indices. By setting the value in this register to a high number, a software device driver
can reduce the number of status block updates and interrupts that occur due to receiving packets. This will
generally increase performance in hosts that are under a high degree of stress and whose RISCs are saturated
due to handling a large number of interrupts from the network controller. For host environments where receive
interrupt latency needs to be very low, and the host is not close to be saturated, it is recommended that this
register be set to 1.
This register must be initialized by host software. A value of 0 in this register disables the transmit tick
coalescing logic. In this case, status block updates will occur for transmit events only if the Send Max Coalesced
BD value is reached, or if the BD_FLAG_COAL_NOW bit is set in a send BD. Status block updates for other
reasons (e.g., receive events) will also include any updates to the send indices. By setting the value in this
register to a high number, a software device driver can reduce the number of status block updates, and
interrupts, that occur due to transmit completions. This will generally increase performance in hosts that do
not require their send buffers to be freed quickly. For host environments that do require their send buffers to
be recovered quickly, it is recommended that this register be set to 0.
interrupts that occur due to receiving packets. This can increase performance in hosts that are under a high
degree of stress and whose RISCs are saturated due to handling a large number of interrupts from the network
controller. However, in lower traffic environments, there is no guarantee that consecutive packets will be
received in a timely manner. Therefore, for those environments, it is recommended that the Receive Coalescing
Ticks register are used to make sure that status block updates due to receiving packets are not delayed for an
infinite amount of time.
status block updates for other reasons (e.g., receive events) will also include any updates to the send indices.
For simplicity, if a host wanted to get a status block update for every transmitted packet, the host driver could
just set this register to a value of 1. On the other hand, by setting the value in this register to a high number, a
software device driver can reduce the number of status block updates and interrupts that occur due to
transmitting packets. This can increase
performance in hosts that are under a high degree of stress and whose RISCs are saturated due to handling a
large number of interrupts from the network controller. However, in lower traffic environments, there is no
guarantee that consecutive packets will be transmitted in a timely manner. Therefore, for those environments,
it is recommended that the Send Coalescing Ticks register are used to make sure that status block updates due
to transmitting packets are not delayed for an infinite amount of time.
Default
Name Bits Access Value Description
Send BD Initiator 31 W2C – The Send BD Initiator state machine has caused an
attention.
Send BD Completion 30 W2C – The Send BD Completion state machine has caused an
attention.
Send BD Ring Selector 29 W2C – The Send BD Ring Selector state machine has caused an
attention.
Send Data Initiator 28 W2C – The Send Data Initiator state machine has caused an
attention.
Send Data Completion 27 W2C – The Send Data Completion state machine has caused an
attention.
Reserved 26:24 RO 0 –
Recv BD Initiator 23 W2C – The Recv BD Initiator state machine has caused an
attention.
Recv BD Completion 22 W2C – The Recv BD Completion state machine has caused an
attention.
Recv List Placement 21 W2C – The Recv List Placement state machine has caused an
attention.
Recv List Selector 20 W2C – The Recv List Selector state machine has caused an
attention.
Recv Data and Recv BD 19 W2C – The Recv Data and Recv BD Initiator state machine has
Initiator caused an attention.
Recv Data Completion 18 W2C – The Recv Data Completion state machine has caused an
attention.
RCB Incorrectly 17 W2C – Set if one of the RCBs is incorrectly configured based on
Configured the whole configuration.
DMA Completion 16 W2C – The DMA Completion Discard state machine has caused
Discard an attention.
Default
Name Bits Access Value Description
Host Coalescing 15 W2C – The Host Coalescing state machine has caused an
attention.
Reserved 14:8 RO 0 –
Memory Arbiter 7 W2C – The Memory Arbiter has caused an attention.
MBUF Low Water 6 W2C – The MBUF allocation state machine has reached the
mbuf low water threshold.
Reserved 5:0 RO 0 –
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
NIC Return Ring 8:0 RW – NIC Return Ring 0 Producer Index
Producer Index
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
NIC Return Ring 8:0 RW – NIC Return Ring 1 Producer Index
Producer Index
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
Default
Name Bits Access Value Description
NIC Return Ring 8:0 RW – NIC Return Ring 2 Producer Index
Producer Index
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
NIC Return Ring 8:0 RW – NIC Return Ring 3 Producer Index
Producer Index
Default
Name Bits Access Value Description
Reserved 31:9 RO 0 –
NIC Send BD Consumer 8:0 RW – NIC Send BD Consumer Index
Index
Default
Name Bits Access Value Description
Enable 1 RW 0 This bit controls whether the Memory Arbiter is active or
not. When set to 0, it completes the current operation
and cleanly halts. Until it is completely halted, it remains
1 when read.
Reset 0 RW 0 When this bit is set to 1, the Memory Arbiter state
machine is reset. This is a self-clearing bit.
Default
Name Bits Access Value Description
Reserved 31:23 RO 0 –
MBUF Base Address 22:0 RW 10000h Specifies beginning of the MBUF for receive packet.
The base address will ignore the lower seven bits, thus
aligning the beginning of the MBUF pool on a 128-byte
boundary.
Default
Name Bits Access Value Description
Reserved 31:23 RO 0 –
MBUF Length 22:0 RW 4000h Specifies the length of MBUF assigned for receive
packet. The default is 16 KB. The lower seven bits should
be ignored to align the MBUF pool on a 128-byte
boundary.
The allocation bit is used to control the access to the response register. Use this register to set the size and
allocation bit and then poll the register until the allocation bit is cleared. When the allocation bit is cleared, it
is safe to read from the RX RISC MBUF Cluster Allocation Response register.
Default
Name Bits Access Value Description
Allocation Bit 31 RW 0 Set this bit to 1 to request for the MBUF.
When this bit is read as 0, then read the MBUF location
Response register for the TXMBUF pointer.
Reserved 30:0 RO 0 –
This register is hardwired to 61, or 0x0000003D. The TXMBUF that is dedicated for ASF is the uppermost 384
bytes. The CPU should use 0x00009E80 as the starting address for ASF.
Default
Name Bits Access Value Description
Reserved 31:26 RO 0 –
Default
Name Bits Access Value Description
Last TXMBUF 25:20 RO 0 Captures the last deallocation head pointer of the
Deallocation Head TXMBUF
Pointer
Reserved 19:16 RO 0 –
Last TXMBUF 15:10 RO 0 Captures the last deallocation tail pointer of the
Deallocation Tail TXMBUF
Pointer
Reserved 9:6 RO 0 –
Next TXMBUF 5:0 RO 0 The value of the next TXMBUF allocation pointer (should
Allocation Pointer be between 0 and 60)
Default
Name Bits Access Value Description
Reserved 31:25 RO 0 –
RXMBUF Count 24:16 RO 0 The number of RXMBUFs that were allocated
Reserved 15 RO 0 –
TXMBUF Count 14:9 RO 0 The number of TXMBUFs that were allocated
RXMBUF Left 8:0 RO 0 The number of free RXMBUFs
Default
Name Bits Access Value Description
Reserved 31:25 RO 0 –
Next RXMBUF 24:16 RO 0 The next RXMBUF that is to be deallocated
Deallocation pointer
Reserved 15:9 RO 0 –
Next RXMBUF 14:9 RO 0 The next RXMBUF that is to be allocated
Allocation pointer
Default
Name Bits Access Value Description
Reserved 31:0 RO 0 –
The allocation bit is used to control the access to the response register. Use this register to set the size and
allocation bit and then poll the register until the allocation bit is cleared. When the allocation bit is cleared, it
is safe to read from the RX RISC MBUF Cluster Allocation Response register.
Default
Name Bits Access Value Description
Allocation Bit 31 RW 0 Set this bit to 1 to request for the MBUF.
When this bit is read as 0, then read the MBUF location
Response register for the TXMBUF pointer.
Reserved 30:0 RO 0 –
This register is hardwired to 61, or 0x0000003D. The TXMBUF that is dedicated for ASF is the uppermost 384
bytes. The CPU should use 0x00009E80 as the starting address for ASF.
Default
Name Bits Access Value Description
Reserved 31:26 RO 0 –
Last TXMBUF 25:20 RO 0 Captures the last deallocation head pointer of the
Deallocation Head TXMBUF
Pointer
Reserved 19:16 RO 0 –
Last TXMBUF 15:10 RO 0 Captures the last deallocation tail pointer of the
Deallocation Tail TXMBUF
Pointer
Reserved 9:6 RO 0 –
Next TXMBUF 5:0 RO 0 The value of the next TXMBUF allocation pointer (should
Allocation Pointer be between 0 and 60)
Default
Name Bits Access Value Description
Reserved 31:15 RO 0 –
TXMBUF Count 14:9 RO 0 The number of TXMBUFs that were allocated
Reserved 8:0 RO 0 –
Default
Name Bits Access Value Description
Reserved 31:0 RO 0 –
RDMA Registers
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
Reserved 22:18 RO 0 –
PCI Request Burst 17:16 RW 3 The two bits define the burst length that the RDMA read
Length engine would request to the PCI block. Set to 256B if
slow core clock is enabled (See Clock Control Register
0x74 bit-19).
00 = 128B
01 = 256B
10 = 512B
11 = 4 KB
Reserved 15:14 RO 0 –
MBUF SBD Corruption 13 RW 0 –
Attn Enable
MBUF RBD Corruption 12 RW 0 –
Attn Enable
BD SBD Corruption Attn 11 RW 0 –
Enable
Reserved 12:11 RO 0 –
Read DMA PCI-X Split 10 RW 0 Enable read DMA PCI-X split transaction timeout expired
Transaction Timeout attention.
Expired Attention
Enable
Read DMA Local 9 RW 0 Enable Read DMA Local Memory Write Longer Than
Memory Write Longer DMA Length Attention.
Than DMA Length
Attention Enable
Read DMA PCI FIFO 8 RW 0 Enable Read DMA PCI FIFO Overread Attention (PCI
Overread Attention read longer than DMA length.)
Enable
Read DMA PCI FIFO 7 RW 0 Enable Read DMA PCI FIFO Underrun Attention
Underrun Attention
Enable
Read DMA PCI FIFO 6 RW 0 Enable Read DMA PCI FIFO Overrun Attention
Overrun Attention
Enable
Read DMA PCI Host 5 RW 0 Enable Read DMA PCI Host Address Overflow Error
Address Overflow Error Attention. A host address overflow occurs when a single
Attention Enable DMA read begins at an address below 4 GB and ends on
an address above 4 GB. This is a fatal error.
Read DMA PCI Parity 4 RW 0 Enable Read DMA PCI Parity Error Attention
Error Attention Enable
Read DMA PCI Master 3 RW 0 Enable Read DMA PCI Master Abort Attention
Abort Attention Enable
Read DMA PCI Target 2 RW 0 Enable Read DMA PCI Target Abort Attention
Abort Attention Enable
Default
Name Bits Access Value Description
Enable 1 RW 1 This bit controls whether the Read DMA state machine is
active or not. When set to 0, it completes the current
operation and cleanly halts. Until it is completely halted,
it remains one when read.
Reset 0 RW 0 When this bit is set to 1, the Read DMA state machine is
reset. This is a self-clearing bit.
Default
Name Bits Access Value Description
Fst_bd_mbuf 1 RO 0 1: First BD_MBuf Request
0: Not First_BD_Mbuf_Request
Lst_bd_mbuf 0 RO 0 1: Last BD_MBuf Request
0: Not Last_BD_Mbuf_Request
Read DMA Length and Address Index Debug Register (offset: 0x4820)
Default
Name Bits Access Value Description
Rdma_rd_length 31:16 R/W 0 Dmad Length request size
Mbuf_addr_idx 15:0 RO 0 6-bit allocation tx mbuf index; upper bits are zeroes
Read DMA PCIe Mbuf Byte Count Debug Register (offset: 0x4828)
Default
Name Bits Access Value Description
Lt_term 31:28 RO 0 Latched Termination Code
Reserved 27 RO 0 Reserved
Lt_too_lg 26 RO 0 DMA Too Large Error
Lt_dma_reload 25 RO 0 State of dmad Load signal
Lt_dma_good 24 – – State of dmad good signal
Cur_trans_active 23 – – State of cur_trans_active signal
DRPCIREQ 22 – – State of DR PCI Request signal
Dr_pci_word_swap 21 – – State of dr_pci_word_swap signal
Dr_pci_byte_swap 20 – – State of dr_pci_byte_swap signal
New_slow_core_clk_m 19 – – State of gated new_slow_core_clock mode signal which
ode is a function of the following input:
new_slow_core_clk_mode = SLOW_CORE_CLK_MODE |
slow_down_request_syn2 | rbd_non_mbuf and
cq25155_fix_enable;
Rbd_non_mbuf 18 – – State of bd_non_mbuf signal
Rfst_bd_mbuf 17 – – State of first_bd_Mbuf signal
Rlst_bd_mbuf 16 – – State of last BD_Mbuf Signal
Dr_pci_len 15:0 – – Indicates the amount of DMA read request
Read DMA PCIe DMA Read Request Address Debug Register (offset:
0x482c)
Default
Name Bits Access Value Description
Dr_pci_ad31:16 31:16 RO 0 Upper 16-bit of DMA read request address
Dr_pci_ad 15:0 RO 0 Lower 16-bit of DMA read request address
Read DMA PCIe DMA Request Length Debug Register (offset: 0x4830)
Default
Name Bits Access Value Description
Rdma_len 31:0 RO 0 DMA Read Request Length to Host
Default
Name Bits Access Value Description
Enable hardware fix 2 RW 0 When set, enables hardware fix 25155
25155 When set, this bit enables the fix for CQ25155, where a
CQ25155 fix enable DMA FIFO overrun occurs if a large number of RX BDs are
fetched while the TX MBUF is full and the Read DMA FIFO is
empty.
Late Collision Fix 1 RW 1 –
Enable
SDI ShortQ Enable 0 RW 1 When set, this bit enables hardware fix 27862
When set, this bit enables the fix for CQ27862
Default
Name Bits Access Value Description
Enable hardware fix 4 RW 1 Set to 1 to enable fix for clock request gap problem of TX
30888 Read DMA lock-up issue, CQ Cont00030888
CQ30888 Fix Enable Note: Increasing the ASPM L1 entry time to a value on
the order of 1ms is recommended and may prevent this
issue from occurring. See register 0x7d28.
Enable hardware fix 3 RW 1 Set to 1 to enable fix for clock switching problem of TX
30888 Read DMA lock-up issue, CQ Cont00030888
CQ30888 Fix Enable Note: Increasing the ASPM L1 entry time to a value on
the order of 1ms is recommended and may prevent this
issue from occurring. See register 0x7d28.
Enable hardware fix 2 RW 0 Set to 1 to enable fix for TX Read DMA lock-up issue, CQ
30808 Cont00030808
CQ30808 Fix Enable Note: Increasing the ASPM L1 entry time to a value on
the order of 1ms is recommended and may prevent this
issue from occurring. See register 0x7d28.
Reserved 1 RW 0 Reserved
Reserved 0 RW 0 Reserved
Real-TimeRDMA Registers
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
Address Overflow Error 25 RW 0 This bit when set, enables the address overflow error to
Logging Enable be generated when the DMA Read Engine performs a
DMA operation that crosses a 4G boundary. This error is
reported in bit 3 of the DMA Read Status Register.
Subsequently, this will generate an internal event to
interrupt the internal CPU and the DMA Read Engine will
lock up after detecting this error. So it’s recommended
that this bit should not be set by firmware or software.
1: Enable Address Overflow Error Logging
0: Disable Address Overflow Error Logging.
Reserved 24:18 RO 0 –
PCI Request Burst 17:16 RW 3 The two bits define the burst length that the RDMA read
Length engine would request to the PCI block. Set to 256B if
slow core clock is enabled (See Clock Control Register
0x74 bit-19).
00 = 128B
01 = 256B
10 = 512B
11 = 4 KB
Reserved 15:14 RO 0 –
MBUF SBD Corruption 13 RW 0 –
Attn Enable
MBUF RBD Corruption 12 RW 0 –
Attn Enable
BD SBD Corruption Attn 11 RW 0 –
Enable
Reserved 12:11 RO 0 –
Read DMA PCI-X Split 10 RW 0 Enable read DMA PCI-X split transaction timeout expired
Transaction Timeout attention.
Expired Attention
Enable
Read DMA Local 9 RW 0 Enable Read DMA Local Memory Write Longer Than
Memory Write Longer DMA Length Attention.
Than DMA Length
Attention Enable
Read DMA PCI FIFO 8 RW 0 Enable Read DMA PCI FIFO Overread Attention (PCI
Overread Attention read longer than DMA length.)
Enable
Read DMA PCI FIFO 7 RW 0 Enable Read DMA PCI FIFO Underrun Attention
Underrun Attention
Enable
Read DMA PCI FIFO 6 RW 0 Enable Read DMA PCI FIFO Overrun Attention
Overrun Attention
Enable
Default
Name Bits Access Value Description
Read DMA PCI Host 5 RW 0 Enable Read DMA PCI Host Address Overflow Error
Address Overflow Error Attention. A host address overflow occurs when a single
Attention Enable DMA read begins at an address below 4 GB and ends on
an address above 4 GB. This is a fatal error.
Read DMA PCI Parity 4 RW 0 Enable Read DMA PCI Parity Error Attention
Error Attention Enable
Read DMA PCI Master 3 RW 0 Enable Read DMA PCI Master Abort Attention
Abort Attention Enable
Read DMA PCI Target 2 RW 0 Enable Read DMA PCI Target Abort Attention
Abort Attention Enable
Enable 1 RW 1 This bit controls whether the Read DMA state machine is
active or not. When set to 0, it completes the current
operation and cleanly halts. Until it is completely halted,
it remains one when read.
Reset 0 RW 0 When this bit is set to 1, the Read DMA state machine is
reset. This is a self-clearing bit.
Default
Name Bits Access Value Description
Read DMA PCI Host 5 W2C 0 Read DMA PCI Host Address Overflow Error. A host
Address Overflow Error address overflow occurs when a single DMA read
begins at an address below a multiple of 4 GB and
ends at an address above the same multiple of 4 GB
(i.e., the host memory address transitions from
0xXXXXXXXX_FFFFFFFF to 0xYYYYYYYY_00000000 in
a single read). This is a fatal error.
Read DMA Completion 4 W2C 0 Read DMA PCIe Completion Timer Timeout
Timer Timeout
Read DMA Completer 3 W2C 0 Read DMA PCIe Completer Abort
Abort
Read DMA Unsupported 2 W2C 0 Read DMA PCIe Unsupported Request
Request
Reserved 1:0 RO 0 –
Default
Name Bits Access Value Description
Rstate3 5:4 RO 00 00: idle
01: Mbuf Request State
10: Mbuf Ready State
Reserved 3 RO 0 Reserved bits
Rstate1 2:0 RO 0 parameter idle1_st = 3’b 000;
parameter ftq_b_req_st = 3’b 001;
parameter ftq_d_req_st = 3’b 010;
parameter dmad_b_rd_req_st = 3’b 011;
parameter dmad_d_rd_req_st = 3’b 100;
parameter dmad_wr_req_st = 3’b 101;
parameter wait_b_st = 3’b 110;
parameter wait_d_st = 3’b 111;
Default
Name Bits Access Value Description
Rstate2 4:0 RO 0 parameter idle2_st = 5’b 00000;
parameter non_op_st = 5’b 00001;
parameter wait2_st = 5’b 00010;
parameter wr_mem_req0_pre_st = 5’b 00011;
parameter wr_mem_req0_st = 5’b 00100;
parameter wr_mem_req1_st = 5’b 00101;
parameter wr_mem_req2_st = 5’b 00110;
parameter wr_mem_req3_st = 5’b 00111;
parameter wr_mem_req4_st = 5’b 01000;
parameter wr_mem_st = 5’b 01001;
parameter wr_mbuf_hdr_req_st = 5’b 01010;
parameter wr_mbuf_hdr_st = 5’b 01011;
parameter mbuf_get_st = 5’b 01100;
parameter wr_fd_req_st = 5’b 01101;
parameter wr_fd_st = 5’b 01110;
parameter pre_wr_ftq_st = 5’b 01111;
parameter intr_st = 5’b 10000;
parameter rdr_err_st = 5’b 10001;
parameter wait_st = 5’b 10010;
parameter wr_mem_req5_st = 5’b 10011;
parameter chk_hst_addr_st = 5’b 10100;
parameter wr_full_mbuf_hdr_req_st = 5’b 10101;
parameter wr_full_mbuf_done_st = 5’b 10111;
parameter wr_mis_bd_req_st = 5’b 11000;
parameter wr_mem_req_st = 5’b 11001;
parameter wr_mbuf0_req_st = 5’b 11010;
parameter wait4_proc_done_st = 5’b 11011;
parameter wr_mbuf1_req_st = 5’b 11100;
parameter get_more_mbuf_st = 5’b 11101;
Default
Name Bits Access Value Description
Enable hardware fix 2 RW 0 When set, enables hardware fix 25155
25155 When set, this bit enables the fix for CQ25155, where a
CQ25155 fix enable DMA FIFO overrun occurs if a large number of RX BDs are
fetched while the TX MBUF is full and the Real-
TimeREAD FIFO is empty.
Late Collision Fix Enable 1 RW 1 –
SDI ShortQ Enable 0 RW 1 When set, this bit enables hardware fix 27862
When set, this bit enables the fix for CQ27862
Default
)Name Bits Access Value Description
Enable hardware fix 4 RW 1 Set to 1 to enable fix for clock request gap problem of TX
30888 Real-TimeREAD lock-up issue, CQ Cont00030888
CQ30888 Fix Enable Note: Increasing the ASPM L1 entry time to a value on
the order of 1ms is recommended and may prevent this
issue from occurring. See register 0x7d28.
Enable hardware fix 3 RW 1 Set to 1 to enable fix for clock switching problem of TX
30888 Real-TimeREAD lock-up issue, CQ Cont00030888
CQ30888 Fix Enable Note: Increasing the ASPM L1 entry time to a value on
the order of 1ms is recommended and may prevent this
issue from occurring. See register 0x7d28.
Enable hardware fix 2 RW 0 Set to 1 to enable fix for TX Real-TimeREAD lock-up
30808 issue, CQ Cont00030808
CQ30808 Fix Enable Note: Increasing the ASPM L1 entry time to a value on
the order of 1ms is recommended and may prevent this
issue from occurring. See register 0x7d28.
Reserved 1 RW 0 Reserved
Reserved 0 RW 0 Reserved
WDMA Registers
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
Data Byte Swap 13 RW 0 Byte swap control for data
Data Word Swap 12 RW 0 Word swap control for data
Software Byte Swap 11 RW 0 To override byte enables with all 1’s
Control
Receive Accelerate 10 RW 0 The write DMA-to-PCI request length is the available
Mode data size in the PCI RX FIFO.
Set to 1: The write DMA-to-PCI request length is the
maximum length of the current transaction, regardless
of the available data size in PCI RX FIFO. This mode
cannot be used in slow core clock environment. Disable
this mode before switching to slow core clock mode.
Write DMA Local 9 RW 0 Attention Enable. Enable Write DMA Local Memory
Memory Read Longer Than DMA Length Attention.
Write DMA PCI FIFO 8 RW 0 Enable Write DMA PCI FIFO Overwrite Attention (PCI
Overwrite Attention write longer than DMA length).
Enable
Write DMA PCI FIFO 7 RW 0 Enable Write DMA PCI FIFO Underrun Attention.
Underrun Attention
Enable
Write DMA PCI FIFO 6 RW 0 Enable Write DMA PCI FIFO Overrun Attention.
Overrun Attention
Enable
Write DMA PCI Host 5 RW 0 Enable Write DMA PCI Host Address Overflow Error
Address Overflow Error Attention.
Attention Enable
Write DMA PCI Parity 4 RW 0 Enable Write DMA PCI Parity Error Attention.
Error Attention Enable
Write DMA PCI Master 3 RW 0 Enable Write DMA PCI Master Abort Attention.
Abort Attention Enable
Write DMA PCI Target 2 RW 0 Enable Write DMA PCI Target Abort Attention.
Abort Attention Enable
Enable 1 RW 1 This bit controls whether the Write DMA state machine
is active or not. When set to 0, it completes the current
operation and cleanly halts. Until it is completely halted,
it remains 1 when read.
Reset 0 RW 0 When this bit is set to 1, the Write DMA state machine is
reset. This is a self-clearing bit.
Default
Name Bits Access Value Description
Write DMA Local 9 W2C 0 Write DMA Local Memory Read Longer Than DMA
Memory Read Longer Length Error
than DMA Length Error
Write DMA PCI FIFO 8 W2C 0 Write DMA PCI FIFO Overwrite Error (PCI write longer
Overwrite Error than DMA length).
Write DMA PCI FIFO 7 W2C 0 Write DMA PCI FIFO Underrun Error.
Underrun Error
Write DMA PCI FIFO 6 W2C 0 Write DMA PCI FIFO Overrun Error.
Overrun Error
Write DMA PCI Host 5 W2C 0 Write DMA PCI Host Address Overflow Error.
Address Overflow Error
Reserved 4 W2C 0 Reserved
Reserved 3 W2C 0 Reserved
Reserved 2 W2C 0 Reserved
Reserved 1:0 RO 0 –
RX-CPU Registers
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
Enable Watchdog 7 RW 0 Enables watchdog interrupt state machine. Used in
Enable Interrupt conjunction with Watchdog Clear register, Watchdog
Saved PC register and Watchdog Vector register. Cleared
on reset and Watchdog interrupt.
When this bit is set to 1, the interrupt is enabled. When
this bit is zero, any interrupt will be ignored. This bit can
also be set by writing the interrupt_enable register
ROM Fail 6 RW 1 Asserted on reset. Cleared by ROM code after it
successfully loads code from NVRAM. Afterwards, this bit
can be used by software for any purpose.
Reserved 5 RO 0 Reserved
Reserved 4 RO 0 Reserved
Enable Page 0 Instr Halt 3 RW 0 When set, instruction references to the first 256 bytes of
SRAM force the RX RISC to halt and cause bit 4 in the RX
RISC state register to be latched. Cleared on reset and
Watchdog interrupt.
Enable Page 0 Data Halt 2 RW 0 When set, data references to the first 256 bytes of SRAM
force the RX RISC to halt and cause bit 3 in the RX RISC
state register to be latched. Cleared on reset and
Watchdog interrupt.
Single-Step RX RISC 1 RW 0 Advances the RX RISC’s PC for one cycle. If halting
condition still exists, the RX RISC will again halt; otherwise,
it will resume normal operation.
Reset RX RISC 0 WO 0 Self-clearing bit which resets only the RX RISC.
Default
Name Bits Access Value Description
Blocking Read 31 RO 0 A blocking data cache miss occurred, causing the RX RISC
to stall while data is fetched from external (to the RX RISC)
memory. This is intended as a debugging
tool. No state is saved other than the fact that the miss
occurred.
MA Request FIFO 30 W2C 0 MA_req_FIFO overflowed. The RX RISC is halted on this
overflow condition.
MA data/bytemask 29 W2C 0 MA_datamask_FIFO overflowed. The RX RISC is halted on
FIFO overflow this condition.
MA outstanding read 28 W2C 0 MA_rd_FIFO overflowed. The RX RISC is halted on this
FIFO overflow condition.
Default
Name Bits Access Value Description
MA outstanding write 27 W2C 0 MA_wr_FIFO overflowed. The RX RISC is halted on this
FIFO overflow condition.
Reserved 26:16 RO 0 –
Instruction fetch stall RO 0 The processor is currently stalled due to an instruction
fetch.
Data access stall RO 0 The processor is currently stalled due to a data access.
Reserved 13 RO 0
Interrupt Received 12 RO 0 This bit is each time an interrupt input is asserted,
regardless of the interrupt enable bit (bit 7, mode).
Reserved 11 RO 0 –
RX RISC Halted 10 RO 0 The RX RISC was explicitly halted via bit 10 in the RX RISC
Mode register.
Register Address Trap 9 W2C 0 A signal was received from the Global Resources block
indicating that this processor accessed a register
location that triggered a software trap. The GRC registers
are used to configure register address trapping.
Memory Address Trap 8 W2C 0 A signal was received from the Memory Arbiter indicating
that some BCM5700 block, possibly this processor,
accessed a memory location that triggered a software
trap. The MA registers are used to configure memory
address trapping.
Bad Memory Alignment 7 W2C 0 Load or Store instruction was executed with the least
significant two address bits not valid for the width of the
operation (e.g., Load word or Load Half-word from an odd
byte address).
Invalid Instruction 6 W2C 0 Program Counter (PC) is set to invalid location in processor
Fetch address space.
Invalid Data Access 5 W2C 0 Data reference to illegal location.
Page 0 Instruction 4 W2C 0 When enabled in mode register, indicates the address in
Reference the PC is within the lower 256 bytes of SRAM.
Page 0 Data Reference 3 W2C 0 When enabled in mode register, indicates data reference
within lower 256 bytes of SRAM.
Invalid Instruction 2 W2C 0 Invalid instruction fetched.
Halt Instruction 1 W2C 0 A halt-type instruction was executed by the RX RISC.
Executed
Hardware Breakpoint 0 W2C 0 When enabled (in Hardware Breakpoint Register),
indicates hardware breakpoint has been reached. One of
the 3 actions below will clear this bit
1) Disable breakpoint
2) Reprogram the breakpoint addr, or
3) Reprogram the PC
Default
Name Bits Access Value Description
Reserved 13 RO 0 –
Interrupt mask 12 RW 0 This bit attention when bit 12 of the state register is set
Spad underflow mask 11 RW 0 The processor is currently stalled due to a data access.
Soft halted mask 10 RW 1 This bit enables soft halts to generate Attention output
Reserved 9 RW 0 –
FIO Abort mask 8 RW 1 This bit enables the attention output when bit 8 of the
state register is set.
Align halted mask 7 RW 0 This bit enables alignment errors to generate Attention
output
Bad pc halted mask 6 RW 0 This bit enables invalid PC values to generate Attention
output
Bad data addr halted 5 RW 0 This bit enables invalid data addresses to generate
mask Attention output.
Page 0 inst halted mask 4 RW 0 This bit enables page 0 instructions to generate Attention
output
Page 0 data halted 3 RW 0 This bit enables page 0 data access to generate Attention
mask output
Bad inst halted mask 2 RW 0 This bit enables invalid instruction decodes to generate
Attention output
Reserved 1 RW 0 –
Breakpoint mask 0 RW 0 This bit enables breakpoints to generate Attention output.
Default
Name Bits Access Value Description
Hardware Breakpoint 31:2 RW 0 Word address to break on
Reserved 1 RO 0 –
Disable Hardware 0 RW 1 When this bit is set, the Hardware Breakpoint is disabled
Breakpoint
Default
Name Bits Access Value Description
Progress Code – – – Self-Boot Progress Code
#define PROGRESS_CODE_STARTED 0x41
#define PROGRESS_CODE_ICP_INIT 0x45
#define PROGRESS_CODE_DONE_INIT 0x49
#define PROGRESS_CODE_SCP_INIT 0x4d
#define PROGRESS_CODE_SERVICE 0x51
#define PROGRESS_CODE_NO_DATA 0x55
Default
Name Bits Access Value Description
LBA 31:2 RO 0 This value indicates the address of the last branch that
was taken. An offset as indicated by the type field must
be subtracted from this value. This bit indicates the type
of branch that * was last taken.
TYPE 1 RO 0 0x0: Jump: 4 bytes must be subtracted from the LBA
value to determine the actual address of the branch
instruction that caused this register to load.
0x1: Branch: 8 bytes must be subtracted from the LBA
value to determine the actual address of the branch
instruction that caused this register to load.
Reserved 0 RO 0 When this bit is set, the Hardware Breakpoint is disabled
Default
Name Bits Access Value Description
Enable 31 R/W 0 1 == This element is enabled for use in Filtering Set-
equations
0 = This element shall return a FALSE value if called into
a Set-equation
Unused 30:25 RU 0xUU Unpredictable read value.
Mask Mode 26 R/W 0 1 == Apply a 16-bit mask on 16-bits extracted from a
packet and then operate with the 16-bit Element-
Pattern
0 ==Apply the 32-bit Element-Pattern on 32-bits
extracted from a packet
See FILT_ELEM_PTTRN_REG
Note: When [15:13] is set to 111, the value of this bit is
ignored and assumed to be a 1 by h/w.
Unused 25:18 RU 0xU Unpredictable read value.
Element-Opcode 17:16 R/W 000 Comparison Operation to be performed on 32 or 16 bits
extracted from “Element-Offset” relative to the
“Element-Header”-
00: Equal
01: Not Equal
10: Greater Than
11: Less Than
Element-Header 15:13 R/W 000 H/w must detect this Header type in a packet before
applying the filtering pattern:
000: Start of Frame
001: Start of IPv4/IPv6 Header
010: Start of TCP Header
011: Start of UDP Header
100: Reserved
101: Start of ICMPv4 Header
110: Start of ICMPv6 Header
111: Start of a VLAN TAG Control Field
Unused 12:8 RU 0xU Unpredictable read value.
Element-Offset 7:0 R/W 0x00 Stride length, in number of bytes, relative to the first
octet of the specified “Element-Header”.
Note: When [15:13] is set to 111, the value of this field
is ignored and assumed to be 0 by h/w.
Default
Name Bits Access Value Description
Element-Pattern Right 31:16 R/W 0x0000 This field supplies the left most 16-bits to be compared
with 16-bits extracted from a packet.
This value is in Network-Byte-Order.
Element-Mask or 15:0 R/W 0x0000 This value is in Network-Byte-Order.
Element-Pattern Left If “Mask Mode” == 1 :
This field is used as a mask to be applied on 16-bits
extracted from a packet. The masked value is then
compared with the field “Element-Pattern Left”
If “Mask == 0” :
This field supplies the right most 16-bits to be compared
with 16-bits extracted from a packet.
Default
Name Bits Access Value Description
Reserved 31:8 RO 0x0000 –
Set-Mask 7:0 RW 0x00 This 8-bit field determines which Filtering-Element shall
participate in this Set equation.
If a bit ==1, the corresponding Element participates. The
Boolean results of all participating Elements are AND-ed
to produce the final Boolean result of the Set.
Default
Name Bits Access Value Description
Reserved 31:29 RO 000 Reserved
MAC High Address 15:0 RW 0x0000 Upper 2-bytes [4 – 5]th perfect match address
Default
Name Bits Access Value Description
MAC Low Address 31:0 RW 0x0000 Lower 4-bytes of [4 – 5]th perfect match address
Since the size of TXMBUF FIFO is only 64 entries and MACTQ is 12 bits wide:
• Bits 21:16 from this register are mapped to bits 11:6 of the MACTQ FTQ.
• Bits 5:0 from this register are mapped to bits 5:0 of the MACTQ FTQ.
• Bits 31:22 and 15:6 are ignored.
The TXMBUF cluster for the ASF message is defaulted to the uppermost three TXMBUFs.
Since the size of TXMBUF FIFO is only 64 entries and MACTQ is 12 bits wide:
• Bits 21:16 from this register are mapped to bits 11:6 of the MACTQ FTQ.
• Bits 5:0 from this register are mapped to bits 5:0 of the MACTQ FTQ.
• Bits 31:22 and 15:6 are ignored.
The TXMBUF cluster for the ASF message is defaulted to the uppermost three TXMBUFs.
Default
Name Bits Access Value Description
Reserved 31:18 RO 0 –
Head RXMBUF Pointer 17:9 WO 00h Specifies the first MBUF of the RXMBUF cluster for the
received packet to be freed.
Tail RXMBUF Pointer 8:0 WO 00h Specifies the last MBUF of the TXMBUF cluster for the
received packet to be freed.
Default
Name Bits Access Value Description
Reserved 31:21 RO 0 –
Valid Bit 20 RW 0 Set only if the head of RDIQ entry is valid
Skip Bit 19 RW 0 If this bit iset, the head of RDIQ entry will be popped
Pass Bit 18 RW 0 This bit is 0 if RDIQ head entry is intended for the CPU. It
prevents the entry to be serviced by WDMA
Head RXMBUF Pointer 17:9 RO 0 Specifies the first MBUF of the RXMBUF cluster for the
received packet
Tail RXMBUF Pointer 8:0 RO 0 Specifies the last MBUF of the RXMBUF cluster for the
received packet
Default
Name Bits Access Value Description
PCI Target Abort Attn 2 RW 0 PCI target abort attention enable.
Enable 1 RW 1 This bit controls whether the MSI state machine is active
or not. When set to 0, it completes the current operation
and cleanly halts. Until it is completely halted, it remains
one when read.
Reset 0 RW 0 When this bit is set to 1, the MSI state machine is reset.
This is a self-clearing bit.
Note: If not using Tagged Status mode, the driver should set 0x6000 bit 5.
GRC Register
All registers reset are core reset unless specified.
Default
Name Bits Access Value Description
TLP Address 1 22 RW 0 TLP private register upper address 1
Bits [31][22][29] remap the PCIe core TL/DL/PL register
to the GRC space from 0x6400 to 0x67ff
[31]:
0: Selects the lower 1 KB of each TL/DL/PL.
1: Selects the higher 1KB of each TL/DL/Pl.
[22][29]:
00: Selects the TL register.
01: Selects the DL register.
10: Selects the PL register.
NVRAM Write Enable 21 RW 0 The host must set this bit before attempting to update
the Flash or SEEPROM
Send No Pseudo- 20 RW 0 Do not include the pseudo-header in the TCP or UDP
header checksum checksum calculations. To obtain the correct checksum,
the driver must seed the TCP/UDP checksum field with
the pseudo-header checksum.
Reserved 19 RO 0 –
EAV Mode Enable 18 RW 0 Write 1 to this bit to enable EAV Mode.
Enabling EAV Mode shall internally over-ride RSS Mode
setting to a disable.
Disabling EAV Mode shall hide Send Ring#2 and other
EAV related registers noted in this section
Host Send BDs 17 RW 0 Use host-based BD rings instead of NIC-based BD rings.
Host Stack Up 16 RW 0 The host stack is ready to receive data from the NIC.
Reserved 15 RO 0 –
Don’t Interrupt on 14 RW 0 Never cause an interrupt on receive return ring producer
Receives updates.
Don’t Interrupt on 13 RW 0 Never cause an interrupt on send BD ring producer
Sends updates.
DMA Write System 12 RW 0 DMA Write System Attention Enable
ATTN
Allow Bad Frames 11 RW 0 The RX MAC forwards illegal frames to the NIC and
marks them as such instead of discarding them. The
frames are
queued based on default class and interrupt distribution
queue number
No_CRC 10 RO 0 Used by EMAC
Default
Name Bits Access Value Description
No Frame Cracking 9 RW 0 Turn off all frame cracking functionality in both the read
DMA engine and the MAC receive engine. On receive,
the TCP/
UDP checksum field is replaced by raw checksum for the
whole frame except the Ethernet header.
On transmit, IP and TCP/UDP checksum generation is
always disabled when this bit is set. Also, the raw
checksum is calculated over the entire frame except the
Ethernet
header and CRC.
Reserved 8 RO 0 –
CR_Func_Sel 7:6 RW 0 Used to select the Card-Reader Function Number when
accessing the Card-Reader Register from the internal
GRC Data Path
00: Function 0 – Not Applicable
01: Function 1 – Select SD/MMC Function 1 Register
10: Function 2 – Select Memory Stick Function 2 Register
11: Function 3 – Select xD Function 3 Register
Word Swap Data 5 Host-RW 0 Word swap data when DMAing it across the PCIe bus.
NIC-R
Byte Swap Data 4 Host-RW 0 Byte swap data when DMAing it across the PCIe bus.
NIC-R
Reserved 3 RO 0 –
Word Swap BD 2 Host-RW 0 Word swap BD structure when DMAing them across the
NIC-R PCIe bus.
Byte Swap BD 1 Host-RW 0 Byte swap BD structure when DMAing them across the
NIC-R PCIe bus.
Int_Send_Tick 0 RO 0 Used by Host Coalescing Block
Default
Name Bits Access Value Description
RAM Powerdown 24 RW 0 When this bit is set, all of the RAMs are powered down.
Reserved 23 RW 0
BIAS IDDQ 22 RW 0 When this bit is set, the BIAS will be powered down.
GPHY IDDQ 21 RW 0 When this bit is set, the GPHY will be powered down.
Reserved 20 RO 0 –
Vmain_prsnt State 19 RO 1 State of Vmain_prsnt input for this device.
Power State 18:17 RO 0 Indicates the current power state of the device.
00b: D0
01b: D1
02b: D2
03b: D3
This PowerState mirrors the PMSCR register
Reserved 16:13 RO 0 –
Reserved 12:8 RW 0x10 –
Timer Prescaler 7:1 RW 1111111b Local Core clock frequency in MHz, minus 1, which
should correspond to each advance of the timer. Reset
to all 1. This timer Prescaler is also control the tick timers
(receive and send tick timers) in the Host Coalesce Block.
Default
Name Bits Access Value Description
Enable Wake On Link 31 RW 0 When set, the chip drives the PME when the link is up.
Up
Enable Wake On Link 30 RW 0 When set, the chip drives the PME when the link is
Down down.
Disable Traffic LED fix 29 RW 0 Set to t to disable Traffic LED Fix (CQ9609)
Reserved 28:27 RO 0 –
PME Assert 26 RW 0 When set, the PME Status bit in the PMSCR register is
forced high. If PME Enable is also set, the PME signal will
activate. This register bit is write-only and self-clearing
after write.
Reserved 25:17 RO 0 –
Default
Name Bits Access Value Description
GPIO(2:0) Output 16:14 RW 0 Outputs which are defined by board level design.
GPIO(2:0) Output 13:11 RW 0 When asserted, the device drives miscellaneous pin
Enable outputs.
GPIO(2:0) Input 10:8 RO 0 Input from bidirectional miscellaneous pin.
GPIO0 is accessible in 48-pin package
GPIO0 and GPIO2 are accessible in 68-pin package
Reserved 7:6 RW 0 Reserved
Energy detection pin 5 RW 0 Input value of ENERGY_DET pin
UART Disable 4 RW Disable UART on SPD100LEDB/TRAFFICLEDB pin
Inversion x0: TRAFFICLEDB pin is used as UART serial in
of OTP bit SPEED100LEDB pin is used as UART serial out
141
0x1: TRAFFICLEDB/SPEED100LEDB pin is controlled by
MAC
This register bit resets by POR only.
Interrupt on Attention 3 RW 0 If set, the host will be interrupted when any of the
attention bits in the CPU event register are asserted.
Set Interrupt 2 WO 0 If Interrupt Mailbox 0 contains a nonzero value, setting
this bit does nothing. If Interrupt Mailbox 0 is zero, then
setting this bit will cause the internal unmasked
interrupt state to be asserted.
The external interrupt state (INTA pin) will also be
asserted immediately if interrupts are not masked by
the Mask Interrupts
bit. If interrupts are masked, INTA will be asserted once
interrupts are unmasked, so long as interrupts are not
first
cleared. This bit is not operational in MSI mode.
Clear Interrupt 1 WO 0 This bit provides the same functionality as the Clear
Interrupt bit in the Miscellaneous Host Control register.
This bit is not
operational in MSI mode
Interrupt State 0 RO 0 This bit reflects the state of the PCI INTA pin. This bit is
not operational in MSI mode.
Default
Name Bits Access Value Description
Timer Value 31:0 RW 0 32-bit free-running counter
Default
Name Bits Access Value Description
RX-CPU Timer 31:0 RW 0 RX-RISC Timer Event when time stamp = RX-RISC Timer
Reference Reference
Default
Name Bits Access Value Description
Reserved 31:1 RO 0 –
RX-CPU Semaphore 0 RW 0 RX-CPU Semaphore
Default
Name Bits Access Value Description
PCIE Phy Attn 7:4 RO 0 PCIe Attention Error Status
casex ({txintf_overflow_attn, rtag_val_unexp_attn,
tx_tag_in_use_attn , unknowntype_err_attn,
bridge_forward_err_attn, illegal_size_attn,
ecrc_attn, rx_unsupport_attn, cpl_unexp_attn,
cpl_timeout_attn, poison_attn, cpl_abrt_attn})
Default
Name Bits Access Value Description
Max Credit 10:8 RW 0x0 The Max Credit value of the DMAR arbiter can be
set by programming the field.
000 == 2 Credits
001 == 2 Credits
010 == 2 Credits
011 == 3 Credits
100 == 4 Credits
101 == 5 Credits
110 == 6 Credits
111 == 7 Credits
This field is meaningful only when the field [2 :0] is
101 or 110, else this field is ignored.
Reserved 7:3 RO 0x0 –
DMAR Arbitration Policy 2:0 RW 0x0 This field chooses the arbitration policies:
000 == Simple Round Robin
001 == Fixed Priority, LAN Highest
010 == Fixed Priority, CR Highest
011 == Reserved
101 == Credit Based – LAN Bias
110 == Credit Based – CR Bias
111 == Reserved
Default
Name Bits Access Value Description
DMAW Arbitration Policy 2:0 RW 0x0 This field chooses the arbitration policies:
000 == Simple Round Robin
001 == Fixed Priority, LAN Highest
010 == Fixed Priority, CR Highest
011 == Reserved
101 == Credit Based – LAN Bias
110 == Credit Based – CR Bias
111 == Reserved
Default
Name Bits Access Value Description
Flash 31 RW 0 –
Reserved 30 RW 0 –
Timer Reference 29 RW 0 –
Reached
ROM 28 RW 0 –
HC Module 27 RW 0 –
RX CPU Module 26 RW 0 –
EMAC Module 25 RW 0 –
Memory Map Enable 24 RW 0 Set by HW, Cleared by SW
Bit
Reserved 23 RW 0 –
High Priority Mailbox 22 RW 0 –
Low Priority Mailbox 21 RW 0 –
DMA 20 RW 0 –
Reserved 19 RW 0 –
Reserved 18 RW 0 –
Reserved 17 RW 0 –
ASF Location 15 16 RW 0 –
TPM Interrupt Enable 15 RW 0 –
ASF Location 14 14 RW 0 –
Reserved 13 RW 0 –
ASF Location 13 12 RW 0 –
Unused SDI 11 RW 0 –
Default
Name Bits Access Value Description
SDC (Post TCP 10 RW 0 –
segmentation)
SDI (Pre TCP 9 RW 0 –
segmentation)
RDIQ FTQ (Received an 8 RW 0 –
ASF)
ASF Location 12 7 RW 0 –
Reserved 6 RW 0 –
ASF Location 11 5 RW 0 –
Reserved 4 RW 0 –
ASF Location 10 3 RW 0 –
Reserved 2 RW 0 –
ASF Location 9 1 RW 0 –
ASF Location 8 0 RW 0 –
Default
Name Bits Access Value Description
CR_VDDIO 3.0V 31:28 RW 7 CR_VDDIO regulator output adjustment at 3.0V
regulator output (approximately, output maxed-out at 3.0V)
adjustment 0000: +14%
0001: +12%
0010: +10%
0011: +8%
0100: +6%
0101: +4%
0110: +2%
0111: 0%
1000: – 2%
1001: – 4%
1010: – 6%
1011: – 8%
1100: – 10%
1101: – 12%
1110: – 14%
1111: – 16%
Default
Name Bits Access Value Description
CR_VDDIO 1.8V 27:24 RW 7 CR_VDDIO regulator output adjustment at 1.8V
regulator output (approximately)
adjustment 0000: +14%
0001: +12%
0010: +10%
0011: +8%
0100: +6%
0101: +4%
0110: +2%
0111: 0%
1000: – 2%
1001: – 4%
1010: – 6%
1011: – 8%
1100: – 10%
1101: – 12%
1110: – 14%
1111: – 16%
SI/EEDATA Pin Strength 23:21 RW Inversion Pad Strength Control
Control of OTP bit 111 = TH16
159:157
110 = TH12
011 = TH8
001 = TH4
SO Pin Strength Control 20:18 RW Inversion Pad Strength Control
of OTP bit 111 = TH16
156:154
110 = TH12
011 = TH8
001 = TH4
SCLK Pin Strength 17:15 RW Inversion Pad Strength Control
Control of OTP bit 111 = TH16
153:151
110 = TH12
011 = TH8
001 = TH4
SO Pin Strength Control 14:12 RW Inversion Pad Pin Strength Control
of OTP bit 111 = TH16
150:148
110 = TH12
011 = TH8
001 = TH4
Flash/LED Pin Sharing 11 RW OTP bit Disables Flash/LED Pin sharing
Control 131 0: Enable Flash/LED Pin sharing
1: Disable Flash/LED Pin sharing; Flash pins will only be
used for flash purpose
Default
Name Bits Access Value Description
SD_CLK pull-up Control 10 RW 0 Enables internal chip pull-up on CR_CLK pin when SD
card is detected
0: Disable internal chip pull-up
1: Enable internal chip pull-up
xD R_B_N pull-up 9 RW 0 Enables internal chip pull-up on CR_CLK (R_B_N) pin
Control when xD card is detected
0: Disable internal chip pull-up
1: Enable internal chip pull-up
GPIO0/SD Bus_Pow 8 RW 0 Selects between GPIO0 function or SD Bus_Pow
Control function for GPIO0 pin
0: Use GPIO0 pin as GPIO0 function
1: Reserved
SD Bus_Pow/LED 7 RW 0 Selects between SD Bus_Pow function or LED function
Control for CR_LED pin
(non-xD sku only)
0: Use CR_LED pin as SD Bus_Pow function
1: Use CR_LED pin as SD LED function
SD LED Output Mode 6:5 RW 1 SD LED Output Mode Control
Control 00: Active High
01: Active Low
10: Open Drain
11: Open Collector
SD Bus_Pow Output 4 RW 0 SD Bus_Pow Output Polarity Control
Polarity Control 0: Active High
1: Active Low
SD Write Protect 3 RW 0 SD Write Protect Polarity Control
Polarity Control 0: Active High (internal chip pull-down is activated)
1: Active Low (internal chip pull-up is activated)
SD/MMC Card Detect 2 RW 0 SD/MMC Card Detect Polarity Control — Not supported
Polarity/Reserved in A0 but supported in B0
0: Active Low (internal chip pull-up is activated)
1: Active High (internal chip pull-down is activated)
Memory Stick INS 1 RW 0 Memory Stick INS Polarity Control
Polarity Control 0: Active Low (internal chip pull-up is activated)
1: Active High (internal chip pull-down is activated)
xD-picture Card Detect 0 RW 0 xD-picture Card Detect Polarity Control
Polarity Control 0: Active Low (internal chip pull-up is activated)
1: Active High (internal chip pull-down is activated)
Default
Name Bits Access Value Description
Reserved 31:8 RW 0 –
SD Write Protect 7:6 RW 0 SD Write Protect internal chip pull-up/pull-down
Internal Chip Pull-up/ override control
Pull-down Override 0: Disable Override
Control
1: Activates Pull-up and Deactivates Pull-down
2: Activates Pull-down and Deactivate Pull-down
3: Deactivates Pull-up and Pull-down
Reserved 5:4 RO 0 –
Memory Stick INS 3:2 RW 0 Memory Stick INS internal chip pull-up/pull-down
Internal Chip Pull-up/ override control
Pull-down Override 0: Disable Override
Control
1: Activates Pull-up and Deactivates Pull-down
2: Activates Pull-down and Deactivate Pull-down
3: Deactivates Pull-up and Pull-down
xD-picture Card Detect 1:0 RW 0 xD-picture Card Detect internal chip pull-up/pull-down
Internal Chip Pull-up/ override control
Pull-down Override 0: Disable Override
Control
1: Activates Pull-up and Deactivates Pull-down
2: Activates Pull-down and Deactivate Pull-down
3: Deactivates Pull-up and Pull-down
Default
Name Bits Access Value Description
UART enable 28 RO 0 Value of OTP bit 141
UART enable (reset value of inversion of 0x6808.4)
1 = UART
0 = LED
eAV Disable 27 RO 0 Value of OTP bit 140
eAV Disable
1 = eAV Disable
0 = eAV Enable
SEDATA OE control 26 RO 0 Value of OTP bit 139
SEDATA OE control
0 = i2c
1 = legacy
(reset value of inversion of 0x7024.3)
Disable auto eeprom 25 RO 0 Value of OTP bit 138
reset Disable auto eeprom reset
0 = enable
1 = disable
(reset value of 0x7024.4)
EEE LPI Enable H/W 24 RO 0 Value of OTP bit 137
Default EEE LPI Enable H/W Default
1 = enable EEE LPI
0 = disable EEE LPI
PCIE Gen2 mode 23 RO 0 Value of OTP bit 136
PCIe Gen2 mode
1 = Gen2
0 = Gen1
Vaux _prsnt 22:21 RO 0 Value of OTP bit 135:134
Vaux _prsnt
11 = 1
10 = 0
01 = 0
00 = 1
Non-CR sku 20 RO 0 Value of OTP bit 133
Non-CR sku
1 = Non-CR sku (48-pin package)
0 = CR sku (68-pin package)
Disable Gigabit 19 RO 0 Value of OTP bit 132
Disable Gigabit
1 = disable gigabit
0 = enable gigabit
Disable LED pin sharing 18 RO 0 Value of OTP bit 131
Disable LED pin sharing
1 = disable LED's on SCLK and SO pin
0 = enable
Default
Name Bits Access Value Description
CR regulator power 17 RO 0 Value of OTP bit 130
down CR regulator power down
1 = power down
0 = power up
Bond ID 16:0 RO 0 H/w Bond ID
BCM57781: 0x016B1 or 0x116B1
BCM57785: 0x016B5
BCM57785X: 0x116B5
BCM57761: 0x016B0 or 0x116B0
BCM57765: 0x016B4
BCM57765X: 0x116B4
BCM57791: 0x016B2 or 0x116B2
BCM57795: 0x016B6
BCM57795X: 0x116B6
Default
Name Bits Access Value Description
Select Final Alt Clock 20 R/W 0 Select the 6.25 MHz clock as the alternate clock (use in
Source: 0 = Alt Clock Airplane Mode). If this bit is 0, the alternate clock will be
Source 1, 1 = 6.25 MHz selected by bit 13.
Slow Core Clock Mode 19 R/W 0 Set this bit to 1 when running a 10:1 PCI to Core clock
ratio. For engineering debug only.
LED polarity 18 R/W 0 When set to 1, polarity of the 4 LEDs is inverted
BIST function control 17 R/W 0 –
Asynchronous BIST 16 R/W 0 –
Reset
Reserved 15:14 – – –
Select Alt Clock Source 13 R/W 0 Use the MII CLK input as the alternate clock for the
1: 0 = ck25 (XTAL_IN)/2, internal clocks, rather than the Xtal CK25 input as the
1 = MII_CLK/2 alternate clock.
Select Alt Clock 12 R/W 0 Use the alternate clock as the clock reference for the
internal clocks, rather than the 62.5 MHz.
Reserved 11:10 – – –
Core Clock Disable 9 R/W 0 Disable the CORE CLK to all blocks and shut down all
ram’s except bd and txmbuf memories
Reserved 8 – – –
Reserved 7 – – –
Reserved 6:5 – – –
Reserved 4:0 – – –
Default
Name Bits Access Value Description
Done_dr_fix_enable1 28 RW 0 Enable Bug Fix1 for Done Logic in DMA Read Module
1: Enable Bug Fix
0: Disable Bug Fix
Clkreq_Delay_Disable 27 RW 0 When set, gate off the DMA Write Request
When clear, enable the DMA Write Request to pass to
the PCIe Block.
This bit was introduced to address CQ14159
1: Disable Fix
0: Enable Fix
This bit is reset by Hard_Reset (POR, Exit Low Power
Mode, Lost of Vmain while in D0)
Lcrc_dr_fix_enable2 26 RW 0 Enable Bug Fix2 for LCRC Logic in DMA Read Module
1: Enable Bug Fix
0: Disable Bug Fix
Lcrc_dr_fix_enable 25 RW 0 Enable Bug Fix1 for LCRC Logic in DMA Read Module
1: Enable Bug Fix
0: Disable Bug Fix
Chksum_fix_enable 24 RW 0 Enable Checksum Bug Fix in DMA Read Module
1 – Enable Bug Fix
0 – Disable Bug Fix
Ma_addr_fix_enable 23 RW 1 Enable Bug Fix in Memory Arbiter to prevent address
from incrementing
1: Enable Bug Fix
0: Disable Bug Fix
Ma_prior_enable 22 RW 0 This bit control the priority of the Memory Arbiter
Requests between RT and LSO requests when both
requests occur simultaneously
1: Select RT Request over LSO Request
0: Select LSO Request over RT Request
Underrun_Fix_Enable 21 RW 0 This bit enable the PCIe ACK FIFO Underrun when
Watermark is less than MPS
1: Enable Bug Fix
0: Disable Bug Fix
Underrun Clear 20 RW 0 Clear PCIe Ack Underrun Error Status
1 – Clear Underrun
Overrun Clear 19 RW 0 Clear PCIe Ack Overrun Error Status
1: Clear Overrun
Reserved 18:0 RO 0 –
Default
Name Bits Access Value Description
PCLK Switcher Force 31 R/W 0 Override PCLK Switcher Force Switch feature by bit 30;
Switch Override Enable This re
1: Override force switch value using bit 30
0: PCLK Switcher Force Switch asserts when following
conditions are all met
a. perst_l is asserted and
b. pcie link is not in l23_ready state, and
c. optionally, vmain (debounced) is deasserted and
d. core_clock is selected but not switched over
PCLK Switcher Force 30 SC 0 Set this bit to force pclk switchers to switch.
Switch Override Value Use this bit only if PCIe config space is not accessible
This register is self clear.
This bit should be used in conjuction of bit 31
1: force switch enabled
0: force switch disabled completely
Default
Name Bits Access Value Description
PCLK Switcher Sel 29 R/W 0 Override PCLK Switcher clock selection
Override Enable 1: Override PCLK Switcher clock selection
0: PCLK Switch selects to pcie clock by default, and
selects core clock when any of the following condition is
met
a. perst_l is asserted, or
b. pcie link is in l23_ready state, or
c. vmain (debounced) is deasserted
PCLK Switcher Sel 28 R/W 0 When bit 29 is set this register bit overrides the PCLK
Override Value Switcher clock selection
1: select core clock for PCLK switcher
0: select pcie clock for PCLK switcher
PCLK Switcher Force 27 R/W 0 When bit 31 is 0 this register bit disables condition a
Switch Condition A (perst_l) checking
checking disable 1: disable perst_l assertion checking when asserting
force_switch
0: enable perst_l assertion checking when asserting
force_switch
PCLK Switcher Force 26 R/W 0 When bit 31 is 0 this register bit disables condition b
Switch Condition B (l23_ready) checking
checking disable 1: disable l23_ready deassertion checking when
asserting force_switch
0: enable l23_ready deassertion checking when
asserting force_switch
PCLK Switcher Force 25 R/W 0 When bit 31 is 0 this register bit enables condition c
Switch Condition C (vmain) checking
checking enable 1: disable vmain deassertion checking when asserting
force_switch
0: enable vmain deassertion checking when asserting
force_switch
PCLK Switcher 24 R/W 0 When bit 29 is 0 this register bit disables condition a
Selection Condition A (perst_l) checking
checking disable 1: disable perst_l assertion checking when asserting
force_switch
0: enable perst_l assertion checking when asserting
force_switch
PCLK Switcher 23 R/W 0 When bit 29 is 0 this register bit disables condition b
Selection Condition B (l23_ready) checking
checking disable 1: disable l23_ready assertion checking when asserting
force_switch
0: enable l23_ready assertion checking when asserting
force_switch
Default
Name Bits Access Value Description
PCLK Switcher 22 R/W 0 When bit 29 is 0 this register bit disables condition c
Selection Condition C (vmain) checking
checking disable 1: disable vmain deassertion checking when asserting
force_switch
0: enable vmain deassertion checking when asserting
force_switch
Reserved 21:17 R/W 0 –
PERST Override 16 R/W 0 This bit is used to override the PERSTN so that the
internal cpu can access the PCIe register when perstn is
asserted
1: Override Perstn Reset
0: No Override
Reset by Hard Reset
Reserved 15:6 RO 0 –
pip_clkreq_serdes 5 RO X PCIe SerDes pipe clkreq status
pipe_aux_power_dow 4 RO X PCIe SerDes pipe aux power down status
n
ipllpowerdown 3 RO X PLL Power Down Status
Iclkreq_oe_l 2 RO X Clock Request Output Enable Status
Reserved 1 RO X –
PLLisUp 0 RO X PCIe PLL Status
Default
Name Bits Access Value Description
Poll ASF Timer Expired 4 W2C 0 Set when the Poll ASF timer has timed out.
Heartbeat Timer 3 W2C 0 Set when the Heartbeat timer has timed out.
Expired
Watchdog Timer 2 W2C 0 Set when the Watchdog timer has timed out.
Expired
(BCM57785 family A0)
Reserved 2 RO 0 –
(BCM57785 family B0)
Timestamp Counter 1 W2C 0 Set to enable the time stamp counter.
Enable
ASF Reset 0 W2C 0 Soft reset bit for the ASF and SMBus interface blocks.
When set, the blocks will be reset. The bit is self clearing.
Default
Name Bits Access Value Description
SMB Clock Enable 27 RW 0 When set, the SMBus Clock signal is driven low when the
SMBus interface bit-bang mode is also set. When clear,
the SMBus Clock signal is tristated.
SMB Data Input Value 26 RW 0 Value on the SMB Data pin when the SMBus interface is
in bit-bang mode.
SMB Data Enable 25 RW 0 When set, the SMBus Data signal is driven low when the
SMBus interface bit-bang mode is also set. When clear,
the SMBus Data signal is tri-stated.
SMB Slave Mode 24 RW 0 Set when the SMBus interface is operating in slave
mode.
SMB Output Status 23:20 RW 0 Set by SMBus interface when the SMB Output Start bit is
cleared with the following encoded value that indicates
the status of the preceding transfer:
0000: Transmission OK.
0001: SMBus was NACKed on the first byte of
transmission.
1001: SMBus was NACKed after the first byte of
transmission.
0010: SMBus Output FIFO underflowed during
transmission.
0011: SMBus stopped unexpectedly during
transmission.
0100: SMBus timed out during transmission.
0101: SMBus Master lost arbitration during the first byte
of transmission.
1101: SMBus Master lost arbitration after the first byte
of transmission.
0110: Remote Master ACKed on what should have been
the last byte.
SMB Read Length 19:14 RW 0 Number of bytes in the read portion of the transaction.
Get Receive Length 13 RW 0 When set, the receive length is taken from the first byte
of the read data. When cleared, the SMB Read Length
field is used.
Enable PEC 12 RW 0 When set, the packet error check byte is enabled for the
command.
SMB Access Type 11 RW 0 When set, the SMBus interface will execute a read
command. When cleared, the write command will be
executed.
SMB Output Last 10 RW 0 Set to indicate when the SMB Data Output field contains
the last byte of the command.
SMB Output Start 9 RW 0 Set to indicate the start of a SMBus master transaction.
Cleared by the SMBus interface block when the
transaction is complete.
SMB Output Ready 8 RW 0 Set to indicate the SMB Data Output field has valid data.
Cleared by the SMBus interface block when the bye is
transferred to the internal FIFO.
Default
Name Bits Access Value Description
SMB Data Output 7:0 RW 0 Outgoing data byte for the SMB transaction.
Default
Name Bits Access Value Description
Enable SM Bus 31 RW 0 Enable Stretching
Stretching
Reserved 30:22 RO 0 –
Rng_number[1:0] 21:20 RO 0 2 bit random number. Valid if Valid bit is high.
Valid 19 RC 0 Rng_number[1:0] is valid when this bit is high outside
initialization window. This bit is clear-on-read.
Default
Name Bits Access Value Description
Div2 18 RW 0 When configured low, the random number generation is
twice as fast as high.
Rng_enable 17 RW 0 Random number generator enable.
Initialization: RNG should be allowed to generate at least
221 bits before using the random output data after first
setting this bit. Valid bit (bit 19) can be used to count the
number of bits that have been generated.
Whenever RXCPU is reset, ASF FW needs to enable this
bit
Rng_rst 16 RW 0 Random number generator reset. Write 0 to clear this
reset.
Reserved 15:0 RO 0 –
Default
Name Bits Access Value Description
Erase 6 RW 0 The erase command bit.
Set high to execute an erase. This bit is ignored if the wr is clear
Wr 5 RW 0 The write/not read command bit
Set to execute write or erase
Doit 4 RW 0 Command from software to start the defined command. The
done bit must be clear before setting this bit. This bit is self
clearing and will remain set while the command is active
Done 3 WTC 0 Sequence completion bit that is asserted when the command
requested by assertion of the doit bit has completed.
The done bit will be cleared while the command is in progress.
The done bit will stay asserted until doit is reasserted or the
done bit is cleared by writing a 1 to the done bit. The done bit
is the FLSH_ATTN signal
Reserved 2:1 RO 0 –
Reset 0 RW When set, the entire NVM state machine is reset. This bit is self
clearing. Please note that this bit should NOT be set along with
bit 4 (doit). Setting both bits will result a policy error in [31:28]
and the reset command will be ignored.
Default
Name Bits Access Value Description
SPI_AT_READ State 30:26 RO 0 SPI Atmel Read State
‘AT_RD_IDLE
‘AT_RD_AST_CS
‘AT_RD_WCS_SET
‘AT_RD_CMD
‘AT_RD_ADDR1
‘AT_RD_ADDR2
‘AT_RD_ADDR3
‘AT_RD_DUMMY1
‘AT_RD_DUMMY2
‘AT_RD_DUMMY3
‘AT_RD_DUMMY4
‘AT_RD_RDATA1
’AT_RD_RDATA2
’AT_RD_RDATA3:
‘AT_RD_RDATA4
‘AT_RD_SET_DONE
‘AT_RD_WNEXT:
‘AT_RD_WCS_HLD
‘AT_RD_WCS_MINH:
Default
Name Bits Access Value Description
SPI_AT_Write State 25:20 RO 0 SPI Atmel Write State
‘AT_WR_IDLE
‘AT_TF_AST_CS
‘AT_TF_WCS_SET
‘AT_TF_CMD
‘AT_TF_ADDR1
‘AT_TF_ADDR2
‘AT_TF_ADDR3
‘AT_TF_WCS_HLD
‘AT_TF_DST_CS
‘AT_TF_WCS_MINH
‘AT_TF_STS_AST_CS
‘AT_TF_STS_WCS_SET
‘AT_TF_STS_RCMD
‘AT_TF_STS_RDATA
‘AT_TF_STS_CHK
‘AT_TF_STS_WCLK
‘AT_TF_STS_WCS_HLD
‘AT_TF_STS_DST_CS:
‘AT_TF_STS_WCS_MINH
‘AT_WR_AST_CS
‘AT_WR_WCS_SET
‘AT_WR_CMD
‘AT_WR_ADDR1
‘AT_WR_ADDR2
‘AT_WR_ADDR3
‘AT_WR_SDATA1
‘AT_WR_SDATA2
‘AT_WR_SDATA3
‘AT_WR_SDATA4
‘AT_WR_WNEXT
‘AT_WR_UPD_CMD
‘AT_WR_WCLK
‘AT_WR_WCS_HLD
‘AT_WR_DST_CS:
‘AT_WR_WCS_MINH:
‘AT_WR_STS_AST_CS:
‘AT_WR_STS_WCS_
‘AT_WR_STS_RCMD:
‘AT_WR_STS_RDATA
‘AT_WR_STS_CHK
Default
Name Bits Access Value Description
SPI_ST_Read State 19:16 RO 0 ‘AT_WR_STS_WCLK
‘AT_WR_STS_WCS_HLD
‘AT_WR_STS_DST_CS
‘AT_WR_STS_WCS_MINH:
Default
Name Bits Access Value Description
SPI_ST_Write State 15:10 RO 0 SPI ST Write State
‘ST_WR_IDLE
‘ST_WR_EN_AST_CS
‘ST_WR_ENABLE
‘ST_WR_EN_WCLK:
‘ST_WR_EN_DST_CS
‘ST_WR_EN_WCS_MINH:
‘ST_WR_AST_CS
‘ST_WR_CMD
‘ST_WR_ADDR1:
‘ST_WR_ADDR2:
‘ST_WR_ADDR3
‘ST_WR_SDATA1:
‘ST_WR_SDATA2
‘ST_WR_SDATA3:
‘ST_WR_SDATA4
‘ST_WR_WNEXT:
‘ST_WR_UPD_CMD:
‘ST_WR_WCLK:
‘ST_WR_DST_CS:
‘ST_WR_WCS_MINH:
‘ST_WR_STS_AST_CS:
‘ST_WR_STS_CS_WCLK:
‘ST_WR_STS_RCMD:
‘ST_WR_STS_RDATA:
‘ST_WR_STS_CHK
‘ST_WR_STS_WCLK:
‘ST_WR_STS_DST_CS:
‘ST_WR_STS_WCS_MINH:
‘ST_WR_DIS_AST_CS:
‘ST_WR_DISABLE:
‘ST_WR_DIS_WCLK:
‘ST_WR_DIS_WCS_MINH:
SEQ_FSM State 9:6 RO 0 SEQ_IDLE
SEQ_REQ
SEQ_CMD
SEQ_WNEXT
SEQ_BITBANG:
Default
Name Bits Access Value Description
SEE_FSM State 5:0 RO 0 SEE Read/Write State
Read:
‘EP_RD_IDLE: 0x0
‘EP_RD_WR_START: 0x1
‘EP_RD_WR_CTRL: 0x2
‘EP_RD_WR_CWACK: 0x3
‘EP_RD_WR_SDATAH: 0x4
‘EP_RD_WR_ADDR : 0x5
‘EP_RD_WR_AWACK: 0x6
‘EP_RD_WR_ADDR2: 0x7
‘EP_RD_WR_AWACK2: 0x8
‘EP_RD_SDATAH: 0x9
‘EP_RD_START: 0xA
‘EP_RD_CTRL: 0xB
‘EP_RD_CWACK: 0xC
‘EP_RD_RDATA: 0xD
‘EP_RD_SACK; 0xE
‘EP_RD_WNEXT: 0x13
‘EP_RD_SET_DONE: 0x0F
‘EP_RD_SDATAL; 0x10
‘EP_RD_STOP: 0x11
‘EP_RD_TIMEOUT: 0x12
Write State:
‘EP_WR_IDLE:
‘EP_WR_START
‘EP_WR_CTRL
‘EP_WR_CWACK
‘EP_WR_ADDR:
‘EP_WR_AWACK:
‘EP_WR_ADDR2:
‘EP_WR_AWACK2
‘EP_WR_SDATA:
‘EP_WR_DWACK
‘EP_WR_SET_DONE:
‘EP_WR_SDATAL
‘EP_WR_STOP:
‘EP_WR_TIMEOUT:
Default
Name Bits Access Value Description
SEE_CLK_DIV Enable 31 R/W 0 This bit enables 0x7014[21:11] as the SEE_CLK_DIV count
for EPROM clock generation.
1’b0: 0x7014[21:11] is NOT used as SEE_CLK_DIV for
EPROM clock generation. SEE_CLK_DIV is locked to
11’h10.
1’b1: 0x7014[21:11] is used as
Default
Name Bits Access Value Description
Page Size 30:28 R/W Depends on These bits indicate the page size of the attached flash
flash device. The are set automatically depending on the
strapping chosen flash as indicated by the strapping option pins
Page sizes are as follows:
000b: 256 bytes
001b: 512 bytes
010b: 1024 bytes
011b: 2048 bytes
100b: 4096 bytes
101b: 264 bytes
110b: 528 bytes
111b: reserved
SW needs to read the page size to determine whether or
not the external Atmel Device is 256Bytes page size or
264Bytes and then program the device accordingly.
Reserved 27 RO Depends on –
Addr
Lockout
state
Reserved - Safe Erase 26 RO 0 –
Flash Size – strap bit 25 RO Pin Set this bit for a 1MB device or 0 for 512KB device
3 Hard Reset, GRC Reset, and setting command register bit
0 will reset this bit to pin strap
Protect Mode – strap 24 RO pin Set this bit for flash devices that implement a write protect
bit 2 function
Hard Reset, GRC Reset, and setting command register bit
0 will reset this bit to pin strap
Strap bit 5 23 RO 0 Always return 0
Strap bit 4 22 RO 0 0 for the following devices: EEPROM-64 kHz, EEPROM –
376 kHz, Microchip 24LC0X – 64 kHz,
Microchip 24LC0x-376 kHz, AtmelAT45DB011B, Atmel
AT25F512, SST25VF512, ST1Mbit, ST MP2505-A
1 for the following devices when Auto-Configure is
enabled
STM45PE10, STM45PE20, STM45PE40, AT45DB011B,
AT45DB021B, and AT45DB041B
Default
Name Bits Access Value Description
SEE_CLK_DIV 21:11 RW 0x10 This field is a divisor used to create all 1x times for all
SEEPROM interface I/O pin timing definitions. A value of
0means that an SCL transitions at a minimum of each XTAL
(25 MHz) rising edge.
The equation to calculate the clock freq. for SCL is:
XTAL_CLK / ((SEE_CLK_DIV + 1) x 4)
Note: SCL is 4 times slower than 1x time. The default value
corresponds to 368 kHz. In order for SCL clock generation
logic to function, the NVRAM controller clock must be
running faster than XTAL_CLK/((SEE_CLK_DIV + 1) x 2). A
minimum delay of 10 NVRAM controller clocks must be
placed between each SEE_CLK_DIV update and an EPROM
access. This is to make sure SEE_CLK_DIV stabilizes and is
safe to use in the CK_25 clock domain.
SPI_CLK_DIV 10:7 RW 4 This field is a divisor used to create all 1x times for all Flash
interface I/O pin timing definitions. A divisor of 0 means
that an SCK transitions at a minimum of each CORE_CLK
rising edge.
The equation to calculate the clock freq. for SCK is:
CORE_CLK / ((SPI_CLK_DIV + 1) * 2)
Note: SCLK is 4 times slower than 1x time. The default
value corresponds to 6.25 MHz
Status 6:4 RW 0 if This field represents the bit offset in the status command
flash_mode response to interpret as the ready flag
7 if
buffer_mod
e
X otherwise
Reserved - Bitbang 3 RO 0 –
Mode
Reserved - Pass 2 RO 0 –
Mode
Buffer Mode 1 RW Pin Enable SSRAM Buffered Interface mode
Flash Mode 0 RW Pin Enable Flash Interface mode
Default
Name Bits Access Value Description
Reserved 31:16 RO 0 –
REQ3 15 RO 0 Software request bit3
1 in this bit indicates that the request5 is active
REQ2 14 RO 0 Software request bit2
1 in this bit indicates that the request5 is active
REQ1 13 RO 0 Software request bit1
1 in this bit indicates that the request5 is active
REQ0 12 RO 0 Software request bit 0
When Req_set0 bit is set, this bit will be set
ARB_WON3 11 RO 0 Arbitration won bit 3 (see Bit 8, ARB_WON0)
ARB_WON2 10 RO 0 Arbitration won bit 2 (see Bit 8, ARB_WON0)
ARB_WON1 9 RO 0 Arbitration won bit 1 (see Bit 8, ARB_WON0)
ARB_WON0 8 RO 0 When req0 arbitration is won, this bit will be read as 1.
When an operation is complete, then Req_clr0 must be
written to clear bit. At that point, the next high priority
arb bit will be set if requested. At any time, only one of
the ARB_WON[5:0] bits will be read as 1.
ARB 0 has the highest priority, and ARB5 has the lowest
priority
REQ_CLR3 7 WO X Write 1 to this bit to clear REQ3 bit
REQ_CLR2 6 WO X Write 1 to this bit to clear REQ2 bit
REQ_CLR1 5 WO X Write 1 to this bit to clear REQ1 bit
REQ_CLR0 4 WO X Write 1 to this bit to clear REQ0 bit
REQ_SET3 3 WO X Write 1 to this bit to set REQ3 bit
REQ_SET2 2 WO X Write 1 to this bit to set REQ2 bit
REQ_SET1 1 WO X Write 1 to this bit to set REQ1 bit
REQ_SET0 0 WO X Set software arbitration request bit 0.
This bit is set by writing 1.
Default
Name Bits Access Value Description
Reserved 31-16 RO 0x0 –
Write Disable 15-8 RW 0x4h Flash write disable command when device with
Command protection function is used. This command will be issued
by the flash interface state machine through SPI interface
To flash device, and make the flash device write-disabled.
Write Enable Command 7-0 RW 0x6h Flash write enable command when device with
protection function is used. This command will be issued
by the flash interface state machine through SPI interface
To flash device, and make the flash device write-enabled.
Default
Name Bits Access Value Description
Auto Config State 12:8 ‘AC_IDLE: 0x0
‘AC_AT_INT_WCSH: 0x14
‘AC_AT_AST_CS: 0x1
‘AC_AT_WCS_SET : 0x2
‘AC_AT_STS_RCMD: 0x3
‘AC_AT_RDATA: 0x4
‘AC_AT_WCLK: 0x5
‘AC_AT_WCS_HLD: 0x6
‘AC_AT_DST_CS: 0x7
‘AC_AT_WCS_MINH: 0x8
‘AC_AT_CHK: 0x9
‘AC_AT_AST_CS2: 0x15
‘AC_AT_WCS_SET2: 0x16
‘AC_AT_SIG_RCMD: 0x17
‘AC_AT_RDATA1: 0x18
‘AC_AT_RDATA2: 0x19
‘AC_AT_RDATA3: 0x1A
‘AC_AT_WCLK2: 0x1B
‘AC_AT_WCS_HLD2: 0x1C
‘AC_AT_DST_CS2: 0x1D
‘AC_AT_WCS_MINH2: 0x1E
‘AC_AT_CHK2: 0x1F
‘AC_ST_AST_CS: 0xA
‘AC_ST_SIG_RCMD: 0xB
‘AC_ST_RDATA1: 0xC
‘AC_ST_RDATA2: 0xD
‘AC_ST_RDATA3: 0xE
‘AC_ST_WCLK: 0xF
‘AC_ST_DST_CS: 0x10
‘AC_ST_WCS_MINH: 0x11
‘AC_ST_CHK: 0x12
‘AC_UPD_RTRY: 0x13
Reserved 7:6 RO 0 –
Auto Config Successful 5 RO 0 Auto Config logic successfully detected a Flash device.
Auto Config Enable 4 RO Depend Auto config feature is enabled through pin strap
on strap
values
Reserved 3:1 RO 0 –
Auto_config_busy 0 RO 0 1: Auto-config FSM is busy
0: Auto-config is complete
BIST Registers
OTP Registers
Host Standard
Region Size NIC CPU View Host Flat View View Host UNDI View
Unmapped 256B 0x00000000- 0x01000000- 0x00000000-* 0x00000000-*
0x000000FF 0x010000FF 0x000000FF 0x000000FF
Send Ring 0 RCB 12B 0x00000100- 0x01000100- 0x00000100-* 0x00000100-*
0x0000010B 0x0100010B 0x0000010B 0x0000010B
Unmapped 4B 0x0000010C- 0x0100010C- 0x0000010C- 0x0000010C-
0x0000010F 0x0100010F 0x0000010F 0x0000010F
Send Ring 1 RCB 12B 0x00000110- 0x01000110- 0x00000110-* 0x00000110-*
0x0000011B 0x0100011B 0x0000011B 0x0000011B
Unmapped 4B 0x0000011C- 0x0100011C- 0x0000011C- 0x0000011C-
0x0000011F 0x0100011F 0x0000011F 0x0000011F
Unmapped 224B 0x00000110- 0x01000110- 0x00000110- 0x00000110-
0x000001FF 0x010001FF 0x000001FF 0x000001FF
Receive Return 8B 0x00000200- 0x01000200- 0x00000200-* 0x00000200-*
Ring 0 RCB 0x00000207 0x01000207 0x00000207 0x00000207
Unmapped 8B 0x00000208- 0x01000208- 0x00000208-* 0x00000208-*
0x0000020F 0x0100020F 0x0000020F 0x0000020F
Receive Return 8B 0x00000210- 0x01000210- 0x00000210-* 0x00000210-*
Ring 1 RCB 0x00000217 0x01000217 0x00000217 0x00000217
Unmapped 8B 0x00000218- 0x01000218- 0x00000218-* 0x00000218-*
0x0000021F 0x0100021F 0x0000021F 0x0000021F
Receive Return 8B 0x00000220- 0x01000220- 0x00000220-* 0x00000220-*
Ring 2 RCB 0x00000227 0x01000227 0x00000227 0x00000227
Unmapped 8B 0x00000228- 0x01000228- 0x00000228-* 0x00000228-*
0x0000022F 0x0100022F 0x0000022F 0x0000022F
Receive Return 8B 0x00000230- 0x01000230- 0x00000230-* 0x00000230-*
Ring 3 RCB 0x00000237 0x01000237 0x00000237 0x00000237
Unmapped 8B 0x00000238- 0x01000238- 0x00000238-* 0x00000238-*
0x0000023F 0x0100023F 0x0000023F 0x0000023F
Unmapped 2.3KB 0x00000240- 0x01000240- 0x00000240- 0x00000240-
0x00000B4F 0x01000B4F 0x00000B4F 0x00000B4F
Software 1KB 0x00000B50- 0x01000B50- 0x00000B50-* 0x00000B50-*
GenComware 0x00000F4F 0x01000F4F 0x00000F4F 0x00000F4F
Gencomm
Unmapped 4KB 0x00000F50- 0x01000F50- 0x00000F50- 0x00000F50-
0x00001FFF 0x01001FFF 0x00001FFF 0x00001FFF
Host Standard
Region Size NIC CPU View Host Flat View View Host UNDI View
Unmapped 8KB 0x00002000- 0x01002000- 0x00002000- 0x00002000-
0x00003FFF 0x01003FFF 0x00003FFF 0x00003FFF
Send Ring 0 1KB 0x00004000- 0x01004000- 0x00004000-* 0x00004000-*
0x000043FF 0x010043FF 0x000043FF 0x000043FF
Send Ring 1 1KB 0x00004400- 0x01004400- 0x00004400-* 0x00004400-*
0x000047FF 0x010047FF 0x000047FF 0x000047FF
Unmapped 6KB 0x00004800- 0x01004800- 0x00004800- 0x00004800-
0x00005FFF 0x01005FFF 0x00005FFF 0x00005FFF
Standard Receive 4KB 0x00006000- 0x01006000- 0x00006000-* 0x00006000-*
Ring 0x00006FFF 0x01006FFF 0x00006FFF 0x00006FFF
Jumbo Receive 4KB 0x00007000- 0x01007000- 0x00007000-* 0x00007000-*
Ring 0x00007FFF 0x01007FFF 0x00007FFF 0x00007FFF
TXMBUF 0 22KB 0x00008000- 0x01008000- 0x00008000-* 0x00008000-*
0x0000D7FF 0x0100D7FF 0x0000D7FF 0x0000D7FF
TXMBUF 1 8KB 0x0000D800- 0x0100D800- 0x0000D800- 0x0000D800-
0x0000F7FF 0x0100F7FF 0x0000F7FF 0x0000F7FF
Unmapped 2KB 0x0000F800- 0x0100F800- 0x0000F800- 0x0000F800-
0x0000FFFF 0x0100FFFF 0x0000FFFF 0x0000FFFF
RX 40KB 0x00010000- 0x01010000- 0x00010000-* 0x00010000-*
MBUFRXMBUF 0x00019FFF 0x01019FFF 0x00019FFF 0x00019FFF
Unmapped 15M+9 0x0001A000- 0x0101A000- 0x0001A000- 0x0001A000-
20KB 0x00FFFFFF 0x01FFFFFF 0x00FFFFFF 0x00FFFFFF
RXCPU Scratch 64KB 0x08000000- – – –
Pad 0x0800FFFF
RXCPU ROM 1.328K 0x40000000- – – –
B 0x4000054F
RXCPU SB ROM 18.672K 0x40000550- – – –
B 0x40004FFF
PCI Configuration 256B 0xC0000000- 0x00000000- 0x00000000- 0x00000000-
0xC00000FF 0x000000FF 0x000000FF 0x000000FF
High Priority 512B – 0x00000200- 0x00000200- 0x00005800-**
Mailbox 0x000003FF 0x000003FF 0x000059FF
Functional 31KB 0xC0000400- 0x00000400- 0x00000400- 0x00000100-**
Registers 0xC0007FFF 0x00007FFF 0x00007FFF 0x00007FFF
Mailboxes 1MB – 0x00100000- – –
0x001FFFFF
RXCPU ROM+SB 20KB 0xC0020000- 0xC0020000-** 0xC0020000-** 0xC0020000-**
ROM 0xC0024FFF 0xC0024FFF 0xC0024FFF 0xC0024FFF
Slave Access
Host Standard
Region Size NIC CPU View Host Flat View View Host UNDI View
Unmapped 44KB 0xC0025000- 0xC0025000-** 0xC0025000-** 0xC0025000-**
0xC002FFFF 0xC002FFFF 0xC002FFFF 0xC002FFFF
RXCPU Scratch 64KB 0xC0030000- 0xC0030000-** 0xC0030000-** 0xC0030000-**
Pad Slave Access 0xC003FFFF 0xC003FFFF 0xC003FFFF 0xC003FFFF
Unmapped 64KB 0xC0040000- 0xC0040000-** 0xC0040000-** 0xC0040000-**
0xC004FFFF 0xC004FFFF 0xC004FFFF 0xC004FFFF
Purpose
This section describes the MII registers of the integrated 10/100/1000T PHY transceiver. The access to the
transceiver registers is provided indirectly through the MII Communication register (see “MII Communication
Register (offset: 0x44C)” on page 367) of the MAC. The transceiver registers are accessed with the PHY_Addr
bit of the MII Communication register set to 0x1. The integrated transceiver contains the set of registers shown
in the tables below.
Address Name
12h Receive_Error_Counter_Register
13h False_Carrier_Sense_Counter_Register
14h Local_Remote_Rcvr_NOT_OK_Counters_Register
15h DSP_Coefficient_Read_Write_Port_Register
16h DSP_Control_Register
17h DSP_Coefficient_Address_Register
18h Auxiliary_Control_Register
Shadow Registers:
001 => 10 BASE-T
010 => Power Control
011 => IP Phone
100 => Misc Test
101 => Misc Test 2
110 => Manual IP Phone seed
111 => Misc Control
19h Auxiliary_Status_Register
1Ah Interrupt_Status_Register
1Bh Interrupt_Mask_Register
Address Name
1Ch Miscellaneous_Shadow_Registers:
00000 => Cabletron LED modes
00001 => DLL Control
00010 => Spare Control 1
00011 => Clock Aligner
00100 => Spare Control 2
00101 => Spare Control 3
00110 => TDR Control 1
00111 => TDR Control 2
01000 => Led Status
01001 => Led Control
01010 => Auto-Power Down
01011 => External Control 1
01100 => External Control 2
01101 => LED Selector 1
01110 => LED Selector 2
01111 => LED GPIO Control/Status
10000 => Reserved
10001 => SerDes 100-FX Status
10010 => SerDes 100-FX Test
10011 => SerDes 100-FX Control
10100 => External SerDes Control
10101 => Sgmii Slave Control
10110 => Misc 1000X Control 2
10111 => Misc 1000X Control
11000 => Auto-Detect SGMII/GBIC
11001 => Test 1000X
11010 => Autoneg 1000X Debug
11011 => Auxiliary 1000X Control
11100 => Auxiliary 1000X Status
11101 => Misc 1000X Status
11110 => Auto-Detect Medium
11111 => Mode Control
1Dh Master_Slave_Seed_Register
Shadow Register:
1 => HCD Status
1Eh Test1_Register
1Fh Test2_Register
00h: MII_Control_Register
Bit Name R/W Default Description
15 RESET R/W 0 1 = PHY Reset
SC 0 = normal operation
14 LOOPBACK R/W intlpbk_def 1 = loopback mode
0 = normal operation
13 SPEED_SELECT_LSB R/W “force_speed0_def & 0.6, 0.13:
(#) ~force_speed1_def” 11 = Reserved
10 = 1000 Mbit/s
01 = 100 Mbit/s
00 = 10 Mbit/s
12 AUTONEGOTIATION_ENABLE R/W “(an_def & ~extlpbk_def) | 1 = auto-negotiation enabled
(#) (mode_sel_def == 2’b11)” 0 = auto-negotiation disabled
11 POWER_DOWN R/W “(mode_sel_def == 2’b01) & 1 = low power mode
~autodet_med_pindef” 0 = normal operation
10 ISOLATE R/W isolate_def 1 = isolate PHY from MII
0 = normal operation
9 RESTART_AUTONEGOTIATIO R/W “anen & restart_anen_pin” 1 = restart auto-negotiation
N (#) SC process
0 = normal operation
8 DUPLEX_MODE R/W dplx_def 1 = full duplex
(#) 0 = half duplex
7 COLLISION_TEST R/W 0 1 = collision test mode enabled
0 = collision test mode disabled
6 SPEED_SELECT_MSB R/W force_speed1_def 0.6, 0.13:
(#) 11 = Reserved
10 = 1000 Mbit/s
01 = 100 Mbit/s
00 = 10 Mbit/s
5 UNIDIRECTIONAL_ENABLE R/W 0 When 0.12=0 AND 0.8=1:
1 = able to transmit packets when
no link
0 = requires link in order to
transmit packets
4:0 RESERVED R/W 000000 write as 0, ignore on read
01h: MII_Status_Register
Bit Name R/W Default Description
15 100BASE_T4_CAPABLE RO 0 1 = 100BASE-T4 capable
L 0 = not 100BASE-T4 capable
14 100BASE_X_FULL_DUPLEX_ RO H 1 1 = 100BASE-X full duplex capable
CAPABLE 0 = not 100BASE-X full duplex capable
13 100BASE_X_HALF_DUPLEX_ RO H 1 1 = 100BASE-X half duplex capable
CAPABLE 0 = not 100BASE-X half duplex capable
12 10BASE_T_FULL_DPLEX_CAPABLE RO H 1 1 = 10BASE-T full duplex capable
0 = not 10BASE-T full duplex capable
11 10BASE_T_HALF_DPLEX_CAPABLE RO H 1 1 = 10BASE-T half duplex capable
0 = not 10BASE-T half duplex capable
10 100BASE_T2_FULL_DUPLEX_ RO 0 1 = 100BASE-T2 full duplex capable
CAPABLE L 0 = not 100BASE-T2 full duplex capable
9 100BASE_T2_HALF_DUPLEX_ RO 0 1 = 100BASE-T2 half duplex capable
CAPABLE L 0 = not 100BASE-T2 half duplex capable
8 EXTENDED_STATUS RO H 1 1 = extended status information in register 0Fh
0 = no extended status info in register 0Fh
7 UNIDIRECTIONAL_CAPABLE RO 1 1 = capable of Unidirectional Transmit
6 MF_PREAMBLE_SUPPRESSION RO H 1 1 = PHY will accept management frames with
preamble suppressed
0 = PHY will not accept management frames
with preamble suppressed
5 AUTO_NEGOTIATION_COMPLETE RO 0 1 = auto-negotiation complete
0 = auto-negotiation in progress
4 REMOTE_FAULT RO LH 0 1 = remote fault detected
0 = no remote fault detected
3 AUTO_NEGOTIATION_ABILITY RO H 1 1 = auto-negotiation capable
0 = not auto-negotiation capable
2 LINK_STATUS RO LL 0 1 = link pass
0 = link fail
1 JABBER_DETECT RO LH 0 1 = jabber condition detected
0 = no jabber condition detected
0 EXTENDED_CAPABILITY RO H 1 1 = extended register capabilities supported
0 = basic register set capabilities only
02h: PHY_Identifier_MSB_Register
Bit Name R/W Default Description
15:0 OUI_MSB RO 0362h Bits 3:18 of organizationally unique identifier
03h: PHY_Identifier_LSB_Register
Bit Name R/W Default Description
15:10 OUI_LSB RO 010111 Bits 19:24 of organizationally unique identifier
9:4 MODEL RO see chart Device model number (metal programmable)
BCM54680 = 011100
BCM54880 = 011110
BCM54640 = 011011
BCM54685 = 011101
BCM54881 = 011111
BCM57785 Family GPHY = 100000
3:0 REVISION RO 0000 Device revision number (metal programmable)
04h: Auto_Negot_Advertisement_Register
Bit Name R/W Default Description
15 NXT_PAGE R/W 0 1 = next page ability supported
0 = next page ability not supported
14 RESERVED R/W 0 write as 0, ignore on read
13 REMOTE FAULT R/W 0 1 = advertise remote fault detected
0 = advertise no remote fault detected
12 RESERVED R/W 0 write as 0, ignore on read
11 ASYMMETRIC_PAUSE R/W asym_pause_def 1 = Advertise asymmetric pause
0 = Advertise no asymmetric pause
10 PAUSABLE R/W pause_def 1 = capable of full duplex Pause operation
0 = not capable of Pause operation
9 100BASET4_CAPABLE R/W 0 1 = 100BASE-T4 capable
0 = not 100BASE-T4 capable
8 100BASETX_FULL_ R/W “dplx_def & (f1000 | 1 = 100BASE-TX full duplex capable
DUPLEX_CAPABLE spd0) & 0 = not 100BASE-TX full duplex capable
(#) ~((mode_sel_def ==
2’b11) | (f1000 &
spd0) |
(en10b &
~mode_sel_def[1]))”
05h: Auto_Negot_Link_Partner_Ability_Base_Pg_Register
Bit Name R/W Default Description
15 NEXT_PAGE RO 0 1 = link partner is next page able
0 = link partner is not next page able
14 ACKNOWLEDGE1 RO 0 1 = link partner has received link code word
0 = link partner has not received link code word
13 REMOTE_FAULT RO* 0 1 = link partner has detected remote fault
0 = link partner has not detected remote fault
12 RESERVED RO* 0 write as 0, ignore on read
11 LINK_PARTNER_ASYMMETRIC RO* 0 link partner’s asymmetric pause bit
_PAUSE
10 PAUSE_CAPABLE RO* 0 1 = link partner is capable of Pause operation
0 = link partner not capable of Pause operation
9 100BASE_T4_CAPABLE RO* 0 1 = link partner is 100BASE-T4 capable
0 = link partner is not 100BASE-T4 capable
8 100BASE_TX_FULL_DUPLEX_ RO* 0 1 = link partner is 100BASE-TX full duplex capable
CAPABLE 0 = link partner is not 100BASE-TX full duplex capable
7 100BASE_TX_HALF_DUPLEX_ RO* 0 1 = link partner is 100BASE-TX half duplex capable
CAPABLE 0 = link partner is not 100BASE-TX half duplex capable
06h: Auto_Negot_Expansion_Register
Bit Name R/W Default Description
15:7 RESERVED RO 000h ignore on read
6 NEXT_PAGE_RECEIVE_LOCATION_ RO H 1 1 = register 6.5 determines next page receive
ABLE location
0 = register 6.5 does not determine next
page receive location
5 NEXT_PAGE_RECEIVE_LOCATION RO H 1 1 = next pages stored in register 8
0 = next pages stored in register 5
4 PARALLEL_DETECTION_FAULT RO LH 0 1 = parallel detection fault
0 = no parallel detection fault
3 LINK_PARTNER_NEXT_PAGE_ABILITY RO 0 1 = link partner is next page able
0 = link partner is not next page able
2 NEXT_PAGE_ABILITY RO H 1 1 = local device is next page able
0 = local device is not next page able
1 PAGE_RECEIVED RO LH 0 1 = new link code word has been received
0 = new link code word has not been
received
0 LINK_PARTNER_AUTONEG_ABILITY RO 0 1 = link partner is auto-negotiation able
0 = link partner is not auto-negotiation able
08h: Auto_Negot_Link_Partner_Ability_Nxt_Pg_Register
Bit Name R/W Default Description
15 NEXT_PG RO 0 1 = additional next pages will follow
0 = sending last page
14 ACKNOWLEDGE3 RO 0 1 = acknowledge
0 = no acknowledge
13 MESSAGE_PG RO 0 1 = message page
0 = unformatted page
12 ACKNOWLEDGE_2 RO 0 1 = will comply with message (not used during 1000BASE-
T next pages)
0 = cannot comply with message
11 TOGGLE2 RO 0 1 = sent 0 during previous Link Code Word
0 = sent 1 during previous Link Code Word
10:0 CODEFIELD RO* 0 Message code field or unformatted code field
* R/W when “writeable link partner ability test mode” (reg 1Fh bit 10) is set
When reg 1Fh bit 8 is set, the link partner random seed can be written in bits 10:0 (write only)
09h: 1000Base_T_Control_Register
Bit Name R/W Default Description
15:13 TEST_MODE R/W 000 1xx = Test Mode 4
011 = Test Mode 3
010 = Test Mode 2
001 = Test Mode 1
000 = Normal Operation
12 MASTER_SLAVE_CONFIG_ R/W manms_def 1 = enable Master/Slave manual config
ENABLE value
(#) 0 = disable Master/Slave manual config
value
11 MASTER_SLAVE_CONFIG_ R/W hub_def 1 = configure PHY as Master when 9.12 is
VALUE set
(#) 0 = configure PHY as Slave when 9.12 is
set
0Ah: 1000Base_T_Status_Register
Bit Name R/W Default Description
15 MASTER_SLAVE_CONFIG_FAULT RO 0 1 = Master/Slave configuration fault detected
LH 0 = no Master/Slave configuration fault detected
(#) (cleared by restart_an, an_complete or reg read)
14 MASTER_SLAVE_CONFIG_RESO RO 0 1 = local PHY configured as Master
LUTION 0 = local PHY configured as Slave
13 LOCAL_RECEIVER_STATUS RO 0 1 = local receiver status OK
0 = local receiver status not OK
12 REMOTE_RECEIVER_STATUS RO 0 1 = remote receiver status OK
0 = remote receiver status not OK
11 LINK_PARTNER_1000BASE- RO* 0 1 = link partner is 1000BASE-T full duplex capable
T_FULL_DUPLEX_CAPABLE 0 = link partner is not 1000BASE-T full duplex
capable
10 LINK_PARTNER_1000BASE_T_H RO* 0 1 = link partner is 1000BASE-T half duplex capable
ALF_DUPLEX_CAPABLE 0 = link partner is not 1000BASE-T half duplex
capable
9:8 RESERVED RO 00h ignore on read
7:0 IDLE_ERROR_COUNT RO 00h Number of idle errors since last read
CR
(#)=not LH & *=R/W when “writeable link partner ability test mode” (reg 1Fh bit 10) is set
0Fh: IEEE_Extended_Status_Register
Bit Name R/W Default Description
15 1000BASE_X_FULL_DUPLEX_ RO L 0 1 = 1000BASE-X full duplex capable
CAPABLE 0 = not 1000BASE-X full duplex capable
14 1000BASE_X_HALF_DUPLEX_ RO L 0 1 = 1000BASE-X half duplex capable
CAPABLE 0 = not 1000BASE-X half duplex capable
13 1000BASE_T_FULL_DUPLEX_ RO H 1 1 = 1000BASE-T full duplex capable
CAPABLE 0 = not 1000BASE-T full duplex capable
12 1000BASE_T_HALF_DUPLEX_ RO H 1 1 = 1000BASE-T half duplex capable
CAPABLE 0 = not 1000BASE-T half duplex capable
11:0 RESERVED RO 000h ignore on read
10h: PHY_Extended_Control_Register
Bit Name R/W Default Description
15 MAC_PHY_INTERFACE_MODE R/W “en10b_def & 1 = 10B interface mode
~mode_sel_def[1] & 0 = GMII mode
~autodet_med_pinde
f”
14 DISABLE_AUTOMATIC_MDI_ R/W mdix_disable_def 1 = automatic MDI crossover
CROSSOVER disabled
0 = automatic MDI crossover
enabled
13 TRANSMIT_DISABLE R/W 0 1 = force transmit output to high
impedance
0 = normal operation
12 INTERRUPT_DISABLE R/W 0 1 = interrupts disabled
0 = interrupts enabled
11 FORCE_INTERRUPT R/W 0 1 = force interrupt status to
“active”
0 = normal interrupt operation
10 BYPASS_ENCODER R/W 0 1 = bypass 4B5B encoder and
decoder
0 = normal operation
9 BYPASS_SCRAMBLER R/W 0 1 = bypass scrambler and
descrambler
0 = normal operation
8 BYPASS_NRZI_MLT3 R/W 0 1 = bypass NRZI/MLT3 encoder
and decoder
0 = normal operation
7 BYPASS_ALIGNMENT R/W 0 1 = bypass receive symbol
alignment
0 = normal operation
6 RESET_SCRAMBLER R/W 0 1 = reset scrambler to all 1’s state
SC 0 = normal scrambler operation
5 ENABLE_LED_TRAFFIC_MODE R/W 0 1 = LED traffic mode enabled
0 = LED traffic mode disabled
4 FORCE_LEDS_ON R/W 0 1 = force all LED’s into “ON” state
0 = normal LED operation
3 FORCE_LEDS_OFF R/W 0 1 = force all LED’s into “OFF”
state
0 = normal LED operation
12h: Receive_Error_Counter_Register
Bit Name R/W Default Description
15:0 RECEIVE_ERROR_COUNTER R/W CR 0000h Number of non-collision packets with receive errors
since last read. Freezes at FFFFh.
(Counts SerDes errors when register 1ch shadow
“11011” bit 9 = 1 otherwise copper errors)
13h: False_Carrier_Sense_Counter_Register
Bit Name R/W Default Description
15:8 SERDES_BER_COUNTER RO 00h Number of invalid code groups received while
sync_status = 1 since last cleared.
Cleared by writing expansion register 4D bit 15 =
1
7:0 FALSE_CARRIER_SENSE_COUNTER R/W 00h Number of false carrier sense events since last
# (TX ERROR COUNTER) CR read. Counts packets received with transmit
error codes when TXERVIS bit in test register is
set. Freezes at FFh.
(Counts SerDes errors when register 1ch shadow
“11011” bit 9 = 1 otherwise copper errors)
14h: Local_Remote_Receiver_NOT_OK_Counters_Register
Bit Name R/W Default Description
15:8 LOCAL_RECEIVER_NOT_OK_COUNTER R/W 00h number of times local receiver status was
CR not OK since last read. Freezes at FFh.
7:0 REMOTE_RECEIVER_NOT_OK_ R/W 00h number of times remote receiver status
COUNTER CR was not OK since last read. Freezes at FFh.
15:0 CRC_ERROR_COUNTER R/W 0000h when CRC error count visibility test mode is
CR set, this reg becomes a 16 bit CRC error
counter. Freezes at FFFFh.
(Counts SerDes errors when register 1ch
shadow “11011” bit 9 = 1 otherwise copper
errors)
Make 100BASE-TX local receiver status signal and front end reset that works more like 1000BASE-T (no drop in
link unless maxwait_timer expires). Use this counter to replace the watchdog timeout count used in 5203 PHY
status register.
15h: DSP Coefficient Read/Write Port (when filter select is not “0000”)
The DSP coefficient selected in the DSP control register will be mapped to this address. The register may be
directly read or written via management accesses to this port.
The SM_DSP clock must be enabled (18-0.11) before writing to these registers.
When reading or writing the echo, next, or dfe filters some overhead is required:
• There is an internal RAM located between the filter and the serial management interface. The serial
management interface does not interface to the filter directly and can only be accessed with the macro
operations located in register 16h [12, 9:4].
• Read/writes to register 15h access the RAM only. The upper word select is toggled every other access. The
tap address is the ram address currently accessed. It increments every other access automatically.
• The busy bit should be polled to guarantee the operation is complete before continuing.
For BCM57785 Family GPHY, 1Ch, shadow register from 01 to 1F will not be reset by reg0[15]
1Eh: Test1_Register
Bit Name R/W Description Default
15 CRC ERROR COUNT R/W 1 = receiver NOT_OK counters merged into one 16 bit 0
VISIBILITY counter to count CRC errors instead
(crc errors will only be counted after this bit is set!)
0 = normal operation
14 TRANSMIT ERROR CODE R/W 1 = false carrier sense counter counts packets received 0
VISIBILITY with transmit error codes instead
(errors will only be counted after this bit is set!)
0 = normal operation
13 COUNTER TEST MODE R/W 1 = forces counters into test mode 0
0 = normal operation
12 FORCE LINK R/W 1 = force link state machine into pass state 0
0 = normal operation
11 FORCE LOCK R/W 1 = force descrambler in to locked state 0
0 = normal operation
10 SCRAMBLER TEST R/W 1 = speed up descrambler unlock detect timer 0
0 = normal operation
9 EXTERNAL LINK R/W 1 = use tpin11 input as link status 0
0 = normal operation
8 FAST TIMERS R/W 1 = timers are sped up for LSI test 0
0 = normal operation
7 MANUAL SWAP MDI R/W 1 = Swap 0
STATE 0 = off
6 RECEIVE WATCHDOG R/W 1 = watchdog timer disabled 0
TIMER DISABLE 0 = reset receive PMD when descrambler can’t lock within
730us of link or lock loss.
5 DISABLE POLARITY R/W 1 = disable 1000BASE-T polarity encoding 0
ENCODE 0 = normal operation
1Fh: Test2_Register
Bit Name R/W Description Default
15:13 TEST SELECT AUTONEG R/W 000 = ARB 000
FSM 001 = RX1000
010 = RX
011 = TX1000
100 = TX
101 = BASET LINK
12 TEST AUTO-NEG TIMER R/W 1 = auto-negotiation timer test mode 0
0 = normal operation
11 TEST MASTER/SLAVE SEED R/W 1 = use MDIO programmable master/slave seed 0
0 = normal operation
10 WRITEABLE LINK PARTNER R/W 1 = link partner advertised ability may be overwritten by 0
ABILITY MII management
0 = normal operation
9 FORCE HCD R/W 1 = force auto-negotiation HCD resolution 0
(hcd can only be checked in register 19h bits [10:8]; hcd
status register will not be updated)
0 = normal operation
8 WRITEABLE LINK PARTNER R/W 1 = link partner master/slave seed may be overwritten by 0
M/S SEED MII management
0 = normal operation
7 TRANSMIT 10B MODE R/W 1 = force GMII transmit into 10B mode 0
0 = use normal mode bit
6 RECEIVE 10B MODE R/W 1 = force GMII receive into 10B mode 0
0 = use normal mode bit
Clause 45 Registers
Clause 45 registers are accessed in the Clause 22 register space according to the method in Clause 22.2.4.3.11-
12 and Annex 22D.
Example: To advertise that EEE mode is supported for 1000BASE-T and 100BASE-TX, Clause 45 Dev 7.3Ch
bits 2:1 must be set to 11. To perform this write, the following sequence may be used:
• In register 0Dh, write bits 15:14 = 00 (set the function field to Address) and set bits 4:0 to ‘00111’ (set
DEVAD to 7) (write 007h to Register 0Dh).
• In register 0Eh, write the desired address value. In this example, write 003Ch to Register 0Eh
• In register 0Dh, write the Function field (bits 15:14) to 01 for Data, no post increment. Set DEVAD to 7.
(Write 4007h to Register 0Dh)
• In register 0Eh, write the content of the register. (Write to Register 0Eh to 0006h to set bits 2:1 = 11)
To read the EEE Resolution Status Register (Clause 45 DEV 7 Reg803Eh), the following register sequence may
be followed:
• Write bits 15:14 to 00 to register 0Dh to set the function field to Address, and set bits 4:0 to ‘00111’ to set
DEVAD to 7
• Write 803Eh to register 0Eh to select the EEE Resolution Status Register
• Write 4007h to register 0Dh to set the Function to Data, no post increment and to set the Device Address
to 7
• Read register 0Eh to read the content of the selected Clause 45 register (EEE Resolution Status Register in
this case).
1000BASE-T EEE
This bit, when set, turns on advertisement for 1000BASE-T EEE mode. EEE mode is turned off by default.
Register 09h bits 9:8 must be set to advertise 1000BASE-T mode and auto-negotiation must be restarted for
EEE mode to take effect.
100BASE-TX EEE
This bit, when set, turns on advertisement for 100BASE-TX EEE mode. EEE mode is turned off by default.
Register 04h bits 8:7 must be set to advertise 100BASE-TX mode and auto-negotiation must be restarted for
EEE mode to take effect.
Note: Refer to the CR standard register definitions for all CR registers not documented in this
Programmer's Guide. One source for this information for SD cards can be found here: http://
www.sdcard.org/developers/tech/host_controller/simple_spec.
IP Control/Status Register[0x193-0x190]
Reset
Signal Name Bit Field Attribute Value Description
Reserved for Internal 31:0 RW 0 Internal debug for SD3.0
Debug SD3.0
Reset
Signal Name Bit Field Attribute Value Description
DDR50 Support 31 RW 1 1: DDR50 is supported
0: DDR50 is not supported
SDR104 Support 30 RW 1 1: SDR104 is supported
0: SDR104 is not supported
SDR50 Support 29 RW 1 If SDR104 is supported, this bit shall be set to 1.
Bit 40 indicates whether SDR50 requires tuning
or not.
1: SDR50 is supported
0: SDR50 is not supported
Slot Type 28:27 RW 0 This field indicates usage of a slot by a specific
host system. (A host controller register set is
defined per slot.) Embedded slot for one device
(01b) means that only one nonremovable device
is connected to a SD bus slot. Shared bus slot
(10b) can be set if host controller supports
Shared BusControl register.
The standard host driver controls only a
removable card or one embedded device is
connected to a SD bus slot. If a slot is configured
for shared bus (10b), the standard host driver
does not control embedded devices connected
to a shared bus. Shared bus slot is controlled by
a specific host driver developed by a host
system.
00: Removable card slot
01: Embedded slot for one device
10: Shared bus slot
11: Reserved
Asynchronous 26 RW 0 Refer to SDIO Specification version 3.00 about
Interrupt Support asynchronous interrupt.
1: Asynchronous interrupt supported
0: Asynchronous interrupt not supported
64-bit System Bus 25 RW 0 1: Supports 64 bit system address
Support 0: Does not support 64 bit system address
Voltage Support 1.8V 24 RW 1 0: 1.8V not supported
1: 1.8V supported
Voltage Support 3.0V 23 RW 1 0: 3.0V not supported
1: 3.0V supported
Voltage Support 3.3V 22 RW 1 0: 3.3V not supported
1: 3.3V supported
Reset
Signal Name Bit Field Attribute Value Description
Suspend/Resume 21 RW 1 This bit indicates whether the HC supports
Support suspend/resume functionality. If this bit is 0, the
suspend and resume mechanism is not
supported, the HD does not issue either
suspend/resume commands.
0: Not supported
1: Supported
SDMA Support 20 RW 1 This bit indicates whether the HC is capable of
using DMA to transfer data between system
memory and the HC directly.
0: SDMA not supported
1: SDMA supported
High Speed Support 19 RW 1 This bit indicates whether the HC and the host
system support High Speed mode and they can
supply SD clock frequency from 25 MHz to 50
MHz (for SD)/
20 MHz to 52 MHz (for MMC).
0: High speed not supported
1: High speed supported
ADMA2 Support 18 RW 1 1: ADMA2 supported
0: ADMA2 not supported
Extended media 17 RW 1 This bit indicates whether the host controller is
Support capable of using 8-bit bus width mode. This bit is
not effective when slot type is set to 10b. In this
case, refer to bus width preset in the Shared Bus
resister.
1: Extended media bus supported
0: Extended media bus not supported
Max Block Length 16:15 RW 2'b10 This value indicates the maximum block size that
the HD can read and write to the buffer in the
HC. The buffer shall transfer this block size
without wait cycles. Three sizes can be defined
as indicated below:
00: 512 byte
01: 1024 byte
10: 2048 byte
11: 4096 byte
Reset
Signal Name Bit Field Attribute Value Description
Base Clock Frequency 14:7 RW 8'h32 (1) 6-bit base clock freq. This mode is supported
for SD Clock by the host controller version 1.00 and 2.00.
Upper 2-bit is not effective and always 0. Unit
values are 1 MHz. The supported clock range is
10 MHz to 63 MHz:
11xx xxxx: Not supported
0011 1111: 63 MHz
0000 0010: 2 MHz
0000 0001: 1 MHz
0000 0000: Get information via another method
(2) 8-bit base clock freq. This mode is supported
by the host controller version 3.00. Unit values
are 1 MHz. The supported clock range is 10 MHz
to 255 MHz:
8'hFF: 255 MHz
………
………
……….
8'h02: 2 MHz
8'h01: 1 MHz
8'h00: Get information via another method
If the real frequency is 16.5 MHz, the lager value
is set 00010001b (17 MHz) because the host
driver uses this value to calculate the clock
divider value (refer to the SDCLK Frequency
Select in the Clock Control register), and it does
not exceed upper limit of the SD clock
frequency. If these bits are all 0, the host system
has to get information via another method.
Timeout Clock Unit 6 RW 1 This bit shows the unit of base clock frequency
used to detect data timeout error.
0: kHz
1: MHz
Timeout Clock 5:0 RW 6'h30 This bit shows the base clock frequency used to
Frequency detect data timeout error.
Not 0: 1 kHz to 63 kHz or 1 MHz to 63 MHz
000000: Get Information via another method
Reset
Signal Name Bit Field Attribute Value Description
SD base clockfreq 31 RW 0 0: Selects the SD clock base frequency value
override bit based on the CPMU clock control two bits
1: Selects the SD clock base frequency value
programmed in the offset 0x1A0[14:7]
Reserved 30:20 R 0 Reserved
SPI block mode 19 RW 1 Spi block mode
support 0: Not Supported
1: Supported
SPI mode support 18 RW 1 Spi mode
0: Not supported
1: Supported
Clock Multiplier 17:10 RW 0 This field indicates clock multiplier value of
programmable clock generator. Refer to the
Clock Control register.
Setting 00h means that host controller does not
support programmable clock generator.
8'hFF: Clock multiplier M = 256
...........
.............
..............
8'h02: Clock multiplier M = 3
8'h01: Clock multiplier M = 2
8'h00: Clock multiplier is not supported
Re-Tuning modes 9:8 RW 0 This field defines the retuning capability of a
host controller and how to manage the data
transfer length and a retuning timer by the host
driver:
00: Mode1
01: Mode2
10: Mode3
11: Mode4
There are two retuning timings:
Retuning Request and expiration of a retuning
timer. By receiving either timing, the host driver
executes the retuning procedure just before a
next command issue.
Use Tuning for SDR50 7 RW 1 If this bit is set to 1, this host controller requires
tuning to operate SDR50. (Tuning is always
required to operate SDR104.)
1: SDR50 requires tuning
0: SDR50 does not require tuning
Reset
Signal Name Bit Field Attribute Value Description
Timer count for 6:3 RW 4'h1 This field indicates an initial value of the
Retuning retuning timer for retuning mode 1 to 3.
4'h0: Get information via other source
4'h1: 1 seconds
4'h2: 2 seconds
4'h3: 4 seconds
4'h4: 8 seconds
…….
……..
………
n = 2(n-1) seconds
…….
…….
4'hB: 1024 seconds
4'hC – 4'hF:Reserved
Driver Type D Support 2 RW 1 This bit indicates support of driver type D for 1.8
signaling.
1: Driver type D is supported.
0: Driver type D is not supported.
Driver Type C Support 1 RW 1 This bit indicates support of driver type C for 1.8
signaling.
1: Driver type C is supported.
0: Driver type C is not supported.
Driver Type A Support 0 RW 1 This bit indicates support of driver type A for 1.8
Signaling.
1: Driver type A is supported.
0: Driver type A is not supported.
Reset
Signal Name Bit Field Attribute Value Description
DDR50 Support 31 RW 1 1: DDR50 is supported
0: DDR50 is not Supported
SDR104 Support 30 RW 1 1: SDR104 is supported
0: SDR104 is not supported
SDR50 Support 29 RW 1 If SDR104 is supported, this bit is set to 1. Bit 40
indicates whether SDR50 requires tuning or not.
1: SDR50 is supported
0: SDR50 is not supported
Slot Type 28:27 RW 0 This field indicates usage of a slot by a specific
host system. (A host controller register set is
defined per slot.) Embedded slot for one device
(01b) means that only one nonremovable device
is connected to a SD bus slot. Shared bus slot
(10b) can be set if host controller supports
Shared BusControl register.
The standard host Driver controls only a
removable card or one embedded device is
connected to a SD bus slot. If a slot is configured
for shared bus (10b), the standard host driver
does not control embedded devices connected
to a shared bus. Shared bus slot is controlled by
a specific host driver developed by a host
system.
00: Removable card slot
01: Embedded slot for one device
10: Shared bus slot
11: Reserved
Asynchronous 26 RW 0 Refer to SDIO Specification version 3.00 about
Interrupt Support asynchronous interrupt.
1: Asynchronous interrupt supported
0: Asynchronous interrupt not supported
64-bit System Bus 25 RW 0 1: Supports 64 bit system address
Support 0: Does not support 64 bit system address
Voltage Support 1.8V 24 RW 1 0: 1.8V not supported
1: 1.8V supported
Voltage Support 3.0V 23 RW 1 0: 3.0V not supported
1: 3.0V supported
Voltage Support 3.3V 22 RW 1 0: 3.3V not supported
1: 3.3V supported
Reset
Signal Name Bit Field Attribute Value Description
Suspend/Resume 21 RW 1 This bit indicates whether the HC supports
Support suspend/resume functionality. If this bit is 0, the
suspend and resume mechanism is not
supported, and the HD does not issue either
suspend/resume commands.
0: Not supported
1: Supported
SDMA Support 20 RW 1 This bit indicates whether the HC is capable of
using DMA to transfer data between system
memory and the HC directly.
0: SDMA not supported
1: SDMA supported.
High Speed Support 19 RW 1 This bit indicates whether the HC and the host
system support High Speed mode and they can
supply SD clock frequency from 25 MHz to 50
MHz (for SD)/
20 MHz to 52 MHz (for MMC).
0: High speed not supported
1: High speed supported
ADMA2 Support 18 RW 1 1: ADMA2 support
0: ADMA2 not support
Extended Media 17 RW 1 This bit indicates whether the host controller is
Support capable of using 8-bit bus width mode. This bit is
not effective when slot type is set to 10b. In this
case, refer to bus width preset in the Shared Bus
resister.
1: Extended media bus supported
0: Extended media bus not supported
Max Block Length 16:15 RW 2'b10 This value indicates the maximum block size that
the HD can read and write to the buffer in the
HC.
The buffer shall transfer this block size without
wait cycles. Three sizes can be defined as
indicated below.
00: 512 byte
01: 1024 byte
10: 2048 byte
11: 4096 byte
Reset
Signal Name Bit Field Attribute Value Description
Base Clock Frequency 14:7 RW 8'h32 (1) 6-bit base clock freq. This mode is supported
for SD Clock by the host controller version 1.00 and 2.00.
Upper 2-bit is not effective and always 0. Unit
values are 1 MHz. The supported clock range is
10 MHz to 63 MHz:
11xx xxxx: Not supported
0011 1111: 63 MHz
0000 0010: 2 MHz
0000 0001: 1 MHz
0000 0000: Get information via another method
(2) 8-bit base clock freq. This mode is supported
by the host controller version 3.00. Unit values
are 1 MHz. The supported clock range is 10 MHz
to 255 MHz:
8'hFF: 255 MHz
………
………
……….
8'h02: 2 MHz
8'h01: 1 MHz
8'h00: Get information via another method
If the real frequency is 16.5 MHz, the lager value
is set 00010001b (17 MHz) because the host
driver uses this value to calculate the clock
divider value (refer to the SDCLK Frequency
Select in the Clock Control register), and it does
not exceed upper limit of the SD clock
frequency. If these bits are all 0, the host system
has to get information via another method.
Timeout Clock Unit 6 RW 1 This bit shows the unit of base clock frequency
used to detect data timeout error.
0: kHz
1: MHz
Timeout Clock 5:0 RW 6'h30 This bit shows the base clock frequency used to
Frequency detect data timeout error.
Not 0: 1 kHz to 63 kHz or 1 MHz to 63 MHz
000000: Get Information via another method
Reset
Signal Name Bit Field Attribute Value Description
Host spec version 31 RW 0 0: Selects the host control version based on the
control Register CPMU clock control bits
Override bit for MS 1: Selects the Host version control value from offset
and MSPro 0x1AC[30:23]
Host spec version 30:23 RW 0 8-bit spec version control value
control value
Reserved 22:20 R 0 Reserved
SPI block mode 19 RW 1 Spi block mode:
support 0: Not supported
1: Supported
SPI mode support 18 RW 1 Spi mode:
0: Not supported
1: Supported
Clock Multiplier 17:10 RW 0 This field indicates clock multiplier value of
programmable clock generator. Refer to the Clock
Control register.
Setting 00h means that host controller does not
support programmable clock generator.
8'hFF: Clock multiplier M = 256
...........
.............
..............
8'h02: Clock multiplier M = 3
8'h01: Clock multiplier M = 2
8'h00: Clock multiplier is not supported
Re-Tuning modes 9:8 RW 0 This field defines the retuning capability of a host
controller and how to manage the data transfer
length and a retuning timer by the host driver:
00: Mode1
01: Mode2
10: Mode3
11: Mode4
There are two retuning timings:
Retuning request and expiration of a retuning timer.
By receiving either timing, the host driver executes
the retuning procedure just before a next command
issue.
Use Tuning for SDR50 7 RW 1 If this bit is set to 1, this host controller requires
tuning to operate SDR50. (Tuning is always required
to operate SDR104.)
1: SDR50 requires tuning
0: SDR50 does not require tuning
Reset
Signal Name Bit Field Attribute Value Description
Timer count for 6:3 RW 4'h1 This field indicates an initial value of the retuning
retuning timer for retuning mode 1 to 3.
4'h0: Get information via other source
4'h1: 1 seconds
4'h2: 2 seconds
4'h3: 4 seconds
4'h4: 8 seconds
…….
……..
………
n = 2(n-1) seconds
…….
…….
4'hB: 1024 seconds
4'hC - 4'hF: Reserved
Driver Type D Support 2 RW 1 This bit indicates support of driver type D for 1.8
signaling.
1: Driver type D is supported
0: Driver type D is not supported
Driver Type C Support 1 RW 1 This bit indicates support of driver type C for 1.8
signaling.
1: Driver type C is supported
0: Driver type C is not supported
Driver Type A Support 0 RW 1 This bit indicates support of driver type A for 1.8
signaling.
1: Driver type A is supported
0: Driver type A is not supported
Reset
Signal Name Bit Field Attribute Value Description
Reserved for Internal 31:0 RW 0 Preset values for SD3.0
Debug SD3.0
Reset
Signal Name Bit Field Attribute Value Description
Reserved for Internal 31:0 RW 0 Preset values for SD3.0
Debug SD3.0
A p p e n d i x A : F l o w C o nt rol
Notes
Developers can refer to the IEEE 802.3 Annex 31B specification for detailed information on Ethernet flow
control mechanisms.
• Flow control frames use a well-known multicast address, defined in the 802.1D Bridging specification The
MAC destination address is 01-80-C2-00-00-01
• Bridges and Switches will not forward pause frames to downstream ports.
• A pause frame contains a request_operand that contains a pause_time field. Pause_time specifies the
number of quanta, which transmission should be inhibited.
• Pause frames cannot inhibit MAC control Frames
• Pause_time is a two-octet field, which represents a quanta value. The quanta value is based on bit/slot
times for the connection speed. Valid pause_times vary from 0 to 65535.
• The pause frame contains a MAC control opcode. 00-01 is reserved for PAUSE MAC control functions.
• MAC control layers will provide two indicators—paused and not paused.
• The Enet source address equals the unicast address of the MAC sublayer, which transmits the
pause_frame.
• The receive engine will set a countdown timer, based on the value of pause_time. When the timer expires,
the transmit engine may resume send operation
• A Mac sublayer may transmit pause frames with pause_time = 0. The zero value will stop a pause count
down, executed by the MAC’s link partner. Effectively, a value of zero restarts a link partner’s transmit
engine, assuming the link partner was inhibited by a previous pause operation.
– Either half/full-duplex connection at Gigabit speed (i.e., this scenario will cover two subcases).
File Transfer
The client begins a FTP session (see Figure 66). The file size is very large and will take several minutes for a
complete transfer, even at gigabit wire speed.
File Transfer
File
Switch
Gigabit Server Gigabit Client
Speed Mismatch
The Client sends pause frame(s) to the switch (see Figure 67). The Client’s pipe has been saturated, and the RX
buffers are almost exhausted. The Client begins sending pause frames, when the RX buffer high-water mark/
threshold is hit. Any number of reasons can account for the RX buffer issue. The assumption will be made that
the Client PCI bus lack bandwidth to DMA packets, at wire speed, to host memory. The user may be playing a
DVD, for example.
Pause packets
Switch
Gigabit Server Gigabit Client
Client
Ingres Server Egres
Port
Port
MAC Sublayer
Switch
Switch Backpressure
The Switch will jam ports configured with half-duplex link to slow frame transmission (see Figure 69). In this
case, the Server connection must be half-duplex, and then the switch may apply backpressure to the port. The
Switch will transmit a jamming pattern, which will prevent the Server from transmitting further packets. The
Server’s MAC will detect a collision situation, and will back off for a specified interval. The Switch will continue
to apply backpressure to the Server Ingress, until the Client egress is available. The Client port will be available
when the pause interval expires, and no further pause packets are sent by the Gigabit Client.
Jamming
Switch
Gigabit Server Gigabit Client
Empty Buffered
Frames
Pause packets
Switch
Gigabit Server Gigabit Client
Empty Buffered
Frames
File
Switch
Gigabit Server Gigabit Client
Pause Frame
Source address XX XX XX XX XX XX
6 bytes
LL/Type 2 bytes 88 08
Multicast address
MAC control opcode 2 bytes 00 01
Source address
MAC control parameters 2 bytes 00 10
Pause frame opcode
64 bytes - 20 bytes -
Delay 10 Quanta (Slot times)
mac_ctrl_parm_len
Ap pe n di x B : Te rmi no l o g y
Term Definition
BD Buffer Descriptor.
Deferred Procedure Call The ISR may schedule a O/S callback to process interrupts at a later time.
(DPC)
Expansion ROM PCI devices may optionally expose device specific programs to BIOS. For
example, network devices may place PXE boot code in their expansion ROM
region.
Host Coalescing A hardware block which the Ethernet controller status block. The hardware will
drive a line interrupt or MSI.
Interrupt Distribution Queue The Ethernet controller supports four interrupt distribution queues per class of
service. The rules engine may place traffic into RX return rings based on rules
checking. Within each class of service, the traffic may further be organized in
Interrupt Distribution Queues. For example, frames with errors may be given
lower data path priority over frames without errors, all within the same class of
service (RX Return Ring).
Interrupt Service Routine A procedure where device interrupts are processed.
(ISR)
Pre-boot execution (PXE) An industry-standard client/server interface that allows networked computers
that are not yet loaded with an operating system to be configured and booted
remotely.
Receive BD Initiator The hardware block that DMA’s BDs when receive ring indices are written.
Receive Data and Receive BD The hardware block the updates packet buffers, in host memory, after an
Initiator Ethernet frame is received. The hardware block will also update the BD with
information like checksum and VLAN Tags.
Receive Data Completion The hardware block that updates the host coalescing engine after the packet
buffers and BD are DMAed to host memory.
Receive Queue Placement The hardware block that routes a categorized frame to one of sixteen RX Return
rings.
Send BD Initiator The hardware block that is activated when a Send producer index is updated by
host software. The hardware block will DMA a BD from host memory.
Send Data Initiator The hardware block updates the DMAs in the packet buffers from host memory.
The packet buffers are DMAed after the BD has been moved to device local
memory.
Broadcom® Corporation reserves the right to make changes without further notice to any products
or data herein to improve reliability, function, or design.
Information furnished by Broadcom Corporation is believed to be accurate and reliable. However,
Broadcom Corporation does not assume any liability arising out of the application or use of this
information, nor the application or use of any product or circuit described herein, neither does it
convey any license under its patent rights nor the rights of others.