Configuration Space
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 173
Indirect Register Access
Two PCI configuration space register pairs give host software access to the Ethernet controller register block.
The Register_Base_Address register creates a position in the MAC register block. Valid positions range from
0x0000–0x8000 and 0x30000–0x38800 ranges. Access to the register block from 0x8000–0x30000, should be
avoided and is not necessary. The Flat and Standard modes do map a memory window into the 0x8000–0xFFFF
ranges; however, the Memory Indirection register pair provides a more efficient mechanism to access the
Ethernet controller memory block. The Register_Data register allows host software to read/write, from the
indirection position. The Register_Base_Address register can be perceived as creating a cursor/pointer into the
register block. The Register_Data register allows host software to read/write to the location, specified by the
Register_Base_Address. This register pair accesses the Ethernet controller register block (see
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.