Programmer’s Guide BCM5722
10/15/07
Broadcom Corporation
Document 5722-PG101-R Configuration Space Page 132
PSEUDOCODE
• Variable BCM57XXMemAddr represents a local memory address.
• Variable BCM57XXMemBase represents a 32K aligned local memory address.
• Variable BCM57XXMemOffset represents a byte offset.
• PCI_CFG_WRITE (address, value) is a routine to write the device's PCI configuration space register.
• PCI_CFG_READ (address) is a routine to return the contents of the device's PCI configuration space register.
Memory Window Read in Standard Mode
BCM57XXMemBase = BCM57XXMemAddr & 0xFFFF0000
BCM57XXMemOffset = BCM57XXMemAddr & 0x0000FFFF
PCI_CFG_WRITE(Memory_Window_Base_Address, BCM57XXXMemBase)
Value = *(PCI_BAR + 0x8000 + BCM57XXMemOffset)
Memory Window Write in Standard Mode
BCM57XXMemBase = BCM57XXMemAddr & 0xFFFF0000
BCM57XXMemOffset = BCM57XXMemAddr & 0x0000FFFF
PCI_CFG_WRITE(Memory_Window_Base_Address, BCM57XXXMemBase)
*(PCI_BAR + 0x8000 + BCM57XXMemOffset) = Value
Register Read in Standard Mode
Value = *(PCI_BAR + 0x400 + BCM57XX_REGISTER_OFFSET)
Register Write in Standard Mode
*(PCI_BAR + 0x400 + BCM57XX_REGISTER_OFFSET) = Value
Memory Read in Flat Mode
1
Value = *(PCI_BAR + 0x01000000 + BCM57XXMemAddr)
Memory Write in Flat Mode
1
*(PCI_BAR + 0x01000000 + BCM57XXMemAddr) = Value
Register Read in Flat Mode
Value = *(PCI_BAR + 0x400 + BCM57XX_REGISTER_OFFSET)
Register Write in Flat Mode
*(PCI_BAR + 0x400 + BCM57XX_REGISTER_OFFSET) = Value
Memory Read Using Indirect Mode
PCI_CFG_WRITE(Memory_Window_Base_Address, BCM57XXXMemAddr)
Value = PCI_CFG_READ(Memory_Window_Data)
Memory Write Using Indirect Mode
PCI_CFG_WRITE(Memory_Window_Base_Address, BCM57XXXMemAddr)
PCI_CFG_WRITE(Memory_Window_Data, Value)
1. The scratchpad and ROM regions must be accessed using indirect register pairs.